欢迎来到杂志之家!发表咨询:400-888-7501 订阅咨询:400-888-7502 股权代码 102064

软件测试论文

摘要:软件测试一般由专门的测试小组进行软件的单元测试、集成测试、系统测试及验收测试等。所有这些相关测试都将根据预先设定的测试流程及测试用例按步进行,不仅如此,测试用例一般都将给出预期测试结果,作为最终测试通过与否的判定标准。因此,软件测试曾被形容为“基于大量测试用例的程序行为的动态验证”。
软件测试论文

软件测试论文:应用度量式测试提高软件测试效率

摘要:文章介绍了软件测试领域的发展现状,并将度量式测试应用在实际的医疗曝光系统中,验证了度量式测试对于发现系统隐患、提供系统性及稳定性等的重要作用,并强调了在系统测试过程中需将检查式测试和度量式测试合理结合,提高系统测试效率。

关键词:检查式测试;度量式测试;软件性能;软件性;测试效率

1简介

随着全球信息化趋势的不断加强,各国的软件产业都在以前所未有的矫健步伐不断向前迈进。而信息化为全球经济发展打开了一个崭新的市场,各软件公司越来越重视软件产品的最终交付质量以赢得更多的市场占有率。在软件开发的生命周期中,测试作为保障软件过程和产品质量的重要环节必不可少。

而今,虽然世界经济与信息已经全球化,但中国与欧美等发达国家的测试水平仍存在一定的差距。在国内的测试活动中,软件测试一般由专门的测试小组进行软件的单元测试、集成测试、系统测试及验收测试等。所有这些相关测试都将根据预先设定的测试流程及测试用例按步进行,不仅如此,测试用例一般都将给出预期测试结果,作为最终测试通过与否的判定标准。因此,软件测试曾被形容为“基于大量测试用例的程序行为的动态验证”。

2检查式测试与度量式测试

目前,在特定的软件项目中,测试人员将根据不同的系统特征及测试目标,选择不同的系统测试方法,如黑盒测试、白盒测试、单元测试、集成测试、功能测试、性能测试、回归测试、压力测试、负载测试、性测试、安全性测试及兼容性测试等。对于上述的多种测试方法,本文将其总体的划分为两类测试情况:检查式测试和度量式测试。

2.1检查式测试

通常一个测试用例包含如下几个基本要素:需求追踪、测试目的、测试准备、测试数据等。在这种类型的测试中,测试用例一般直奔一个明确狭隘的目的――验证系统的某一项功能是否正确实现。因为这种测试用例对正确的结果有设定或者有一定的预知,因此测试是明确的,而且可控性也很高。测试结果的输出表现为通过或者不通过。在此把此类的测试称为检查式测试,它属于一种先验性的测试,通常所做的单元测试、集成测试、功能测试等都属于此类测试。

2.2度量式测试

度量式测试没有太多的先验性,结果一般基于某种量化的数字而产生。一般是为了针对软件某一特定功能周边的多项指标进行的量化度量。这种形式的测试往往出现在系统级测试和应用阶段的数据收集。度量式测试往往不会直接给出通过或者不通过的结果,而是需要通过进一步的分析和决策。然而这类“模糊”的量化数据比检查式测试更具有稳定性,对把握软件的总体质量或某一特定功能的具体细节更具有价值。这类测试多发生在系统测试、性能测试、性测试等测试中。

2.3优缺点比较

在我们日常的测试活动中,检查式测试通常是测试活动的主要构成,其优点显而易见:直接、高效、易管理;缺点则是:随机性强、单薄、易陷入惯性思维等。而度量式测试是以定量的数据作为基础,经过分析,测评式的检验软件质量。其优点是:稳定、、测试方式丰富灵活等;缺点是:耗费资源、测试设计复杂、对软件质量提高具有间接性等。参见表1:

表1检查式测试与度量式测试优缺点比较

测试类别 优点 缺点

检查式测试 直接、高效、易管理 随机性强、单薄、易陷入惯性思维

度量式测试 稳定、、测试方式丰富灵活 耗费资源、测试设计复杂、对软件质量提高具有间接性

3重视度量式测试

在长期的测试活动中,我们发现,虽然检查式测试可以发现大部分的系统缺陷,但是在软件某一部分或者其整体已相对稳定和完备的阶段,我们需要更多的针对实际情况采取度量式测试以发现系统更多的潜藏隐患,提高系统的性和稳定性。

虽然“尽可能多的测试”一直为业内所认同,然而同其他的软件相关活动一样,进度和成本控制往往是软件测试中最直观的压力。检查式的测试作为测试的主体方式,往往会受到测试人员的青睐,其测试力度也不言而喻;度量式测试则只是在阶段被简单的运行几次,甚至只是用来验证一下之前的检查式测试结果而已,但用户长期的实际使用会让很多潜藏的问题冒出来,也会使一些小问题变成严重问题。因此越是重视软件质量,越是应该花足够的时间做一些度量性测试。在测试时,当碰到进度急任务重的情况下,我们应该尽早地进行度量式测试,重视度量式测试的重要性。

4度量式测试的主要应用场景

下面列举两种情况,概述度量式测试有别于检查式测试的几个主要应用:

4.1 度量式测试可以发现潜藏隐患,而检查一般只能找出显现的问题

检查式测试有着明确的标准,正常或出错显而易见,而且一项功能在一个版本一般只测一次。度量式测试不会简单的一次性做出正常或则出错的结论,而是客观的持续记录软件相关部分的状况,比如内存使用情况、数据库的操作、网络流量、关键操作的时序等。比如软件的“死机”问题是一个必然存在的事件,大部分情况下都是严重影响软件使用的问题,甚至造成无可挽回的损失。有一种数据专门采集的是各种死机的情况;包括死锁、非正常操作、软件外部影响、底层操作系统出错等,根据死机原因分析提取需要关注的关键数据,确定隐患的所在,作出系统改进的办法。这一类的性或者失效性分析在其他工业测试中运用较多,而软件中较少。

4.2 度量式测试能够获取软件的使用细节,用以改进设计模型并专注于测试的重点

有一类度量式测试并不是针对于找出一般性的问题,而是专门用于了解软件在正常使用过程中的具体应用状况,用于对系统下一版本的改进。这种度量式测试多出现在β测试阶段,在找出问题的同时也会根据实际的应用重新调整开发设计。比如互联网的上的应用软件,多数都是互动操作,通过度量式测试用户登陆后对软件的操作方式、习惯、各模块实际运行频度差异等,可以对系统之前的设计模型加以改进,甚至发现新的需求。

此外,由于度量式测试的前期,数据的采集一般不需要太多主观灵活的判断和分析,因此更利于自动化的介入,这样可以充分的调集正常工作时间和人力外的其他资源(如设备,网络等),使资源利用较大化。所以在一定的基础上,及早的在项目过程中引入合适的度量式测试,可以使得项目的测试效率更高。

5度量式测试在医疗曝光系统中的应用

在日常的测试活动中,我们经常会接触度量式的测试类型,特别是性能测试中;同时在自动化测试中也会接触到此类相关的数据采集和分析的实例。下面我们将简单介绍在医疗曝光系统性测试中应用度量式测试为了解系统性能、提高系统安全性和发现系统隐藏缺陷所带来的巨大价值。

医疗曝光系统是病人在进行医疗曝光时,医院放射科所使用的数字拍片系统,其性测试需要对系统在实际使用中最常用和关键的流程进行性评估,发现并解决这一过程中出现的错误以及可能出现的隐患。下面是它一次完整操作的基本步骤:

5.1完成准备工作

从病人信息系统中提取指定病人记录:

在本地目录中找到该病人;

在曝光系统上进行曝光;

当预览图像出现时,在图像查看窗口接受并打开图像;

返回主菜单。

我们希望系统对这一组核心操作的性达到连续3000次正常处理,这里包括系统能完成3000次以上连续的处理,保障每一次的结果正常,每一次的各分步结果正常,同时也能达到一定的处理性能。这样我们要对每一次的结果和过程进行记录,它既有利于了解系统的运行状况,也能在出错的时候提供更具体的重现环境。

5.2记录系统每一次运行的基本数据

包括每一次运行的具体时间及其各部分运行所用时间:

运行时刻;

病人编号;

本地查找病人记录所用时间;

从曝光到图像预览所用时间;

从曝光到完成所用时间;

整个流程所用时间。

以下是系统运行时产生的一组基本纪录(单位:秒):

8/11/2009 4:37:26 PM 53 3.953 12.031 22.375 52.047

8/11/2009 4:38:18 PM 54 4.106 12.032 25.844 52.031

8/11/2009 4:39:10 PM 55 4.001 11.985 22.328 52.032

8/11/2009 4:40:02 PM 56 3.985 12.125 22.407 52.031

……

8/12/2009 8:08:24 AM 997 0.937 13.891 21.828 62.766

8/12/2009 8:09:27 AM 998 0.906 13.891 21.688 62.718

8/12/2009 8:10:38 AM 999 1.266 13.891 29.469 70.735

8/12/2009 8:11:41 AM 1000 1.109 13.828 21.891 62.625

从记录中我们可以比较清楚地了解当前的运行次数,了解一次完整的基本操作的所用的时间。可以看到随着时间的增长,系统运行一次完整流程的时间会增大,这表明其中可能出现了内存泄漏等问题。

5.3对系统部分进程的内存使用情况进行监控

图1显示了CC Application Coordinator 进程的内存泄漏情况,当然内存泄漏具体起因需要更多的分析。

5.4得出测试结论

下面是在这次性测试中发现的问题:

5.4.1ID000542350 在系统曝光状态为已准备就绪时,有时曝光可能不发生这是平时测试中一般不会遇到的问题,在大量的循环中我们可以通过数据了解曝光失效的存在以及它的频度,从而给开发一个直观的认识并最终消除,的验证也是通过多次的性测试验证(3000多次未发现)。

5.4.2ID000542351 在系统曝光2000次后,系统性能下降这也是一个典型的性测试中碰到的问题,性能下降的问题往往是一个缓慢的趋势,通过对每次循环的时间记录,我们可以直观地了解到出现性能下降的负荷和它的缓急等。

从上述的应用可以了解到,度量式测试在测试系统性能、提高系统安全性和发现系统隐藏缺陷上具有很大的使用价值,特别是在系统的性能测试及自动化测试中,通过对数据的搜集分析,可以深入了解系统性能瓶颈,进而构建提高系统性能的解决方案。

6结论与展望

总的来说,检查式测试和度量式测试都有着各自的优缺点和差异性的测试偏向点,在实际的测试过程中,针对项目中不同阶段、不同类型的测试需要,测试人员可以选择相应的测试方法进行测试。在测试过程中,将检查式测试与度量式测试相结合,协同发现系统潜在的各类缺陷及隐患,必将大大提高软件测试的高效性。

在实际的度量式测试过程中,有效的数据采集对测试过程和结果的分析都能提供相当大的帮助。特别是用采集的各种现场数据来代替测试人员的人工记录和判断,对于提高自动化测试的有效性也必不可少。在测试活动中如何设计合理高效的收集数据种类和方式,如何将检查式测试与度量式测试恰当结合起来,以提高测试效率将是未来研究的重点。

软件测试论文:软件测试自动化在黑盒测试中的应用

摘 要:介绍黑盒测试的方法,对手工测试的不足以及自动化测试的特点进行研究。以XCRW18型货车标签编程器软件(厂矿企业版)写标签数据测试为例,进行了测试问题的分析、测试用例的设计,并用VBScript编写自动化脚本,在QTP平台下实现了黑盒测试中的软件测试自动化,不但节省了人力,而且提高了测试的效率和可信度。

关键词:黑盒测试;自动化测试;测试用例;XCRW18型货车标签编程器软件

黑盒测试把被测对象看作一个不能打开的黑盒子,在不考虑其内部结构和内部特性的情况下,测试其是否能适当地接收输入数据并产生正确地输出信息,并且保持外部信息的完整性[1]。黑盒测试在软件测试中占有重要的地位,但常规的手工黑盒测试,在软件测试尤其是大中型软件测试中不但测试效率和覆盖率低下,而且测试的稳定性和性差。本文在XCRW18型货车标签编程器软件(厂矿企业版)黑盒测试中有效地运用了自动化测试技术,较好解决了上述问题。

1 黑盒测试常用技术与方法

黑盒测试方法主要应用于功能和性能方面的测试,其常用的技术和方法有:

(1) 边界值分析方法:边界值分析方法的基本思想是使用最小值(min)、略高于最小值(min+)、正常值(nom)、略低于较大值(max-)、较大值(max)处取输入变量值。如果要测试被测对象的健壮性除了变量的5个边界值外,还要通过采用一个超过较大值(max+)和一个略小于最小值(min-)的取值,看看超过极值时系统会有什么反应。如果被测对象是多个独立变量的函数,这些变量受物理量的限制,则很适合边界值分析。

(2) 等价类划分法:把所有可能输入数据划分成若干个等价类,然后每类中抽取一组既有代表性,又可能发现程序中错误的数据作为测试数据,基于此测试的方法就称为等价类划分法。

(3) 全对偶设计方法:全对偶是在全组合结果基础上进行优化,把其中有效的用例筛选出来,以达到采用最小的测试用例集,覆盖较大测试域的测试效果,其核心思想就是测试用例的任意2个变量至少在测试结果里出现一次[2]。

2 软件测试自动化技术

2.1 测试自动化原理和方法

软件测试自动化是相对手工测试而存在的,主要是通过软件测试工具、脚本等来实现,具有良好的可操作性、可重复性和高效性等特点。下面简单介绍测试自动化的主要原理和方法[1]:

(1) 捕获和回放:捕获和回放是一种黑盒测试的自动化方法。捕获和回放一般步骤如下:首先将用户每一步操作都记录下来;其次将所有记录转换为一种脚本语言描述的过程,以模拟用户的操作;然后回放时将脚本语言所描述的过程转换为屏幕上的操作;将被测系统的输出记录下来与预先给定的标准结果比较。该方法比较适合在迭代开发过程中进行回归测试,可以大大减少黑盒测试的工作量。

(2) 脚本技术:脚本是一组测试工具执行的指令集合,可以直接用脚本语言编写也可以通过录制测试的操作产生,然后对产生的脚本进行加强。后者可以减少脚本编程的工作量。脚本技术不仅可以在功能测试中模拟用户的操作,然后进行比较,而且可以在性能、负载测试上虚拟用户同时进行相同或者不同的操作,给系统或服务器足够的数据、操作,以检验系统或服务器的响应速度、数据吞吐能力等。

2.2 测试自动化特点

相比手工测试,测试自动化有以下几个特点[4]:

(1) 可以对程序的新版本自动执行回归测试。这是测试自动化的最主要的任务。在需要频繁修改大量程序的环境中,自动化进行回归测试的开销是最小的。

(2) 可以执行更多更频繁的测试。自动化测试的一个特点是可以在较短的时间内进行更多的测试。

(3) 可以执行一些手工测试困难或不可能进行的测试。如对于200个用户的联机系统,用手工进行并发操作的测试几乎是不可能的,但自动测试工具可以模拟来自200个用户的输入。客户端用户通过定义可以自动回放的测试,随时都可以运行用户脚本,即使是不了解整个商业应用复杂内容的技术人员也可以胜任。

(4) 可以更好地利用资源。将繁琐的任务自动化,如重复输入相同的测试输入,可以提高性和测试人员的积极性,将测试人员解脱出来转而投入更多精力设计更好的测试用例。并且自动化测试可以不停地进行测试,可以利用整夜或周末空闲的机器执行自动测试,有效地利用了计算机的资源。

(5) 测试具有一致性和可重复性。测试自动化可以重复进行多次相同的测试,因此可以获得测试的一致性,这在手工测试中是很难保障的。有些测试可能在不同的硬件配置下执行,使用不同的操作系统或不同的数据库,此时要求多平台产品的跨平台质量的一致性,这在手工测试的情况下很难做到。

(6) 测试的重用性。自动化测试的测试用例经过一次执行之后,在以后的测试中可以不断重用而无需人工参与,这一点在手工测试中是无法做到的。

(7) 更快地将软件推向市场。一旦一系列的测试已经被自动化,可以比手工测试更快地重复执行,大大缩短了测试时间。

(8) 增加软件信任度。一旦得知软件通过强有力的自动测试后,软件时对其的信任度也会提高。

3 测试自动化应用实例

3.1 写标签数据的测试

本例(见图1)主要测试写标签数据中“属性”、“车种”、“车型”、“车号”、“换长”、“制造厂”、“制造时间”设置为不同值时是否能正常写入标签信息。这几个变量值都有范围的限制。

软件测试论文:基于帕累托法则的软件测试策略优化

摘 要:通过分析软件测试故障的分布特性,研究故障发现、分布与测试用例设计、测试人员等的相关性,提出一种基于帕累托法则的测试策略优化改进方法,在测试设计方法的应用、人员的任务分配、测试重点等方面进行有效的优化,并介绍该方法的具体应用步骤。,通过几个项目的应用结果表明:该方法简单、实用,可以有效地提高测试效率和暴露软件缺陷的概率。

关键词:软件测试;故障数据分析;帕累托;策略优化

1 引 言

软件测试策略是在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。依据软件本身性质、规模和应用场合等的不同,选择不同测试方案,以最少的软硬件、人力资源投入得到的测试效果,这是测试策略的目标所在[1]。按照当前的技术发展趋势,软件规模和复杂程度急剧地提高,在软件测试工作需要更多时间的同时,项目周期却比以前大大缩短,如何在有限的时间内,利用有限的资源完成软件测试工作,尽较大的可能暴露软件中隐含的缺陷,实施高效的软件测试,是软件测试工作中亟待解决的问题。

针对这一问题,对软件测试故障特性进行分析,根据被测软件中故障的分布特性,对测试方法、人员等资源进行优化配置,进行测试过程进行改进是一种有效的途径。Myers 曾在其经典著作《The Art of Software Testing》中说到“研究软件错误对改进将来的设计和测试过程有无法估量的意义”[2],但对软件故障分析的内容、方法研究,以及如何利用故障分析结果改进测试过程是目前工程实践中亟待解决的问题。

本文分析了软件故障与帕累托法则的相关性,并基于帕累托法则,统计分析软件故障的分布特性,研究故障发现与测试用例设计、测试人员等的相关性,结合测试项目实践,提出基于帕累托(Pareto)法则的测试策略优化方法,并给出具体应用的步骤,介绍实际应用效果。

2 软件故障分布与帕累托法则的相关性

帕累托法则是由19世纪末和20世纪初意大利经济学家及社会学家帕累托研究国民收入的差异时提出,又称2/8定则。帕累托分布的分布函数为P{X>t}=(-a),其中t>1,a>0,帕累托分布在自然界的广泛存在是由以下定理保障的:

定理1:独立同分布的随机量之和服从stable分布(正态分布只是stable分布的一个特例,中心极限定理也是本定理的特例)。

定理2:当x无穷时,stable分布近似于Pareto分布(Pareto分布是大样本情况下stable分布的近似)。

Mller早在1984年就报道这样一个分布规律:45%的错误集中在10%代码,而的50%代码包含只有10%的错误,IBM等公司的统计数据也表明:80%的缺陷是在20%的模块中发现的,由此可见,软件故障是有类聚性的[3],遵循帕累托分布规律,即20%的模块包含了80%的错误。此外,开发人员的思维定势也会造成同样的错误在其编写的代码中一再重复出现,而测试工作由于人员和设计方法的不同,也使其发现的故障呈现一定的分布规律。由此可见软件故障在模块、人员、测试设计方法等方面,遵循帕累托分布规律。

3 基于帕累托法则的故障分布特性分析及测试优化策略

3.1 针对故障类型与模块分布特性的测试策略优化

(1) 违反编码规则和度量指标的问题分布。

根据对多个测试项目的测试结果分析表明:静态分析发现问题较多的模块,在动态测试中也会出现较多的缺陷,静态分析结果与动态问题数有一定的关联性;缺陷的密度分布与子系统的复杂程度有关,如一些圈复杂度较高的代码,其出现问题的可能性较高。因此,静态分析结果可以用来指导动态测试的测试用例设计,进行的测试用例时,针对程序最容易出现的故障的地方有所侧重和重点关注,可以提高测试用例发现故障的概率,进一步提高测试效能。

在具体应用上,可以利用测试工具进行静态分析和人工评估分析来实现分布特性分析。静态分析包括代码检查、控制流分析、数据流分析、表达式分析和静态度量指标分析等项目。检查的规则和度量指标值根据一些统计数据(即经验数据)来确定,也可以依据一些国际上常用的标准,如欧洲防务标准和汽车工业标准等。测试工具分析后的数据再进行人工分析定位、统计、评估,形成被测试软件的编码规则和度量指标的问题分布表,并用来指导动态测试用例的设计。

(2) 故障在各个模块中的分布。

IBM等公司的统计数据表明:80%的缺陷是在20%的模块中发现的,而这20%易出错的模块,基本上对开发人员来说是新技术或者难度高、技术含量高的部分。在软件测试中应把握这一规律,对软件开发人员以前未曾开发过或未接触过的、对软件运行起到关键作用的模块和代码尤其注意,对其进行充分的测试以发现更多的错误[4]。

因此,在用例执行过程中对发现的故障,进行初步的统计分类,计算其在不同软件功能模块中的分布(即软件故障的区域分布),根据软件缺陷的类聚性,“发现的软件缺陷越多,表明未发现软件缺陷越多” [3],对发现较多缺陷的模块增加针对性测试用例,尽可能暴露更多的软件缺陷,可以有效提高测试用例的故障发现率。

(3) 故障类型的分布。

一个错误往往是由类似的同一原因引起的更多错误的征兆,这些错误往往会在同一个人或同一团体已经完成的工作中被找到。通过分析故障类型的分布,得出出现较多的典型错误,对分析的结果可以马上应用于开发一个更有效的检查单和测试用例,选择更重要的回归测试,发现更多的同一类型错误或由同一原因引起的错误。

3.2 针对故障与人员相关性的测试策略优化

(1) 不同开发人员编写的代码中故障数据分布。

每个人都有其固定的思维特点和偏好,程序员往往会犯相同的错误,同一个开发人员在其开发的程序中常会反复犯其容易犯的错误。通过对发现的故障数据进行分析,统计故障数和故障类型在不同开发人员开发的程序中的分布情况,对发现较多故障的模块(代码),确定其开发者,然后对其开发的其他模块(代码)加强测试,在测试用例的设计上,也要侧重于其所引入的故障类型,使测试用例能达到较高的缺陷发现率。

(2) 不同研制单位的故障数据分布。

软件的开发人员及研制单位都常会犯一些相同的错误,导致一些典型的软件缺陷。通过对发现的故障数据分析,可以设法找到一个软件研制单位所常犯的典型错误,这些典型错误通常是由于欠缺规范(或标准)、配置管理、设计训练或单元测试,或其他原因而引起的。通过统计分析不同单位开发软件的测试故障数据发现,一个单位开发软件出现的较多的某种错误类型,在另外一个单位开发的软件中却很少或几乎不会出现,而另一种错误类型的出现情况则相反。

(3) 不同测试人员发现故障的特点分析。

测试人员与开发人员同样具有其固定的思维特点和偏好,这些特点和偏好往往有助于其去发现某些特定类型的软件缺陷,却不利于其发现另外一些类型的软件缺陷,这个特性在使用猜错法进行测试和进行代码走查时尤其明显。对不同测试人员发现故障类型的分类和特点分析,其目的就是对测试组内不同的测试工程师的优缺点进行分析,在测试工作中用其所长,避其所短,提高测试发现缺陷的效率,也为对测试人员进行合理的调配,组建高效率测试组提供有益的借鉴。

不同测试人员发现故障的分类及其特点分析主要统计所有发现缺陷,进行故障分类;并将这些分类与测试工程师进行关联分析,查找每个测试工程师在发现缺陷方面的特点;然后利用这些特点,在组建测试组和进行测试组内工作分工时将这些因素和特点考虑进去,则可以有效地提高测试组发现软件缺陷的效率。

3.3 针对各研发阶段的故障分布的测试策略优化

“什么时候出的错?是最难回答的一个问题,但也是最有价值的问题”[2],通过查阅设计文件和设计的历史资料查找和分析直接导致故障出现的原因根源,其可能是需求中的一个二义性语句、修改先前的错误所造成的或没有考虑非法输入导致的,用故障分析去确定每个故障是什么时候和谁造成的还远远不够,还要确定到底为什么出错[5],如果找出一个错误的问题根源,就能用同样的方法发现更多同类性质的错误。

3.4 针对故障类型与用例设计方法相关性的测试策略优化

故障分析还要回答一个问题“用例是怎样发现错误的?”[5],如果一个测试用例成功地发现了一个故障,就要对这一用例的设计方法和输入的测试数据进行分析“为什么这个测试用例成功?”[5]。对于其他测试用例能否从这得到有益的借鉴,使本次测试、也使将来的测试有所改进。进行故障类型与用例设计方法之间关联分析,才能利用成功的测试经验来改进检查和测试过程,以便在将来的设计中更好地发现这一类型的错误。

4 应用步骤和实践

4.1 步骤

(1) 收集故障数据。

在测试过程中,对每一个用例的实际输出和故障现象进行详细的记录,形成测试问题报告单,然后按故障分析对象和分析内容,分类收集测试故障数据。

(2) 计算整理。

对收集来的数据资料进行整理和加工,并按不同分析类型要求进行分类(如模块分布、类型分布等),计算故障数,故障数占总数的百分比,如表1所示。

(3) 数据分类排序。

根据选择定的分析类型要求(如模块分布)对计算整理后的数据进行从大到小的排序,然后计算故障累计比率,并将计算结果填写在表格最右边一列,

(4) 绘制帕累托图。

用表1所列数据绘制双坐标图,首先以模块代号为横坐标,模块故障数为纵坐标,绘制直方图,从大到小显示不同模块的故障数,然后再以累计故障比例为纵坐标,绘制折线图。

(5) 提出测试侧重点,优化测试策略。

根据帕累托图,查找故障累计达到80%之前的模块代号,在图1中为M1~M6。在补充和选取回归测试用例时,侧重性地针对这几个模块补充和选取测试用例。

同样道理,在补充测试用例时,所使用的设计方法也应是基于帕累托法则分析所得到的20%最有效的设计方法。

图1 帕累托图

4.2 应用实践

(1) 故障在模块中的分布特性分析及测试策略优化。

根据在装备软件第三方测试工作中的尝试,根据帕累托法则对测试进行优化,改进测试重点和测试设计方法,提高了缺陷的发现率和测试用例的效率,取得了比较明显的效果,见表2所示。项目1中提高了11.7%的缺陷数,而项目2则提高了15.6%,其他项目也普遍占10%以上。在测试用例的效率上,项目1和项目2在优化前分别为25和16.9个测试用例发现1个软件故障,而经过优化后增加的测试用例则分别为7.7和14个测试用例发现1个软件故障。

表2 测试策略优化应用效果统计表

项目名

项目基本情况测试策略优化后

总用例数总缺陷数增加用例数新发现缺陷数占总缺陷数比例

项目11 02145 46613.3%

项目226416 28212.5%

(2) 测试人员发现故障的特点分析。

首先,对3个装备软件测试项目的代码检查数据进行统计分类后,剔除测试工具发现的问题,不列入故障数据统计范围。项目1和项目2由A,B,C三位测试工程师参加代码走查,项目3由A,B,C,D四个测试工程师进行代码走查,对每个测试人员代码走查发现问题数转换成其占该类问题的百分比,见表3所示,然后通过比较发现以下规律:

①测试工程A在3个项目中,发现的“指针内存”和“循环结构”类问题基本上占了该类问题总数一半以上,而其他的测试工程师在发现该类问题上,在不同的项目是随机的,没有一定的规律和趋势。

②在“指针内存”问题上C测试工程师在3个项目的代码走查中发现问题数占该类型问题数都较少甚至没有。

其次,根据上述不同测试人员发现故障的特点,在第4个测试项目的分工上,让测试工程师A在第四个项目代码走查中,负责对“指针内存”和“循环结构”类问题进行重点审查,其他测试工程师则不进行侧重性分工,统计结果表明,工程师A发现问题的比例和数量提高明显。

表3 项目代码走查数据分类统计表

问题 /%

项目1项目2项目3项目4

ABCABCABCDABCD

宏定义100.00093.106.9000100.0000100.0

循环结构75.025.0046.22.651.350.00050.075.025.000

指针内存55.644.4050.0050.00000100.0000

,由于测试工程师未参加第1、第2个项目,则在4个项目中在进行比较,又可以发现测试工程师A和D在发现“宏定义”类问题的能力上基本相当,但比测试工程师B和C更有效率,因此,在后续的项目中可以根据这一特点,对测试人员A,B,C,D进行合理的调配,组建高效率测试组,而且随着可分析项目的数量增加,测试人员的特长会分析的越来越,对测试组内人员分工就可以越细化,工作也越高效。

5 结 语

基于帕累托法则的测试策略优化,一方面,在项目测试工作过程中,通过对故障类型和分布特性进行分析,查找故障缺陷模块类聚性和故障类型的类聚性,改进软件测试设计过程和提高测试的效能;另一方面,进行故障与人员相关性分析,查找发现软件设计人员、开发过程等方面的不足,根据其薄弱点提出一个机构或个人在那一方面需要提高或需要加强培训,并提出针对性培训建议,从而促进开发过程的改进。此外,利用测试人员发现故障特点分析结果,对测试人员进行针对性的调配,组建高效率测试组和进行合理的组内分工,可以提高测试故障的发现率,促进测试过程的改进。通过多个项目的实践证明,基于帕累托法则的测试策略优化可以明显提高测试效率。

软件测试论文:高职软件测试课程构建设想

软件测试是软件质量保障的关键步骤。测试贯穿整个软件开发的过程,是对软件需求分析、设计规范和编码的最终复审。软件测试已成为软件产业的新兴门类而迅速发展起来,其专业机构和组织迅速发展、人才需求旺盛、职业的价值日益提升,软件测试人才的培养也应该成为高职IT教育的重要内容。

1 高职软件测试课程构建背景

1.1 软件产业的技术发展和需求

随着软件技术的发展和应用的日益广泛,软件的功能越来越强,系统的规模越来越大,内部结构愈来愈复杂,软件的质量和软件的生产率难以适应发展需求的问题统一起来突出,已成为软件企业规范管理和软件产业快速发展的绊脚石。作为一种有别于实物产品的逻辑产品,软件产品有其特有的复杂性,如功能的多样性、实现方式的多样性、产品要求难以表达、进度能见度低、运行依赖于环境等。作为人脑高度智力化的体现,软件存在缺陷无可避免,而且软件系统规模扩大,其缺陷生成机率也会加大,发现的愈迟,故障造成的各类损失也愈大。

软件质量的提高,既依赖于软件过程工程的一些方法,也依赖于软件测试。我国软件开发长期以来存在“重开发,轻测试”的现象,中小企业往往研发测试混杂,没有专业的测试人员和体系;缺少测试概念和方法,没有测试方面的专业知识;缺少测试流程或不规范。用户验收由于缺乏专业人才而失之甚至流于形式。从行业发展来说,急需建立专业的测试队伍、流程和规范,提高产品研发质量。

随着软件技术的发展,软件测试的技术和内容也有了很大的发展。当前软件测试已不仅仅体现为测试的执行,而且贯穿软件生存周期全过程,内容包含理论与技术、标准与规范、环境与工具及测试管理等多方面。软件测试对于软件质量的保障作用正得到软件行业以及软件用户的重视,软件测试在软件工程中的地位得到空前地提高。近年来,一些大型企业以ISO9000或CMM为导向构建质量体系,在ISO9000中共有19个要素,其中一个就是“检验和试验”;CMU/SEI的CMM中共有18个过程关键域,其中有一个质量保障过程关键域。这其中都体现了软件测试是软件开发中必不可少的环节。

1.2软件测试人才紧缺

根据国外软件业发展的经验,软件测试工程师和软件开发工程师在企业的配置比例一般至少应该达到1∶1 的水平。但我国软件产业在这方面状况堪忧,很多软件企业的测试和开发人员之比为1∶6,甚至更低。随着近几年软件企业对软件测试重要性的不断认识,产生了对软件测试人才的大量需求。业界有关人士称,未来几年,国内软件行业对软件测试工程师的需求将超过20万人。

目前在软件测试人才供需方面存在矛盾。一方面,企业对软件测试人才有大量需求,但苦于招不到合适的人;另一方面国内的高等教育也忽视了这一领域,高校计算机专业专科、本科、硕士课程中普遍未开设专门的软件测试课程,测试仅仅是作为软件工程课中的一个章节被提到,因此行业内的软件测试人才严重短缺。目前企业在软件测试人员组成上还存在结构性矛盾。在企业执行软件测试的技术人员通常由具备本科以上学历的软件技术人员来承担,没有形成合理的金字塔形结构,这一方面加重了企业人力资源的成本,另一方面也加剧了软件测试技术人员的匮乏,而实际上通过恰当的培养渠道,高职毕业生可以成为合格的软件测试执行人员。

基于以上背景,软件测试技术将成为软件专业人才知识结构与技能培养的重要组成,企业对软件测试人员的需求也应当纳入高职教育视野之中。

2 高职软件测试课程目标分析

高职教育以职业能力培养为目标,通常在完成学历教育同时取得相应的国家职业资格证书,国家职业资格证书或行业技能证书也是高职教育内容的一个重要参照物。而针对软件测试人员,目前还没有相应的国家资格标准,也缺乏相应的行业证书,我们参照国家职业资格标准的等级划分原则,将满足相当于国家职业资格四级(中级)水准的人员称为软件测试员,而将满足相当于国家职业资格三级(高级)水准的人员称为高级软件测试员,并将这两者的技能要求根据具体情况纳入到高职教育培养目标之中。

软件测试员应了解软件测试的基本测试概念、测试理论,根据测试用例能够执行测试,具备基本的测试心理素质,能与开发人员进行有效沟通,掌握一门脚本语言。相当于国家职业资格四级(中级)水准。

高级软件测试员是软件测试工作最基本的力量。他们应掌握基本测试概念、测试理论、测试标准和测试技术方法,能独立设计测试用例,有效进行缺陷报告和跟踪,使用常用测试工具,掌握一门脚本语言。能够完成一般软件程序的测试任务。相当于国家职业资格三级(高级)水准。

据当前软件行业相关统计资料分析,具备测试执行能力高级软件测试员和具有更高技能水准的软件测试工程师都是企业的紧缺人员,从企业人力资源管理的合理结构来说,具备测试执行能力的高级软件测试员的人数需求更大,可以成为高职软件测试专业的技能培养目标。教育部的目录中尚无软件测试专业,对于众多的高职院校来说,这是一个空白。因此对于条件成熟的高职院校,可将高级软件测试员纳入到软件专业(测试方向)的培养目标中。也可将软件测试员调整为软件专业的培养目标之一,提高毕业生的专业沟通能力和就业适应面。

3 课程构建原则

3.1 以软件测试工作的逻辑顺序构建课程

目前的软件测试教材大都是近两三年出版的,体例基本上是按照测试理论、测试技术、测试工具、测试实践、测试管理的顺序依次展开。高职的教材如果局限于对相应内容作的筛选、简化,是难以适应高职学生的,也不符合职业技术教育的规律。

“职业教育的教学内容应置于由实践环境构成的,以过程逻辑为中心的行动体系框架之中”,“其内容编排应以典型职业活动顺序为参照系,故具有串行结构的特点。针对工作过程环节的顺序性与时序性传授的课程内容,既符合职业院校学生与生俱有的心理顺序和具象思维的指向,也符合动态变化的职业工作过程的实际需要”。

因此,软件测试课程构建首先要按照典型的测试活动顺序,分解测试职业能力技术要求,按照需求概要设计详细设计的V字型测试模型,由易到难,由表及里,由简单到复杂,由单一到综合,逐步展开课程。按照组成测试技能实践教学内容及相互间的内在联系,使数据库、操作系统、自动化测试工具、测试管理工具、配置管理工具等各部分实践内容有所侧重,互相衔接,彼此关联,具有连续性。

3.2 要高度重视过程性知识与经验的获得

“现代工业心理学研究表明,高新技术工作岗位的工作人员所需要的知识,约一半是介于经验性知识和学科理论知识之间的一种特殊的知识,即“劳动过程知识”。软件测试在规范的软件生产中属于软件过程工程的重要组成,软件测试课程构建必须使学生能在“完整工作过程”中学习。

课程开发难点在于提供一定规模的实际软件产品,发放多个包含bug的软件版本,且每个版本都模拟真实测试过程中的情况进行了定制调整,以保障为学生创造一个与日常测试工作环境类似的场景。学生通过这个项目实训,将本阶段学习过程中涉及的测试技能、测试方法等知识点灵活运用,从而保障将书本中的知识点真正消化掌握,进而达到软件测试综合能力的提升。因此缺陷报告库的规模是项目实训效果的重要保障之一。

注意引入在国际市场占有率高、有代表性的自动测试工具,如Mercury、IBM的有关产品,内容涵盖从安装到使用,并结合实际操作案例进行分析讲解,以此来加深概念与方法理解,达到技术运用举一反三,知识传授与技能培养并重的目的。

有了供实践训练的软件产品和测试工具,仅仅能够找出bug还是不够的。要在软件过程工程中,围绕测试工作的的基本程序,在一个“完整工作过程”中进行工作分析,进而构建测试课程,在项目教学中建立与测试过程的直接关系。但是,对于大多数企业而言,目前测试工作流程远未规范,甚至测试员的职责也不够明确。如何进行测试工作分析呢?从形式来看,测试报告是测试人员的工作成果,因此,测试人员的工作分析可以围绕着“测试报告”来进行,包括“测试报告”的前期工作:测试计划、测试案例、测试过程、信息收集;“测试报告”中的信息管理:通常使用测试管理工具,对测试中的问题进行收集、流转、分析与统计;不同类型的“测试报告”的撰写、“测试报告”的管理、测试评估等。这样的程序,体现了人类实践活动的“完整模式”。

3.3 在“完整工作过程”中培养方法能力与社会能力

实际上,测试技术人员的要求不低于开发人员,但是需要不同于开发人员的知识结构。在具体细节上,可能不必非常深入,但知识面要求更广,涉及开发、管理、行业等多方面。

由于目前国内软件企业专职测试人员基本上只承担系统测试,所以测试课程的重点在系统测试,在单元测试、集成测试方面侧重于掌握基本概念和对测试过程的了解,能在指导下完成单元测试、集成测试。与此同时,要注重从业务需求描述与评审到文档评审的一系列质量管理问题。因此要求课程开发在内容上作出取舍,体现整体优化。要注意引入有关质量与质量体系、测试标准等概念,有利于提高职业素养,甚至也有利于企业澄清一些对于测试岗位的模糊观念。针对软件测试岗位的特定心理素质要求,如与程序员的沟通困惑,加强沟通与职业素质培养。

3.4 按照职业技术能力发展阶段来设计典型工作任务

研究表明,“人的职业能力的发展是按照从门外汉到专家的过程进行的”,而不是传统心理学认为的“从不知道到知道”的过程。因此,按照职业技术能力发展阶段来设计典型工作任务是高职课程开发的重要课题。

高职软件专业的课程在开发上一般涉及单机桌面软件和基于网络的分布式应用系统,从运行环境来说有Windows平台和Linux平台。测试课程也可以相应地划分为两个阶段,分别确定Windows平台下单机桌面软件和Linux平台(或Windows平台)下的典型测试任务。根据教学对象的软件专业知识背景与接受能力,在其他课程中作必要的软件知识铺垫。如在及时阶段,通过C语言的简单开发应用、搭建Windows测试环境、从测试角度叙述Windows开发环境及应用程序编程接口、Windows内部对象及程序运行机制、Windows消息机制、内存泄漏和检测技术等,了解编码规范,理解Windows软件错误产生原因,为有效地设计Windows应用软件的测试用例和测试脚本做准备。在对Java开发、OOP、OOAD技术、UML设计工具和基本表示方法、配置和管理数据库系统等作必要铺垫后开始第二阶段的测试课程。因此,在课程开发时一方面注意知识衔接,内容涵盖,另一方面深度适宜,体现理论分析“必须、适度、够用”的原则。

“职业教育的系统性,首先是要保障专业劳动过程这一大系统的完整,而不是教学所涉及的各学科子系统的完整性,否则,就会混淆和局部的关系,本末倒置”。也只有通过对完整测试工作过程的把握,才能够突破对普通高教课程的精简、筛选,做到理论分析“必须、适度、够用”。

4结语

随着IT技术应用的发展,产品质量控制与质量管理正逐渐成为企业生存与发展的焦点。从软件、硬件到系统集成,几乎每个大中型IT企业的产品在前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业人才,即测试技术人员来完成,在这里高职软件测试课程建设通过引进工作过程导向的课程开发方法可以发挥重要作用。

软件测试论文:软件测试教学的点滴体会

摘要:本文从软件测试的教学实践出发,分析了测试工作的特点和对测试人员培养的要求,提出了一些测试教学中应着力培养的方向。

关键词:软件测试;教学体会;团队精神

软件生产过程中软件质量问题越来越多,软件测试已经和软件的创意与开发一样被提高到影响软件生存的地位。随着社会对该方向人才的需求越来越大,我们也在软件系开设了软件测试专业,同时积累了初步的教学实践经验。下面就几个方面谈点心得。

1教育同学不把软件测试作为逃避困难的避风港

软件专业的部分同学在学习了编程的课程以后,往往有畏难情绪,认为软件开发工作对人的脑力和体力的要求高,而且技术变化快,需要不停地学习更新知识,同时工作中还常加班,于是就产生了逃避心理,希望在分专业的时候选测试。他们认为测试是挑别人产品的问题,总比自己创造容易。有很多同学带着规避困难的情绪来到软件测试专业,这是一种不正确的心态。测试工作往往是入门容易,深入难。

1.1测试工作需要对行业有广泛的知识面

软件测试工作看起来起点低,好象不需要深入的专业知识就可以开始做了。测试人员往往刚入门的时候是参加一些具体的项目,从项目中积累测试经验。但是如果没有良好的对计算机软件和硬件的知识基础,经验的积累容易限于表面,而不深入。

比如测试中比较热的一个方向是性能测试,该方向对软件的响应时间,资源占有进行测试。性能测试往往使用测试工具。测试工具对软件系统运行中的测试结果进行数据采集。而测试人员需要对结果进行分析,刚开始的时候面对各种数据可能不知道如何分析,经过经验的积累,可以从数据中找到系统的瓶颈,提出改进系统的意见。如果没有对系统的了解,对专业数据的分析能力,是无法胜任工作的。

测试中还需要人员有很强的自学能力。因为许多时候我们使用自动化测试工具辅助测试人员完成可重复的测试任务,往往它们都自带一些脚本语言,测试人员要通过自学而掌握,所以也需要编程和调试的技巧。目前一些公司还开始重视开发自己软件产品的测试工具,这样要求从业人员担当开发和测试的两重角色,是非常有挑战的工作。

软件测试员在做具体项目测试的时候,还需要对该项目的行业背景有所了解。一个专业测试师可能会接触比软件开发人员多得多的项目。他在做测试的初期需要对被测试项目做专业了解,可能就会接触到各行各业的软件。比如做金融行业软件有什么特殊的要求,金融行业对信息的操作和信息安全方面要求怎样,信息安全的技术有哪些等等。

我们的软件测试方向教学中,也开始聘请工业界的行业专家为同学们讲行业软件开发的专题讲座,以让大家有更多机会了解行业背景。

从教学中大家都体会到该方向对专业知识领域的要求是相当广的,片面理解测试是一个比较低档次的软件工作不合适。

1.2测试人员和开发人员做的是一个工作的两个方面

在软件产品开发的工作中,好的测试人员和开发人员是在干一个工作的两个方面。测试人员在清楚软件产品的客户需求的情况下,凭借自己敏锐的感觉和对软件系统的深入了解,是在有一定批评和指导性地帮助设计和开发人员完成软件产品生产活动。我们讲授课程的时候强调这个观点,测试人员不是团队的二等公民,而是客户的眼睛,是产品的鹰眼。

2测试员更需要培养团队精神

2.1尊重个性思维特点,发挥团队优势

我们知道测试中有黑盒子和白盒子测试,黑盒子测试是测试人员在只知道软件功能说明,不知道软件内部的实现具体细节的基础上开发测试用例,进行测试的过程;而

白盒子测试,是测试人员对软件内部代码在明白其实现原理的情况下进行的深入代码内部的测试。这两种测试需要测试人员站在不同的角度看待被测试对象。测试团队中,测试人员的思维方式各不相同,配合好,可以很容易发现软件产品各个方面的问题。比如黑盒子测试,适合让一些有使用该类软件经验的人担当,他们在该类软件中的使用经验将对测试带来很好的旁观者的意见,而白盒子测试适合参与编写软件的人,或者对系统代码有一定掌握的人做。两种方法产生的效果不同,前者人员不能陷入别人的思维定式,后者人员却要非常注重细节。在课堂教学和实践项目中,我们发现不同的同学有不同的思维特点,测试人员的思维特征决定了他能够怎样发现缺陷和发现怎样的缺陷。好的测试管理,应该尽量发现每个人的长处,把他们放在合适的岗位上。

教学实验中的测试项目,同学们是团队完成的,大家感觉测试工作真是需要协作的工作,一个项目的测试结果,往往是整个团队所有人的努力。有一次课堂讨论如何测试一个下棋软件,喜爱软件开发的同学想到最多的是如何测试它的功能点,界面是否正确;有的女同学对外观和美感敏感,提出了改进意见,包括改进界面的舒服度,颜色的搭配等;有的同学平时学棋谱,利用自己的棋艺特长和软件比赛,发现了软件算法的秘密;老师还介绍了这类智能下棋软件的常用算法。大家感觉软件创造非常有魅力。

我们感觉课堂是一个集体,同学的参与非常重要,而老师主要起着管理和协调的作用。老师在和大家的讨论中发现了很多思想,和学生一起交流学习。这点在测试课堂上特别容易表现出来,因为我们在用评判的思维考察软件产品,而不是单纯的学习了。

2.2问题的解决是团队精神的体现

不同人的思维都不一样,这样可能一个项目测试的人越多,测试效果就越好。但是人一多,就产生矛盾和意见。学会尊重他人思想和意见是非常重要的,而管理协调人员的目标是需要让团队意识到这点,找到好途径完成项目。

测试团队特别需要学习协调各个方面的关系。测试人员和开发人员发生矛盾是最常见的,测试团队内部也可能会因为一个问题的理解不同而产生分歧。我们在团队中需要尊重每个你的合作伙伴,而不是一味强调自己意见的正确而强制他人接受自己。比如定级一个软件缺陷的级别,可能不同的人就有不同的看法,有人觉得很严重,有人觉得没那么严重,如何能互相体谅的协调好工作,最终拿出合理解决方案是大家需要思考的。例如在讨论一个任务调度的软件测试时,有的同学提出界面的结果数据在颜色上可以改得更漂亮,更丰富,更直观些,这样看起来容易让人明白。而该项目的开发人员觉得自己使用的一致的颜色很好,界面太花俏不符合设计思想,而且修改起来技术上又费点工作,不愿意,有的时候为这样的小问题,大家都会不愉快,处理不好,会很大的影响工作进度。这个时候项目组领导需要权衡利弊,让小组成员最终达到统一的决定。

一个团队需要一种协调合作精神,问题的解决往往是团队精神的体现。

3计划是测试成功的保障

测试工作要做的好,学会条理化自己的工作非常重要。测试管理那几节课,我们专门讲了如何做一个合格的测试经理人。测试管理是软件工程的一个部分,管理的目标是管理你的测试团队,让他较大效率的工作。而做这样的工作过程中,你如何确定你的被测试项目,该项目有哪些特点,你还需要深入了解哪些方面,自己目前的资源有哪些,在确定了测试目标后,怎样确定测试计划,同时怎样实施你的计划,在计划落实的过程中,你如何监督计划的完成。同学们非常喜欢这样的内容。

但是测试经理的工作又怎样能够做到井井有条,忙而不乱呢?可能需要从大学的学习中养成良好的计划和完成计划的习惯。许多同学发现良好的工作学习习惯特别有助于成功,比如把平时看到的想到的记录下来,把想要做的工作记录下来,给自己定个计划,看自己完成的情况怎样,在这个计划实施过程中,有哪些地方没做到,是否没有毅力,还是说被其他什么事情占用了时间。应该怎样做计划调整,或者对自我行为做调整。

4培养耐心做测试

测试工作看起来乏味,因为毕竟没有开发工作那么有挑战和创造性。但是测试工作需要耐心和恒心,在这样的工作中,你能够培养自己的耐力。测试工作需要你付出自己的热情和耐力,如果你为了刺激和新鲜,任何工作都有失去新鲜的时候。只有培养自己甘于寂寞,耐心塌实的心态,方能把路走的长,走的宽。正如前面说的,测试和开发是一个工作的两个方面,它们最终需要的都是个体从业人员的成熟和毅力。

5总结

软件测试在软件行业受重视的程度刚刚开始,该方向的教学活动也刚成为一个新亮点,如何能够健康地引导学生们走入这个方向,是值得大家共同探讨的问题。笔者感觉测试教学不光要教会同学们一些专业知识,还要通过教学让大家体会测试工作的行业精神,以及它对个体的行为和思想上的要求。

软件测试论文:“软件测试”教学探索与实践

摘要:本文从教学目的、教学方法、教学内容和实践训练等方面对软件测试课程教学进行了探讨,并简要介绍了我校软件测试课程的教学实践过程。

关键词:软件测试;案例教学;实践教学

1软件测试课程教学现状

软件测试作为控制软件产品质量的重要手段,目前在国内也开始热起来。国外软件厂商早就极为重视软件测试,目前欧美等软件产业发达国家的软件企业里,软件测试和开发人员的合适比例达到1∶1,甚至不少企业测试人员的规模已超过了开发人员。而国内,在被调查企业中,测试人员与开发人员比例为1∶5的企业高达36.4%,比例为1∶2的企业占31.8%,比例为1∶1及以上的企业仅占31.7%。随着产业和企业的发展,企业必然需要大量的测试人员。据国内某大型招聘网站的调查数据显示,2007年1至6月软件测试工程师年供需比达到1:50,人才极度稀缺。

软件测试人员为什么会有如此稀缺?国内相关人才培养的滞后远不能满足过旺的需求,这是导致测试人才供不应求的根本原因。目前国内开设相关专业和课程的高校寥寥无几。各大高校及相关部门对相应的市场需求反映过慢,造成了供需方面的矛盾。一方面市场缺口巨大,企业苦于招不到合适的人才;另一方面一些应届毕业生或IT从业人员想从事软件测试相关工作,但由于没有相关经验及基础理论知识而被拒之门外。

目前大部分高校没有开设专门的软件测试课程,软件测试只是软件工程课程的一部分,所涉及的软件测试相关知识非常有限。即使开设了软件测试课程的高校,也面临着师资力量匮乏、学生学习积极性不高和教学资源不足等困难。目前比较好的软件测试教材和参考书不多,而且软件测试实践环节所需要大量的案例也不足,这也在一定程度上加大了老师上课的难度,也是很多老师不愿意上软件测试课程的原因。

2教学目的和授课方式

我校计算机学院审时度势在3年前就开设了软件测试课程,该门课程是软件工程专业的必修课。通过软件测试知识体系的学习,使学生了解软件测试的发展现状,掌握软件测试的方法和技术,熟悉软件测试过程管理,从而具有独立承担测试项目的实施能力,具有测试策划、管理、实现和判断能力;通过实际的案例分析,并选用合适的测试工具实施软件测试,让学生掌握一套主流测试工具的具体应用,并且掌握技术流程、软件测试方法、测试管理、配置管理以及技术文档的写作等;,引导部分对知识技能掌握比较好的学生对软件测试某一方面的问题进行深入研究,为其后续的发展铺好道路。

鉴于以上的教学目的,本课程采取理论授课与上机实践相结合的授课方式,并辅之课堂和网络讨论、案例分析。本科教育最重要的是要为所学专业打下坚实的基础,所以该课程的54个学时中,用于基本概念和理论、工具分析和使用的理论授课时间为36个学时,用于案例分析讨论、实验操作的上机实践、研究分析报告占18个时间。

3软件测试课程教学探索和实践

3.1软件测试理论课主要教学内容

软件测试理论课内容包括以下6部分的内容:及时部分软件测试综述。共使用4个学时讲解软件缺陷的概念、软件测试的背景、定义、目的和原则;软件开发过程和软件测试的关系、软件质量的概念和软件质量管理。

第二部分软件测试基础知识。本部分是该门课程的重点,共使用12个学时讲解,内容包括静态测试和动态测试的概念及方法、黑盒测试和白盒测试的概念及方法,其中黑盒测试和白盒测试的概念和方法又是该部分的重点内容。黑盒测试主要讲解等价类划分法、边界值分析法、因果图法、决策表法、错误推测法等常用方法的概念和使用方法;白盒测试主要讲解覆盖测试(包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖)、路径测试、最少测试用例数计算等内容。

第三部分测试文档。内容包括测试计划、编写和跟踪测试用例、缺陷管理,共用6个学时讲解。

第四部分运用测试技术。该部分主要讲解软件测试三大阶段单元测试、集成测试和系统测试的概念和方法,其中系统测试具体分为配置测试、兼容性测试、文档测试、软件安全性测试、恢复性测试、压力测试、性能测试、正确性测试。综合所学知识完成一个网站的测试实例。该部分共使用8个学时的时间。

第五部分软件测试自动化。共用4个学时讲解和演示目前常用的自动化测试工具。

第六部分软件测试的现状和未来。由于该课程是在大四上学期开设,学生都面临毕业找工,所以设计2个学时针对毕业学生讲解软件测试职业以及对测试人员的要求。

为了保障软件测试课程的教学水平,提高教学效果,我们主要采用案例教学法。一些典型的、难度适宜的、有针对性和代表性的案例的收集成为案例教学法实施的难点。案例的收集我们主要通过以下几种途径:

(1) 从实习企业中收集

(2) 从学生毕业设计中收集

(3) 从学生上机作业及课堂作业中收集

(4) 从教材及参考书中收集

(5) 从互联网中收集。案例的选择遵循典型性、针对性和系统性原则,收集到的案例可以作为理论课讲解时的实例,也可以作为实验课的基本素材。

3.2强化实践教学环节

软件测试课程实践教学环节包括两个方面的内容:实验课实践环节和课外实践环节。实验课实践环节共设计了8个实验,分别是4个基础实验,3个专项实验和1个综合性设计性实验。两个完整、系统的实验案例贯穿其中:C/S结构的学生学籍管理系统,来源于数据库原理课程大作业;B/S结构的网上办公自动化系统,来源于毕业设计。实验内容涵盖了理论课程的大部分重要知识点。详细实验项目内容见下表:

要想使学生真正具有独立承担软件测试、软件配置、软件维护、软件实施等方面的能力,18个学时的课堂实践是远远不够的。所以除此之外,还设计了课外实践环节。课外实践有针对性地设计了目前软件测试方面比较受关注的热点和难点问题,让学生进行分组,每组5~8人,确定一名小组长对整个组的成员进行管理,确定小组研究方向,然后就该方向利用图书馆科技文献资源或互联网进行深入研究与分析,在学期末每组提交一份学术报告汇报学习研究情况。

软件测试论文:软件测试课程教学方法探讨与实践

摘要:本文分析了软件测试课程的教学现状,并从课程建设、师资力量、教学方法、实践训练等方面对软件测试课程教学进行了探讨,然后简要介绍了我校软件测试课程的教学实践过程。

关键词:软件测试;课程建设;案例教学;实践教学

1引言

随着计算机的诞生,就开始了软件开发和软件测试。计算机硬件的飞速发展,使得软件在整个系统中的地位越来越高,同时对软件的质量提出了更高的要求,软件测试是保障软件质量的重要手段[1]。近年来,国内软件市场不断扩大,软件企业逐渐走入正规,市场需要大量的软件测试人才。但是各高校并没有准备好这方面的人才,迫于就业压力,许多本科生、硕士研究生纷纷通过自学、培训等途径获取软件测试所需要的技能,去应聘软件测试职业。鉴于此,高校应该根据社会需要,调整培养方案,培养出大批合格的软件测试人才。软件测试属于软件工程专业的一个方向,可以依托软件工程专业,加强软件测试课程建设,加大软件测试方面的师资力量,改进教学方法,加强实践教学环节,培养出具有扎实软件测试理论基础、掌握软件测试方法和具有一定软件测试经验的软件测试人才。

2软件测试课程的教学现状

目前,许多高校的计算机相关专业并没有单独开设软件测试技术课程,软件测试技术只在软件工程课程的某一章节进行了介绍,并且没有作为重点内容来要求。软件测试技术方面的教材,近年来才出现了一些,但质量良莠不齐,对软件测试技术的重视程度可见一斑。有的学校把软件测试技术作为选修课,课时比较少,大多注重软件测试理论的讲解和测试方法的介绍,忽视了极为重要的实践环节,缺乏系统的训练,离软件公司对软件测试人才的要求差距较大。

讲授软件测试技术课程教师的缺乏也是亟待解决的问题。高校中有讲授软件工程的主讲教师,他们能很好的讲解软件测试理论和介绍软件测试方法,但缺乏较好的软件测试案例和软件测试经验,而这正是讲授好软件测试技术课程的关键所在。

另外,学生对软件测试的认识也直接影响他们对软件测试技术的掌握。一些不规范的软件公司往往让新进人员和编程能力较差的人员从事软件测试,这让很多学生片面地认为不会编程序的人才从事软件测试,从而不重视软件测试技术的学习和训练。

3软件测试课程教学方法探讨

为了培养符合社会需要的软件测试人才,进行如下教学措施。

及时,加强软件测试课程建设。软件测试课程建设包括制定教学目标、确定教学内容、制定教学计划和选择教材。软件测试课程的教学目标是通过对软件测试技术的理论学习和系统训练,使学生了解软件测试在软件开发过程中的重要作用和地位,理解软件测试的基本概念和基本理论,掌握软件测试技术和方法,能运用软件测试技术解决实际测试问题,并知道软件测试职业的特点和对软件测试人员素质的要求。教学内容分为课堂教学、实验教学和实践训练,课堂教学包括软件测试基本概念和基本理论、软件测试技术和方法;实验教学则是利用所学的软件测试技术进行软件测试;实践训练有课程设计,并与认识实习、生产实习、毕业实习和毕业设计等环节有机结合起来。软件测试技术的课堂教学在软件工程课程结束之后开始,安排在第5、6两学期进行,实验教学在这两学期同步安排;课程设计在第6学期后半学期或第7学期前半学期进行。与软件测试技术相关的认识实习安排在第4学期后半学期或第5学期的前半学期;生产实习安排在第7学期,毕业实习和毕业设计则根据需要安排在第7、8学期。教材可先选用一些较的软件测试书籍,然后根据教学实践与有经验的软件测试工程师合编软件测试教材、实验指导书和实践训练指导书。

第二,加大软件测试师资的培养与引进。讲授软件工程的教师大多缺乏实际的软件测试经验和充足的测试案例,而这正是讲授好软件测试课程的关键,可以派遣准备讲授该课程的教师到的软件测试培训机构进行培训,然后联系到正规软件公司的软件测试部门实习。另外,引进或聘任有经验的软件测试工程师来校任教也是一个很好的办法。

第三,合理安排教学内容,执行案例教学。软件测试技术涉及的知识点很多,并且这些知识点需要通过大量规范化的训练来理解和掌握,分阶段教学是一个很好方法。及时阶段的教学内容是软件测试技术的基本要求,包括软件测试的基本概念和基本知识、单元测试、集成测试以及自动化测试工具的使用。第二阶段的教学内容是软件测试技术的较高要求,包括需求测试、设计测试、系统测试、性测试、验收测试以及静态测试中的同行评审等。课堂教学中利用各种测试案例进行教学能使学生更容易理解和掌握软件测试概念和软件测试方法。案例教学法需要建立案例库,向案例库中增加案例是一个逐渐积累的过程。测试案例可以从教学实践(包括教师设计的案例和学生练习中设计的案例)、教材、软件企业等方面收集[2]。教学过程中,理解软件测试技术时可采用一些简单的测试案例,综合训练时则选择较复杂的完整案例。

第四,扎实执行实践训练。掌握软件测试技术只有课堂学习是远远不够的,还必须进行扎实的实践训练。实践训练包括课程实验、课程设计、认识实习、生产实习、毕业实习和毕业设计。实验教学在学校专业实验室进行,通过课程实验使学生熟悉软件测试过程,加深对软件测试方法的理解。实验内容按测试方法组织,测试案例由实验指导教师设计或从案例库中抽取,根据测试对象要求学生设计测试用例、编写测试程序、测试和书写测试报告。实验教学的学时有限,只能使学生达到软件测试入门级的水平。课程设计是对实验教学的补充,针对某课程进行的综合实践训练。软件测试技术课程设计以一个小型的软件项目为对象,在学校专业实验室中进行软件测试技术的综合训练,训练内容包括需求测试、设计测试、单元测试、集成测试、系统测试和验收测试,训练要求写出规范的测试报告、设计合理的测试用例、进行人工和自动测试并分析测试结果,当项目相对复杂时,可以多名学生合作完成。认识实习和生产实习是高校专业教育中两个重要的实践环节,组织对软件测试感兴趣的同学利用这两个环节进行软件测试技术的学习和训练。认识实习通过参观软件公司测试部门的软件测试过程、听取有经验软件测试工程师的专题报告等方式进行,加深学生对软件测试技术的理解和加强学生对软件测试职业的认识,激发他们对软件测试职业的兴趣。生产实习则需要有软件测试训练基地(通过学校自建或与软件公司合建实现),在实习基地每个有经验的软件测试工程师单独指导几名学生进行实际项目的测试,通过该项训练,使学生认识到实际项目的软件测试与实验室进行的软件测试的区别,找出自己的差距,通过自己学习和向工程师学习不断提高自身软件测试水平。毕业实习和毕业设计环节则组织有志于从事软件测试职业的学生进行强化实践训练,由学校教师和有经验的软件工程师共同指导,要求学生独立进行实际项目的测试,每个阶段由指导教师评价测试用例、测试和测试报告的质量,使学生逐步达到软件公司对软件测试人才的要求。

第五,引导学生正确认识软件测试技术和软件测试职业。通过任课教师的讲解、具有丰富经验软件工程师的报告、自己从各种媒体的学习等方式使学生了解软件测试技术的重要性和广阔的就业前景,激发他们学习和掌握软件测试技术的兴趣;同时要让他们认识到软件测试职业对软件测试人员的要求较高,不仅要掌握软件测试技术,还要具备软件系统分析、软件系统设计和软件编程等方面的能力。由于软件测试人员的工作是找出软件中错误,并经常同系统设计者和编程人员交流,要训练和培养学生具有严谨的工作习惯、良好的沟通能力和团队合作精神。

4软件测试课程教学实践

我校计算机学院开设了软件工程专业,几年前专业建设领导就意识到市场对软件测试人才的需求,及时修订了专业培养计划,设立了软件工程专业的软件测试方向。具体措施如下:

及时,进行了软件测试课程建设。制定了软件测试教学计划,设立了软件测试课程,增加了软件测试课程设计,依托软件工程实验室建立了软件测试实验室,并开始建立软件测试案例库。

第二,加强软件测试技术师资建设。从正在进行软件项目开发的教师中挑选担任软件测试课程教师,并对他们进行短期培训;同时从软件公司(软件工程专业学生的实习基地)中聘请有经验的软件测试工程师定期进行讲座,并与任课教师进行交流。

第三,注重软件测试实践环节。依托软件工程专业的实习基地,使部分对软件测试感兴趣和有志于从事软件测试职业的学生的认识实习、生产实习、毕业实习和毕业设计在实习基地着重进行软件测试的训练。经过几年的摸索和努力,2006年软件工程专业毕业生中已有一批学生成功应聘到软件公司从事软件测试工作。

5结束语

随着软件公司规模扩大和正规化,社会需要大量的软件测试人才,这给就业压力极大的毕业生带来了机遇,同时软件公司希望招收有技术和经验的员工,又给毕业生和高校带来了挑战。软件测试人才培养刚刚起步,很多工作处于摸索阶段,需要学校、教师和学生的共同努力,为社会培养出大批合格的软件测试人才。

软件测试论文:高职软件测试专业的构建与探索

摘要:本文从软件产业发展、软件企业测试职业岗位出发,解析软件测试专业人才的培养目标及定位,并以番禺职业技术学院的软件测试专业(方向)的构建思路、课程体系、教学资源、专业师资,以及教学模式等五个方面说明了软件测试专业在高职教育中的构建思想与探索过程。

关键词:软件测试;专业构建;建设思路;实施策略

1专业构建背景

1.1软件产业发展的需求

软件产业发展和技术进步带来了对软件测试专业人才的迫切需求。在国内,仅在2007年2月的网上招聘信息搜索中,广州、深圳两地招聘软件测试工程师的IT企业数量就超过了60多家,企业的规模涵盖了大、中、小各种类型,人数超过了六七百人,这在近几年的IT人才招聘广告中是不多见的,反映出软件企业测试人才的严重短缺。高级的软件测试人才更是“一将难求”。这种趋势引发了专业性的软件测试机构和组织的迅速产生和发展,企业与社会培训机构举办的各类软件测试技术培训正成为IT技术培训的新热点,其驱动力正是来自软件产业对测试人才的强劲需求和不断提升的人才价值。根据对软件业未来的发展预测,测试人才的需求将持续保持旺盛的态势,就业前景十分看好。其实,这也从另一角度反映出现代软件开发与测试的关联关系,软件产品追求工程质量的趋势。

1.2软件测试人才的供需矛盾

国内软件业普遍存在软件测试人才的供需矛盾:一方面,企业对软件测试人才有大量需求,但又苦于招聘不到合格人才;另一方面,许多高校应届毕业生和开发人员有志从事软件测试工作,却因为没有测试经验而被拒之门外。产生这种矛盾的根本原因是由于我国软件业长期“重开发、轻测试”,很多中、小型软件企业基本没有设置专门的测试部门和组成专业队伍,这导致软件技术人才不具有测试的知识和工作实践能力,同时,企业也缺乏相关的培养机制,一旦需求(如软件外包、产品系列化、规模化、专业化),即造成业内的软件测试人才严重短缺。

与此同时,国内高校计算机教育(本、专科)也忽视了这一领域,截至目前,甚至大多数高校的软件与计算机类专业中都未曾设置专门的软件测试课程,所以应届毕业生自然无法适应和胜任软件测试的岗位工作,也是属于“情理之中”的事情。

1.3国内高校软件测试教学现状分析

国内高校软件测试教学总体属于起步阶段,根据近几年的专业教学调研与交流表明,已开设了软件测试课程的院校大约只占计算机类或软件专业院校总数的6~8%,开设软件测试专业的院校更是“凤毛麟角”。这一方面表明了高校办学自觉适应社会和行业需求,促进技术发挥和进步的意识依然不够强烈,积极培养软件职业技术人才的认识不到位,另一方面,也反映出针对软件测试领域,对其学科与技术的研究、教学的投入不足,人才培养的缺失,最显现的现象是这方面的师资严重缺乏,在软件产业大发展和软件测试技术发展迅速的形势下,不能为社会培养这方面的高级人才、适用人才。

当前,针对软件测试职业岗位的工作需求,一些软件企业与行业的培训机构在积极开展测试人才培训工作,但培训内容比较单一、且实用化,基础建立不足,呈现了社会培训“接力”高校计算机类专业及毕业生的过程,经过短期培训而“应急”企业需求。从培训系列化、职业化的测试人才角度考察,这种培训属于非专门化、专业性的培养和教育。

2专业构建思路

2.1软件测试职业岗位分析

要落实好高职教育“以就业为导向”的办学方向与策略,专业培养目标的确定应是以职业岗位分析为前提的。软件测试职业是软件行业新兴的职业门类,目前规范的软件企业都在开始建立软件测试职业体系,逐步形成软件测试员、软件测试工程师、高级软件测试工程师、测试项目经理、测试部门经理等级的职业系列岗位。这其中,软件测试员和软件测试工程师作为软件工作的“主力军”,应理解软件测试基本理论,熟悉软件测试标准,掌握实际测试技能,承担和完成具体测试任务。而高级软件测试工程师则要求担任较复杂的软件分析、测试策略制定等任务,进行测试规划、测试用例设计和管理以及对测试结果进行分析。测试项目经理和测试部门经理则更偏重于管理,要求具备深厚、宽广的软件测试理论和质量管理知识与能力,承担对整个测试流程的管理和监督任务,具有能够使得整个测试团队或部门高效工作的组织管理能力。这说明软件测试职业岗位的分布已具有层次性,对报考和学习软件测试专业的人来说,可以设计职业生涯的规划。

仔细分析任何一个成熟的软件企业,为完成软件产品的开发都需要三类人才:及时类是懂技术、行业知识和管理的软件高级人才,即“软件金领”;第二类是系统分析及设计人员,称为软件工程师,即“软件白领”;第三类是能够熟练编程的程序员,即“软件蓝领”。类似地,软件测试行业的人才同样也可划分为三类:及时类是作为高级软件测试人才的测试项目经理和测试部门经理,可称为“测试金领”;第二类是具有丰富实践工作经验的高级软件测试工程师,可称为“测试白领”;第三类是承担基础测试工作的软件测试员和软件测试工程师,可称为“测试蓝领”。一个成熟的软件产业从人力资源结构上应该呈金字塔形状,不仅需要处于顶端的、决定产业方向和边缘领域开拓的人,也需要从事产业日常具体工作的人员,因此,位于金字塔底端的“测试蓝领”与“软件蓝领”都是软件企业中最能直接体现产品价值和创造利润的主力,也是需求数量较大的一类人才。

2.2专业人才培养目标定位

目前国内测试行业大量需求的是软件测试员和软件测试工程师,由于历史原因,测试人才的培养、培训属初级阶段,要建立一只庞大的“测试蓝领”队伍的任重而道远。社会需求是高职教育发展的较大动力,“以服务为宗旨”的职业教育理念就是要根据经济和社会发展的要求,培养多层次、多样化的技能型人才。作为高技能型软件技术人才培养中坚力量的高职院校,在软件专业人才培养方案中设立软件测试专业将是其办学的必然趋势。

高职院校的办学定位是服务于地方经济,在人才培养定位及专业设置上,更要及时了解地方经济的发展趋向,充分考虑地方经济对人才培养的需求,适时地更新专业设置,合理调整培养目标、课程体系和教学内容,以更好地服务于地方经济,同时学校在不断满足市场需求的同时,自身也得到更快的发展与提高。番禺职业技术学院位于广州,面向软件产业发达的广州地区和‘珠三角’办学。广州市政府已将软件与动漫作为新时期广州国民经济发展的支柱产业,区域性的软件产业园和企业将以更大的规模和更快的速度发展,培养高素质的软件测试专业技术人才成为我们刻不容缓的任务和职责,以满足学生就业和社会对此类人才的需求,为发展广州软件业服务。

通过对广东省高校(高职和本科)相关专业办学情况的调研,针对软件企业的需求和职业岗位做出分析,确定了软件测试专业的人才培养目标是:面向软件企业或其它各类企事业单位对软件测试人才的需求,以软件测试员和软件测试工程师岗位需求为导向,掌握软件测试理论知识和业界主流的通用测试技术,能够承担并完成实际测试工作任务,具有工程实践能力,并具有良好的职业道德、良好的团队合作精神和可持续发展能力等综合素质的高技能型软件测试人才。

3专业构建策略

3.1课程体系特征

高等职业教育倡导“能力本位”,以培养学生技术和职业岗位应用能力为主,具体体现为培养“基础理论知识适度、技术应用能力强、具备职业化特征”的专门人才。高职教育的这一鲜明特征,决定了软件测试专业课程体系的构建将坚持以培养岗位职业能力为目标,突出软件测试的职业特色,适应软件企业测试岗位的工作需要,培养针对软件测试技术应用的高素质技能型专门人才。

针对软件测试员、软件测试工程师岗位,以职业所需的知识和技能为先导,采用“逆向制定法”设计专业课程体系。即先根据测试职业工作内涵,分析对应知识、技能与素质要求,构造专业课程体系及层次,并建立课程标准,确立每门课程的知识与技能要求,进行内容的甄选与整合。建立以技术理论和技术应用为主线的课程体系架构,实现知识传授与技能培养并重,体现知识、能力、素质培养“三合一”特征。

软件测试职业特征决定了软件测试专业课程体系的知识覆盖面要求较广、并且较深。软件测试是一门动态的、交叉性学科,跨越软件工程的整个领域,进行测试工作的人员必须对软件开发的整个过程有相当的理解和掌握。软件测试工作主要针对的是由开发者编写的程序(这里的程序是广义概念,实际上涵盖所有软件开发过程中的每个环节),而且在测试过程中也需要编写、修改测试脚本等等,因此测试人员必须具有相当的程序阅读与编制能力;其次,任何一个被测软件都是运行在特定的系统环境下,包含了硬件和软件环境,测试人员必须掌握计算机系统软、硬件的基本理论与知识,网络系统的理论与知识,系统平台的知识与环境等等,内容十分丰富,要求对其具有一定的综合性的掌握与运用能力。因此,该专业课程体系中除了设置那些“看得见”的职业能力课程,如软件测试基础、软件自动化测试技术、软件测试管理等大类,以及分为面向对象的测试、基于WEB的系统测试、性能测试、嵌入式系统测试等几个类别,具体的黑盒测试技术、白盒测试技术等等,还需要开设那些“看不见”但会对专业能力培养产生决定作用的课程,如传统计算机科学与技术的专业基础类课程,如,计算机系统组成、操作系统、数据结构、计算机网络、关系数据库、软件工程等等,以及十分重要的程序设计类课程(C/C++程序设计、Java程序设计、Web应用开发技术等)。其次,课程体系还包含为从事职业工作必需的协作能力、沟通能力、职业态度训练的课程。

总之,在专业课程体系构建当中,对软件测试基础理论知识的涵盖原则是“必须的不缺”,对技术原理(方法)的分析原则是“举一反三”,对实践技能训练的原则是“项目运作”,使得学生通过专业课程体系的学习,能具备软件测试的必备专业知识和实际工作能力,能基本承担起软件测试的工作任务,为日后从事软件测试职业和专业持续发展奠定必须的理论与实践技能基础。

3.2教学资源建设

教学资源建设是专业教学的保障条件,在这方面的建设从四个方面着手,主要进行专门教材建设、实践教学环境建设、测试工程运用平台搭建、网络教学平台及资源建设。

软件测试是伴随软件工程过程的活动,是一项复杂、系统和综合性较高的工作。要真正认识领会软件测试的知识和掌握其技能,能够担负起实际工作任务,需要通过大量的实践教学活动,以“学中干、干中学”的方式培养学生的核心专业技能,实现工学结合。因此,在软件测试专业构建中,需要搭建一个适合实践教学需要和体现岗位工作内容的实践教学环境,配备相应的软件测试工具与测试平台,呈现真实的软件企业环境与岗位工作氛围。

为此,我们在2004年底就建成了集教学、培训、开发、研究四大功能于一体的软件技术与工程中心,拥有250多个工作席位,包括项目经理/工程师席位30个,技术工位220多个(学生席位),配备高性能服务器群,包括Linux服务器、Web服务器、数据库服务器、Websphere中间件服务器等,实现了中等软件企业规模的专业技术实践教学基地。该中心引入软件企业的构建模式和运作机制,系统功能完善,软、硬件设备配置齐全,购置和配备了IBM Rational Suite组件、MI WinRunner、JUnit等与业界主流运用同步的测试工具及平台,可实现校内外资源的充分获取与信息数据的共享,使教学环境与氛围接近企业工程环境及运行条件,为测试实践教学和技术服务提供了优良环境和条件,提供“实战型”、“工程化”的教学环境。

3.3专业师资队伍培育

软件测试专业作为一个新型计算机类专业,师资问题首先要解决。截至目前,高校内的大部分计算机专业教师较少系统的开展软件测试理论研究和测试工程的实践,因此,软件测试专业知识不多,教学经验几乎没有。基于这种情况,建设一支能够满足专业教学和工程需要的师资队伍,成为了软件测试专业构建的迫切任务。针对这个普遍问题,该专业师资队伍的建设可以通过引进和培养两种途径实现,采取“请进来”与“走出去”相结合的方式进行。

在师资引进上,我们的做法是一方面通过公开招聘引进具有丰富实践经验的软件测试高级人才,加强校内自身师资力量;另一方面则通过聘请来自企业和行业一线(如IBM 广州分公司、广东省软件评测中心、广东省Linux公关服务技术支持中心等企业与机构)业界的专家担任兼职教师,以开设讲座、直接授课、面对面交流等多种方式培训指导师资,使教师能够加深对软件测试理论的认识,感受测试技术在软件工程实践中的运用和技术的新发展。

对内的师资培养培育,主要采取系统地测试理论知识学习和有针对性的专项业务培训,学习和研究国外高校软件测试课程,学习和研究软件测试技术与理论,深入理解和掌握相关理论知识、奠定扎实基础,具备工程实践能力,提高专业水平和业务能力,承担起专业课程的理论与实践教学任务。2004年以来,多批次的选派教师参加由业内知名企业或行业组织举办的软件测试中、短期培训进修,组织教师参加软件工程、软件测试专业学术会议及各类教学研究活动,开展与知名软件企业的产学积极互动,与国内多所高校进行软件测试课程教学与测试实践的交流,同时,鼓励和督促专业教师每年至少到软件企业参加一个月的实践活动,提高教师的工程实践能力。

软件测试课程在我院软件技术专业中设置和开展教学已达4年,已有4届(6个教学班)的教学历程和经验,师资队伍通过“教学实战”得到了锻炼和成长,使专业水平与教学能力得到提高。

3.4教学模式改革

我们在软件测试专业构建初期就比较重视对传统学科教学模式的改革,这是缘于学科教育对于职业教育的诸多不适应。贯彻“任务驱动、项目导向”的教学策略,推行学生自主、探究性学习,采用“一体化”教学方式,实施以项目教学为导向的新型教学方法是软件测试专业新的教学模式体现。

改变传统的先在教室上理论课、再到实训室上实践课的分割模式,将实训场所设计成既能满足实践教学要求,又可在现场进行理论教学的布局。在组织教学的过程中,通过导向任务、讲解要领、操作示范演练、训练与逐个指导等环节,把培养学生知识与技能单元能力的过程设计为边讲边练的过程,注重理论知识与实践操作的穿插安排,做到理论教学与实践教学一体化,教学内容与实践内容一体化,调动和保持学生学习热情,保障教学质量与效果。

对专业课程体系中适合引入项目教学的课程,设计、规划教学项目,确定内容和流程,提出具体的要求和任务。通过引入这种理论知识学习和技术实践能力相结合的项目教学过程,达到校内学习和实际工作的一致性。这类课程的教学过程以实际项目为目标,围绕其确定的任务的解决策略和过程展开,即学生需完成规定的任务和规定的动作与步骤,以完成任务的质量、数量、时间等作为考核基本依据。在项目教学中,学生成为教学的主体,教师角色转变为“教练”身份,通过进行引导型的讲解、案例分析、测试“动作”过程示范、组织讨论等一系列互动交流形式,加深学生对知识的理解、对技能的掌握,培养逻辑思维能力和实际工作能力,建构知识体系。

4结束语

在高职院校中构建软件测试专业是源自对专业测试人才的供给远不能满足软件产业发展的需求而做出的一项办学创新。截至目前,广东省乃至全国已开办了软件测试专业的学校为数还不多,对于开办软件测试专业仍处于实践探索阶段。

软件测试论文:高职“软件测试技术”课程存在问题和应对措施

摘要:本文在分析软件测试的市场需求和现状的基础上,对高职软件测试的教材编写,师资队伍建设,教学方法改进等方面的问题进行了探讨。

关键词:高职;软件测试;隐性知识;协同学习;项目实战

1引言

软件测试作为软件产业的重要门类发展迅速,其专业岗位迅速扩大、人才需求旺盛、职业价值日益提升。然而,由于行业内的软件测试人才严重短缺,企业对软件测试人才有大量需求但苦于招不到合适的人;另一方面,很多高职应届软件专业毕业生因为没有软件测试经验而被拒之门外。产生这种矛盾的原因是,对于众多的高职院校来说,软件测试教学处于起步阶段,经验和积累不足,尤其是高职的软件测试课程和教学特点尚未形成,需加以改进完善。

2市场需求和现状分析

随着IT技术应用的发展,国内软件行业对软件测试工程师的需求将超过20万人。[1]

我国大学本科课程中普遍不设专门的软件测试课程,软件测试仅作为软件工程课中的一个章节被提到,学生在认识上多为重开发、轻测试,毕业后直接进入测试行业的为数不多。

高职院校软件专业一般在第三学年单独开设一门软件测试课程,限于学时,总体来说,学生通过课程的学习,能掌握软件测试的基本概念和基本理论、基本测试技术和方法,但真正运用软件测试技术分析和解决实际岗位的能力还不够[2]。我国50人以下的软件企业占了70%以上,一般都没有建立软件测试部门[3],这部分的中小企业希望具有工作经历的软件测试员直接上手开展工作。

社会培训机构比较重视市场经济,他们一般开设约210学时的课程,学员来自尚未找到工作的往届毕业生和应届生,主讲教师曾在电信、证券、金融领域担任过软件测试项目负责人,课程结束后保障推荐就业,中小企业也愿意接受这批学生中的者。但培训价格不菲,而且培训机构众多,质量也难免良莠不齐。

3存在问题和应对措施

高职“软件测试技术”课程面临的主要问题分析如下。

3.1教材建设

国内面向高职的软件测试教材不多,近来出版的几本教材对软件测试所涉及的基本概念、基本工作过程的理论知识和应用知识阐述虽然很系统详尽,但还是存在共同的问题:

1) 缺少大型集中项目功能测试、性能测试实例的全过程,即没能把比较分散的知识点和技能点进行综合分析。

2) 重技术实现、轻文档工作,建议增加如何编写“测试计划”和“测试报告”,给出测试记录、测试日志的模板。同时,可列出软件测试行业中长期积累的经验,例如软件测试的10大原则、10大实践等,这些内容很实用,学生走上工作岗位就马上能用到。

3) 教材中的“测试工具使用”流于产品使用说明书,难以引起学习兴趣,要站在学生学习和认知的立场上来考虑,花时间写实训指导,使学生在最短时间内对这一专项技能掌握和熟练。

4) 测试工具要采用中小IT企业流行的软件,例如功能测试采用Mercury QuickTest Professional (QTP) ,性能测试采用Mercury LoadRunner,测试管理工具可用开源的并行版本控制工具CVS,采用Test Director或同类新版Quality Center (QC) 。要注意防止两个极端:一是避免教市场已经不使用的测试工具;二是避免教价格昂贵的软件,如IBM Rational的ClearCase、ClearQuest、Functional Tester、Performance Tester,尽管功能优越,但市场占有率低,只有软件成熟度能力CMM高的大型IT企业才会使用。

3.2师资队伍建设

1) 高职在软件测试教学的过程中,常采用案例教学与实际项目嵌入到课程教学和设计中,这种指导实际动手能力的经验和技艺性知识比重偏高,它是通过不断的积累和创新,主要蕴藏在个体头脑中的隐性知识。因此,提升教师自身的这种隐性知识显然比充实书本上的显性知识更为重要。

2) 促进教师隐性知识的先行化,实现教师的终身的专业成长。在教师教育和课程发展中,要特别重视教师的专业反省能力和教师专业经验、系统化的教育理论和方法,而且要求教师探索和学习处于隐性状态的专业知识。

由封闭型向开放型转变。在知识更新速度不断加快的今天,教师应深入软件企业及时线,了解行业发展的动态,将近期的技术、观念等带进课堂,使学生得到的知识与社会同步。教师的个体知识应该不断充实和提升,成为一种开放的、动态的知识,即知识自我调节、自我管理。教师到企业挂职顶岗、或参与IT企业科研项目、或取得行业资格证书,不失为隐性知识的先行化的有效途径。

3) 来自IT企业的软件测试工程师具有丰富的项目实战经验,是软件测试知识应用和创新最宝贵的资源,有条件的可邀请来校兼职授课。同时必须采取协同学习的有效措施充分挖掘其研究成果。协同学习是对现有学习技术系统框架的突破:在信息、知识、行动之间建立有机的、协同发展的联系;在交互层面,提供内容与学习者的深度互动;在通信结构层面,提供信息聚合机制;在信息加工层面构建群体学习机制。简而言之,归纳为“深度互动,信息汇聚,集体思维,合作建构,多场协调”[4],形成知识共享。

3.3教学方法的改进

课程应基于建立一个内容充实的职业技能实训体系,采用全新的“场景教学法”,以真实工作场景为核心,利用项目导向的角色模拟方式,提倡“以用为本、学以致用”的教学方法:以工程经验为指导,采用任务驱动法,强化实战技能,辅以实际企业测试项目,使用角色模拟的方式。

1) 工作场景。针对企业实际工作流程和工作场景,结合已经实际投入使用的软件项目的测试资料和软件代码,进行项目分析和任务分解,重现在企业中进行软件测试工作的任务环境。

2) 项目主导。所有知识点和技能都是通过一个或者几个项目来组织的,学生通过可扩展的项目案例来逐步学习知识和技能;所有的实践都是项目中的一个实际任务,熟悉项目测试过程中常见的技术、流程、人员协作问题,并掌握相关的解决方法。学生通过实践可具备完成一种任务的能力。

3) 角色模拟。学生在实际动手操作的课程和项目实训过程中,使用真实的企业项目,真实的企业工作流程和工具,模拟项目组中各种角色,协同完成项目和任务,体验和掌握各种角色的工作技能和工作经验。

4) 任务分解。在为完成整个项目而必须掌握的概念和知识环节的讲解上,将整个项目划分为多个子任务,再分析每个子任务需要的知识、技能、素质要求,并通过完成子任务的形式来组织学习内容、设计课程体系。

5) 六步教学。知识和技能的传授和自学都是从具体到抽象、从特殊到一般,按照以下6个步骤来组织的:提出问题、分析问题、解决问题、总结出一般规律和知识/技能、扩展知识/技能、解决更高级的类似问题。

6) 团队协作。在授课过程中,学生将被划分为几个团队,每个团队将根据课程内容和讲师的安排,通过技术研讨、实际操作等手段,合作完成一个任务和项目。

7) 动手能力。为了使学生的知识面和思路有所扩展,鼓励学生自己动手,通过实际操作课程中的实验和进行项目演练,培养学生举一反三的能力,从而帮助学生掌握重点技术的应用,为日后完成更大的项目积累经验。

4结束语

随着计算机技术发展,对软件功能提出的要求也越来越高,如何开发出高质量的软件已成为一个迫切需要解决的课题,因此软件测试的地位也得到了应有的重视,这是一个非常有利于提升个人职业发展空间的岗位,因为它刚刚处于起步发展阶段,对人才的需求量大,非常适合缺少工作经验的高职软件专业应届毕业生。因此,上好软件测试课程,制定与相应测试职业“接轨”的教材和教学方法,使学生能系统学习测试知识和掌握测试技能,落实“以就业为导向”的办学方向与策略,应该成为今天高职软件技术专业的选择。

软件测试论文:两年制软件测试技术人才培养模式的研究与实践

随着我国软件产业的快速发展,软件企业也逐渐规范,软件测试人才也逐渐成为一种专门的技术人才,我国对软件测试人才的需求也在不断增大。但专门的软件测试人才的培养却很少,通常是在软件工程及相关专业开设一门“软件测试技术”课程,作为对测试技术的基本了解来讲授。2003年以来,随着35所全国示范性软件学院的建立,以及各地两年制软件职业技术学院的兴起,一些软件学院开始培养专门的软件测试人才。由于教育部没有设置软件测试专业,所以一般是作为软件技术或软件工程专业中的软件测试方向来设置,我院是作为软件技术专业(软件测试方向)来开设。作为一个新的职业技术人才培养方向,无论是在培养方案、课程体系等方面,都处于探索中,还没有成熟、完善的培养模式。

我院从2004年即开设了软件测试方向,在培养方案、课程体系、实践环节等方面作了大量的探索、研究和实践工作,取得了一些成效,也遇到了许多问题。本文对我院的软件测试技术人才的培养模式进行分析和总结,希望能抛砖引玉,与同行交流。

1两年制软件测试方向课程体系的特点

两年制软件测试人才培养的特点主要有:

(1) 学制短,只有两年;

(2) 目标是培养实用型软件测试技术人才;

(3) 要具备一定的编程能力。

上述特点决定了软件测试人才的课程体系的特点:

(1) 方向即专业由于学制短(两年),除了第四学期的毕业实训,实际上真正上课时间只有三个学期。所以软件职业技术人才不能像本科生培养一样,到大三才分方向,而必须从入校就开始分,所以软件测试方向实际上是按软件测试专业来培养。

(2) 开发与测试兼备一个合格的软件测试人员必须具备基本的编程能力和软件开发人才的基本素养。所以软件测试方向的课程除了测试课程外,还要掌握软件技术的基本课程,包括数据结构、数据库、计算机网络、软件工程,以及至少一门主流程序设计语言等。

(3) 课程紧凑、课时多由于相对于其他专业来讲,软件测试方向的学生要学习更多的课程,所以课时就多,课程安排紧凑。

(4) 实用性和实时性作为实用型软件测试人才,学生必须掌握当前主流的测试工具、实用测试技术和方法等。所以课程体系必须要具备实用性和实时性。

2课程的设置

在设置课程时,我们进行了大量的调研,经过2004级和2005级两届学生的培养实践,针对培养效果,进行了一些分析和课程改革。目前2006级的课程设置是在掌握基本的软件技术基础知识和一门主流程序设计语言的基础上,开设了“软件测试技术”、“功能测试与性能测试”、“测试管理”等软件测试专业课程。

主要专业课程设置见表1。

从功能上讲,课程的设置可以分成5个部分,对应学生不同层次能力的培养。

及时部分程序设计能力、工程化开发思想的培养。该部分的课程主要包括VB、Java、数据结构、计算机网络、数据库、软件工程等,主要是软件技术基础知识的学习,培养学生基本的程序设计能力,使之具备软件技术人才的基本素养,同时软件工程等培养学生工程化和规范化的软件开发思想。采用Java作为主要编程语言,将另一主流语言C#作为选修课,体现课程设置的灵活性。

在编程的课时和基础训练上和软件技术专业编码方向的学生一样,设置的原则:首先是一个软件测试人员必须具有基本的编程能力和经验,才能更好地搞好软件测试工作。第二是根据当前软件企业的人才需求考虑学生的就业,因为河南省绝大多数软件企业规模都较小,设置专职的软件测试岗位的较少,程序员通常又是测试员,所以使学生既能编程又能测试,拓宽就业渠道。

第二部分软件测试基础知识。主要是“软件测试技术”课程,侧重于测试理论和技术的掌握、搭建测试环境、测试工程师的基本职业素养培养。使学生在学习编程的同时,掌握对应的测试技术概念和基本知识。为进一步的实际项目测试打下基础。该部分对应有2周的一级集中实践课题,进行基本的测试训练。

第三部分主流测试技术和工具的掌握和使用、实际测试能力的强化和提高。对应的课程是“性能测试与功能测试”,该课程主要是结合实际的软件项目,介绍主流的测试技术和测试工具的使用,但并不只是性能测试与功能测试。该部分对应有3周的二级集中实践课题,分组进行实际的测试训练。

第四部分测试项目管理能力培养。主要课程为“软件测试管理”,培养学生工程化的测试思想,学习主流测试管理方法和工具的应用。该部分对应有3周的三级集中实践课题,训练项目的测试过程管理和测试管理工具的使用。

第五部分综合测试能力培养,即毕业实训。该实训为一个学期,学生到软件企业或实训基地参加实际的软件项目开发和测试,进行实境实习,综合地运用所学的测试和编程技术。

3实践环节

培养过程的实施可以归结为“夯实基础,强化训练”,夯实基础即培养基本的编程能力和掌握基本的测试技术。强化训练即强调实际能力的培养,通过对实际的软件项目进行测试训练,使学生熟练掌握主流的测试技术和测试工具的使用。

为了加强实际能力的培养,在正常教学的实践外,我们还在第1~3学期分别设置了一级、二级、三级集中实践课题,并要求软件测试方向的学生要与软件编码方向的学生组合协作进行,专门负责相应的软件测试工作。使学生感受到测试工作的重要性,同时培养其协作能力。一级和二级实践课题主要为验证型,三级实践课题则为设计型。

第4学期为毕业实训,采用实地场景教学,对实际的应用项目进行测试,角色模拟,项目驱动。该阶段从测试需求分析开始,一直到测试总结报告的撰写,贯穿一个完整项目的开发和测试整个过程。是对学生所学知识的一个总结和综合利用的强化。

各实践环节环环相扣,循序渐进,由易到难,由单一到综合,形成一个完整的实践体系。

集中实践环节安排见表2。

4测试工具的选择

由于软件测试工具较多,而两年制课时太紧张,所以只能学习常用测试工具的使用。我们选用的主要自动化测试工具见表3。

通过测试工具的使用,可以加深对测试原理和理论的理解,掌握主流的测试技术和方法。

5遇到的问题及采取的措施

软件测试人才作为刚兴起的职业技术人才,在培养过程中必然会遇到许多问题,相信这些问题也是其他院校在培养软件测试人才时遇到的共性问题,我们针对这些问题采取了许多有效的措施,不断改进。

(1) 对口就业较难

主要原因是我国“重开发,轻测试”的现象过于严重,很多软件公司没有专门的测试部门,测试工程师太少,开发人员兼作测试工作的现象十分普遍。但并不是说我们的培养方向不对,这正说明软件测试工程师职业还没形成规模,正在兴起时期。据2006年12月国家信产部“2006中国软件质量年会”公布,软件测试人才为2006年最紧缺的人才之一,在上海、北京等地,软件测试工程师已成为“地位高,待遇高”的“双高”人才。企业规范化需要规模和过程,软件质量问题将成为软件企业能否继续发展壮大的关键所在,越来越多的企业管理者意识到产品测试的重要性,所以软件测试工程师属于朝阳职业。

当然我们也采取了有效措施,如在前期强化基本的编程训练,使学生既能搞开发,也能搞测试,提高就业的灵活性。

(2) 教材少

软件测试作为一个新的专业(方向),目前还没有成体系的软件测试系列教材,所以在选教材时只能选与教学大纲内容相近的教材或技术书,或自己编写讲义。但给讲师授课带来许多困难。当然要很好地解决该问题需要教育管理部门和众多同行的共同努力。

(3) 测试项目实例缺乏

由于测试项目都属于公司内部资料,一般很难获得,不像通用应用程序模块一样在网上可随意找到。对此我们组织设计了一些测试案例,同时从合作的软件公司获取了一些实际项目案例,使学生能在实境中实践。毕业实训时大部分学生则直接到软件公司进行实地实习。

(4) 师资力量薄弱

师资是保障教学质量的关键,开始时师资力量较薄弱,我们采取的措施有:挑选有实际项目开发经验的老师来授课、从IT公司引进专业测试工程师、将有一定测试工作经验的老师送出去加强培训等。另外还不定期聘请IT公司的测试专家来做专业讲座,拓展学生的知识面。

6结束语

经过两届学生的培养,我们在培养模式和课程体系等方面不断改进,逐渐完善和规范化,日臻适合软件测试职业技术人才的培养目标,学生质量也不断提高。但作为一种新的技术人才的兴起,软件测试工程师的培养需要社会环境的支持,特别是软件企业的规范化和规模化,以及业界对软件质量和测试工作的重视。当然,作为学校,培养社会所需的人才是我们的职责,所以我们必须根据市场人才需求,不断进行教学改革,培养高质量的软件测试人才。

软件测试论文:独立学院计算机专业软件测试职业能力培养探讨

摘要:本文结合我院计算机科学与技术专业软件测试职业能力培养的经验和体会,介绍了独立学院的软件测试职业能力培养的目标、实施过程,以毕业设计为例指出软件测试职业能力过程中存在的问题,并提出了有针对性的解决方案。

关键词:职业能力;计算机专业;软件测试;独立学院;

1引言

大多数公司已经将软件测试看作是技术工程专业工作,有意识地在项目组中培训软件测试人员[1]。但由于IT企业的快速发展,对软件测试人员需求的缺口依然很大。应用型本科学院加强计算机专业学生的软件测试职业能力培养,既可以缓解社会上软件测试人才不足的现状,又有助于毕业生迅速找到合适的工作岗位。

目前,大多数独立学院均设立了计算机科学与技术专业。我院针对学生来源和社会对计算机专业应用型人才需求等特点,以培养应用型本科人才为目标,修订专业培养方案,确立软件工程和网络工程两个培养方向,开设职业能力辅导课128学时(4学分),分别占总教学学时和总学分的5.3%、2.1%。自2006年,我院在软件工程方向开展软件测试职业能力培养模式的探索,取得一定经验,同时也存在一些问题。

2教学现状

该院自2002年开始计算机科学与技术专业招生,基本情况见表1。表1表明计算机专业学生已经清楚认识到加强专业技能培养的重要性,因此按软件工程和网络工程方向培养学生也符合学生的需求。

我院引进了一批计算机专业教师,已经形成自有专业专职教师团队,基本情况见表2。除教授年龄超过60岁外,其他老师的平均年龄仅32.1岁,教学经验丰富,精力充沛。

我院已建设两个高标准的计算机专业实验室,PC机120台、服务器5台,可开展软件工程方向全部专业课实验和网络工程方向部分专业课实验。

3软件测试职业能力培养目标

的软件测试人员除了具有良好的职业道德外,还须具备如下基本素质和技能:①与开发员、客户或者管理者谈判与沟通的能力;②与其他测试员、开发员或管理者协同工作的团队合作能力;③分析和解决相关问题的能力;④掌握软件测试理论、方法和操作技能,具备适应发展的能力。

软件测试职业能力培养的主要目标是通过学习和掌握软件测试原理、方法和工具的,具备软件测试人员所必备的基本素质和技能,不经过职业培训或少量培训就可以从事软件测试工作。应至少达到如下要求:①能够在单机、网络环境下建立软件运行和测试环境;实施多种体系结构软件的测试;②熟悉主流软件开发技术并能够编写简单应用程序、测试脚本和测试计划、设计测试用例、执行测试并填写缺陷报告;③熟悉常见测试流程、缺陷管理流程,并能对测试流程实施监督和处理;④能够独立或协助开发人员进行单元测试和白盒测试;以及使用自动化测试工具来进行各种测试。

4实施过程

软件测试职业能力培养分为两个阶段:①基本阶段:即计算机专业课程学习、实验和课程设计阶段,学生掌握软件测试的基本原理、方法和工具,具备从事软件测试工作的基本素质和能力,经过时间不长的职业训练可以胜任软件测试工作;②高级阶段:目标是让学生掌握专门的软件测试技术和工具,形成独特软件测试职业能力,培训时间更短或者不经过培训就能胜任特定领域的软件测试工作的,通常指软件测试综合实践课程和毕业设计环节的教学。其中毕业设计环节的软件测试能力培养能够提升基本阶段形成的软件测试实践技能,通过选择适当的课题加强对软件测试的整个流程的技术掌握,进一步提高软件测试职业能力。

软件测试教学内容见表3及时列。Ⅰ至Ⅶ各列分别对应C/C++、Java、数据结构、算法设计与分析、软件工程、软件测试综合实践、毕业设计。A表示初步掌握,B表示重点掌握。

4.1基本阶段的软件测试能力培养

在C/C++、Java、数据结构、算法设计与分析课程的实验和课程设计教学中,由于所编写代码规模不大,要求学生借鉴“极限编程”和“测试驱动开发”方法的思想,源代码和测试代码开发并重,灌输“源码要能够通过测试”的观点。

软件工程课程设计和软件测试综合实践两个教学环节要求学生以团队形式完成一个规模适当的软件系统。除单元测试外,还必须关注集成测试、系统测试等环节,达到掌握集成测试和系统测试的基本过程和常用测试工具、形成良好的软件质量保障意识的目的。

4.2高级阶段的软件测试能力培养

高级阶段的软件测试能力培养指学生选择软件测试类毕业设计课题,在指导老师的指导下,在仿真工作场景的实验室环境完成课题要求的任务,或者对实现的软件系统按照工程规范进行测试。

除了软件设计类课题外,02、03和04级计算机专业毕业生完成软件测试类毕业设计课题有五类:①基于J2EE平台应用系统的性能、负载和压力测试;②EJB组件测试;③测试数据的生成方法及评价(如基于遗传算法或组合策略生成测试数据);④应用程序的图形用户接口测试;⑤应用程序的安全测试。

5存在的问题

计算机专业完成的软件测试相关课题情况见表4。第2列表示“测试过所实现软件系统的学生数/选择该类课题的学生数”;第3列表示选择软件测试类课题学生数;第4列表示选择软件测试类和选择软件设计类课题并测试过所实现系统的学生数与选择两类课题的学生数之比。第5列表示毕业后从事软件测试占全部学生的百分比。显然,软件测试职业能力培养已经逐步得到计算机专业学生的认可。

对2004级毕业生25人问卷调查,结果是选择软件测试类课题和软件设计类课题的共22人。影响软件测试及软件设计课题测试相关任务完成的原因中,课题的过大或者过难的占23%,实验条件不完备的占45%,中途改题目占13.6%,时间未规划好的占31.8%,论文文献不符合要求占18%,老师指导不足占23%,课题过于简单占27%,编程能力不足占36%。

6解决方案

针对上述问题,可以采取如下措施:

根据IT企业软件研发的应用场景,配置IT企业流行的分析、设计、开发、测试和管理等常用工具软件,构建软件设计与软件测试专用平台,为计算机专业学生提供模拟IT企业的开发环境。

软件测试和软件设计类课题的指导老师命题时应该结合自身科研、教学、技术研发特点等因素,制定适当的课题。在指导时根据现代软件工程规范和课题要求加强对学生的指导,及时检查学生的工作进度。

在专业课程学习阶段,加强语言类、数据结构与算法类课程的教学,要求学生坚持测试所开发代码,提高学生编程技能。

建设有助于培养计算机专业学生的软件测试职业技能的教学团队,定期邀请软件测试行业专家来学院讲学讲座或者专业教师深入IT企业,了解软件测试在软件质量保障过程中的应用现状。

鼓励学生参加软件评测师等软件水平与任职资格考试,所获证书可抵学分,提高学生加强职业能力培养的积极性。

软件测试论文:“软件测试”教学改革的探索和实践

摘要:传统的软件测试教学模式很难将知识传授给学生,教学方法和手段已不能适应时展的需要,本文介绍了我系在软件测试课程的教学过程中引入案例教学以及项目驱动等教学措施,取得了一定的教学效果。

关键词:软件测试;案例教学;项目驱动

近几年专业性的软件测试机构和组织迅速发展,随之带来了专业软件测试人才的旺盛需求,软件测试人才的培养正成为新的热点。然而,软件测试课程的理论与实践脱节,现有许多软件工程教材中关于软件测试的章节只介绍软件测试的理论方法,即使有案例也只是简单说明,并没有介绍软件测试的具体方法和实现过程,这导致学生只会死记硬背软件测试的条条框框而不懂如何活学活用。为此,我们尝试进行改革,引入了新的教学思路和措施。

1案例教学

案例教学法比传统的以教师为主导的教学法,更有利于提高学生分析问题和解决问题的能力,促进学生学会学习以及沟通合作。我们在教学的过程中,以可操作的软件测试案例为中心,让学生能在教学中体会实际的测试过程。

首先,一个好的测试案例所包含的内容必须完整,应包含测试目的、特殊的硬件要求、特殊的软件要求、特定的配置、执行测试的描述、测试的预期结果或成功条件。

其次,根据测试的分类不同,可分为以下几种:

 对于单元测试案例,主要按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。这类测试案例主要验证模块接口、模块局部数据结构、模块边界条件、模块中所有独立执行通路、模块的各条错误处理通路。掌握白盒测试/黑盒测试方法以及单元测试的用例设计;通用代码编程规范、伪码写作规范的检查;基本的代码静态检查方法与工具运用;代码覆盖率检查方法与工具运用;OO程序单元测试方法与过程;针对内存泄漏的检查;掌握测试覆盖分析方法和测试用例最小化的运用。

 对于功能测试案例,用于鉴定执行后启用的功能。这类测试案例验证软件是否提供了基本的单

元功能、是否提供集成后的功能,以及是否提供解决方案设计中指定的其他功能。

 对于Web测试案例,Web系统是当前网络环境下最多的应用系统,其主要内容设计为Web性能测试项目解析、性能测试流程、测试规划与设计、性能测试需求分析、用户事务分析、Web资源分析、网页元素细化等。

 对于集成测试案例,主要包括针对结构化软件和面向对象软件的集成测试,独立开展集成测试用例设计和用例执行。具体分为基于结构化程序的集成测试方法和基于UML图的面向对象的集成测试方法。

 对于系统测试案例,掌握常见系统测试类型的基本测试方法,独立设计系统测试用例,运用手工方式或测试工具完成系统测试,包括功能测试、性能测试、压力(负载)测试、配置测试、易用性测试。

再次,教学案例的具体应用。我们根据难以程度,将测试案例大致可分为简单的基础性实验案例和综合实验。简单的基础性实验案例主要包括白盒测试和黑盒测试,通过学习让学生掌握软件测试最基本的一些方法。综合性的实验案例,特别是较大型的软件项目测试实验,让学生在实验的每一个步骤中理解软件测试技术和各种具体的测试方法,增强实际操作能力,增加软件项目测试的综合经验。

通过综合性实验的学习,可以让学生感受大型软件测试项目的工作流程和实施细节,掌握各种软件测试方法在大型项目中的应用,体会软件测试的规律;了解软件测试项目的管理,熟悉软件测试项目中人员的管理、产品的管理、软件测试案例的管理以及缺陷的管理;能够进行比较复杂的白盒测试或自动化测试,为从事要求较高的软件测试打下很好的基础。

2项目驱动

软件测试是一项技术性较强的工作,规范的实施也是以工程的方式开展或进行。因此,好的课程内容及教学设计是通过项目的活动及过程来呈现问题,运用相关理论知识解析问题,以及通过工程过程解决问题,通过项目阐明技术方法与策略的运用。

项目的复杂性通过分解得到局部的单一性和简单化。项目包含了由易到难,由简单到复杂,由单一到综合,逐步实现的内容和过程。软件测试本身就是理论与实践紧密结合的一门技术学科或工程体现,贯彻项目教学法是该课程理论教学与实践教学“一体化”的好形式。通过项目教学,可落实教学的循序渐进原则、系统化原则、目标性原则、整体优化原则以及规范化原则。项目教学使教学内容的构建紧密围绕课程总体目标展开,项目组成具有针对性强,目标具体明确、步骤清晰的特点。它按照组成技能教学内容及相互间的内在联系,使各部分内容有所侧重,互相衔接,

软件测试项目大致可以分为以下三个方面:“软件测试技术”等课程的实践教学,强调案例教学法,强调实践教学;课外实践,强调综合性、设计性实验,由学生在课余时间完成,包括毕业设计;企业实习,和多个企业建立关系,供学生实习软件测试。

3常用自动化测试工具使用

在理解软件测试自动化原理基础上,掌握业界常用的

Rational、WinRunner、LoadRunner、Junit、Panorama等系列测试组件的运用。在制定的测试策略中应用测试自动化工具开发、编辑、运行和调试自动测试脚本程序,建立测试过程、生成测试报告,分析测试结果,理解测试工具如何进行对测试数据进行自动评估分析,掌握测试工具如何对测试文档生成和利用。如表1。

4结束语

我们对软件测试的教改受到了学生和老师的普遍欢迎。通过调查,大多数学生认为使他们对课本知识的理解更加深入了,主动思考问题的能力也得到了提高。教师们也普遍反映“软件测试”的教学质量和教学效果得到极大的提高。

软件测试论文:浅谈具有计量特色的软件测试人才培养

摘要:本文分析了计量学与计算机科学间的关系及市场需要的软件测试工程人才的需求,探讨了我们依托学校计量测试的办学优势在具有计量特色的软件质量测试应用型人才培养方面的经验。

关键词:计量特色;软件测试人才;课程体系;实践体系

目前,全国有500余所本科院校开设计算机专业,对一所像中国计量学院样的普通高校而言,如何在这种庞大的专业规模和激烈的专业竞争中办好自己的专业,专业特色是一个重要的立足点。不同类型高校计算机专业的人才培养应当具有不同的定位,人才培养模式要充分依托各自学校的办学优势体现专业特色。

中国计量学院是我国质量监督检验检疫行业的本科院校,学校在29年的办学过程中,逐步确立了“计量立校、标准立人、质量立业”的办学理念,形成了“培养具有牢固质量观念、明确标准意识和较强计量能力的高素质人才”的人才培养和在计量、质量、检测、标准、检验检疫等方面具有鲜明的办学特色。

中国计量学院计算机专业面对目前国内软件测试人才失衡及培养渠道缺失现状,针对软件测试人才的职业素质要求,依托学校计量测试的办学优势,以培养社会急需的软件质量与测试人才市场为目标,研究探索了具有鲜明计量特色的“软件质量与测试平台+ 模块”的计算机专业应用型人才培养模式和课程结构与体系,构建了由实验教学、软件度量与测试专业技能训练和校内外软件质量与测试实践基地的计量特色实践教学体系,培养了学生软件质量意识和积极探索、勇于创新的学习动机。

1计量学与软件测试间的关系

计量学(metrology),简称计量。随着人类文明和科学技术水平的发展,计量学的内涵与外延在不断变化。就内涵而言,计量学曾被称为度量衡学和权度学,一般指关于测量的科学,具体指以技术和法制手段保障量值、单位统一的测量,此处的“量”主要是有形的、物化的量,可通过“测”来获取。而广义的计量学,则突破“测”的手段来获取无形的量[1]。

在传统计量时期,社会经济活动较简单,计量主体是度量衡和时间度量,随着近现代数学、原子物理和量子物理学的发展,现代计量的对象和范围不断拓展,从一般物理量扩展到工程量、化学量和生物量等,甚至还包含了现代社会的商贸、医疗、贸易,出现了形态计量学、经济计量学、文献计量学、情报计量学、网络计量学。计量学已经涉及自然科学、人文社会科学的各方面[1]。

科学仪器是计量的重要组成部分,科学研究往往离不开的科学仪器。随着计算机技术的飞速发展,“计算机软件就是仪器”、“计算机软件就是设备”早已成为的事实。20世纪90年代以来,计算机应用领域不断拓宽,软件应用的复杂性和规模不断扩大,IEEE、ANSI和ISO等一系列关于软件质量控制和测试的国际标准均相继问世,使软件质量和软件测试得到了普遍的重视。人们认识到软件测试不单纯是发现错误的过程,而且包含软件质量评价的内容,是软件质量保障的重要手段。2004年ISO和IEC的及时联合技术委员会(ISO/IEC/JTCl ) 提出的软件工程标准术语中给软件测试下的定义是:软件测试是为评价、改进软件产品质量、标识软件产品缺陷和问题而进行的活动。即软件测试并非传统意义上产品交付前单一的“找错”过程,而是贯穿于软件生产过程的始终,是一个科学的质量控制过程[2]。因此可以说传统计量测试技术与计算机技术的交叉与融合是实现软件测试技术的基础,软件测试技术是传统计量测试技术的延伸与拓展,是现代计量技术的一个重要分支。传统的计量测试也是测定某个系统的性能是否满足需求,或弄清预期结果与实际结果之间的差别。软件测试技术与传统计量测试技术的主要区别在于被测对象不同[3].

2具有计量特色的软件测试应用型人才需求分析

何谓具有计量特色的软件测试应用型人才?笔者认为所谓具有计量特色的软件质量测试应用型人才是指“具有牢固软件质量观念、明确计量标准意识和较强软件质量和测试能力的高素质应用人才”。其特点是对软件度量、标准、质量方面的问题非常敏感、理解非常、工作上手非常快。

软件质量度量是对影响软件质量的属性所进行的定量测量,其实现的基础是软件测试,测试作为一种通用的度量方法,其重要作用在于软件质量保障、功能的验证和确认,以及产品性的评估等。随着经济全球化的进一步推进,中国软件行业面临更加广阔的国际市场。经过几年来的市场竞争,业内人士已清醒地认识到:“品质的产品、的服务、良好的信誉”是软件产业发展壮大的基础。在注重软件开发过程规范化的同时,通过测试的手段保障软件产品的质量,贯穿于软件产品研发周期内每一个环节中,在整个软件开发的系统工程中占据着相当大的比重[4]。

目前,我国软件业服务范围广泛,从电子消费到医疗航天,已渗透进社会的各个领域。据了解,随着软件行业产业结构的调整,各大软件公司对国内软件市场、软件外包业务的争夺愈演愈烈,软件质量不得到改善,我国软件行业就无法和美、日、德、英、法等软件大国竞争。然而由于我国软件企业对软件测试认识较晚,现阶段大多数软件企业中测试人员数量还不足开发人员的五分之一,远远落后于国外1:1的比例,且具备5年以上行业经验的博学软件测试工程师不超过两万人。据相关数据统计,目前我国软件测试人才缺口已达30万人。

国内软件测试人才的来源主要有三方面:一是以前做软件开发转行的技术人员;二是来自计算机专业的高等学院毕业生;三是经过一定的培训,具有很强的实战经验的专业人员。据51Testing调研数据显示,目前国内软件测试从业人员的学历集中在本科,其比例为70%,大专学历次之,其比例为23%,高学历者(包括硕士、博士)占6%,大专以下的有1%。因此高等学院计算机专业本科毕业生将是我国今后软件测试人才的主要来源。

3具有计量特色的软件测试应用型人才的培养

(1) 培养目标的定位

高等学校计算机专业人才培养目标的确立依据有二:一是学校的办学特色和自身的专业条件;二是社会对专业人才的需求。在专业建设和人才培养目标的定位过程中,我们认识到近年来随着大学计算机专业在规模上蓬勃发展,各高校均面临着专业特色不明显以及教育质量需要提高等问题。认为在新形势下,只有以特色立校,扬长避短,才能以特色强校,以特色取胜,才能凸现学校的品牌与地位。

中国计量学院地处IT技术发展非常迅猛的浙江省,是我国质量监督检验检疫行业的本科院校,其办学特色是计量、质量、检测、标准、检验检疫等方面。因此我们的人才培养目标的定位是立足于浙江省和国家的需求,依托学校计量测试的办学优势,根据国内外在软件测试和质量控制创新教育方面研究的现状和发展趋势、新形式下社会对软件测试和质量控制的计算机专业人才的需求,特别是对软件测试和质量控制专业人才在应用动手创新能力和综合素质方面的需求,在我们专业实力、专业水平和专业学生的知识能力基础上,结合计量学院在计量、质量、检测、标准、检验检疫等方面的办学特色,突出计量测试特色,培养具有鲜明的计量特色的计算机专业人才。

具有鲜明的计量测试特色计算机专业人才培养目标,一方面可以提高我校计算机专业在培养人才和为社会发展服务等方面的创造力、在招生、就业,争取科研课题方面的竞争力和对浙江省和国家的软件测试和质量控制领域的技术发展和进步的贡献力,另一方面也有助于提高我校计算机专业的水平和实力,争取更多的社会资源和企业支持。

(2) 课程体系和计量特色实践教学体系

根据教育部计算机科学与技术专业教学指导分委员会在《中国计算机本科专业发展战略研究报告》中提出的以“培养规格分类”为核心思想的计算机专业发展的要求,我们的教学计划和培养方案以应用型为基础,整个课程体系设计首先强调计算机科学和应用工程基础,但专业课程的重点放在现代软件质量工程和软件测试理论和软件测试新技术方面。培养计划强调软件测试领域的应用实用型特点,重点加强软件测试实践性课程,培养学生的独立进行软件测试的能力。课程体系分为以下几个层次实现:

① 专业基础:包括计算机专业引导性课程和数学物理等方面的基础课程,如程序设计基础、数据结构与算法、计算机组成等,重点培养学生对计算机基础的理解和掌握。

② 专业课:包括计算机专业自身的核心课程,如数据库原理、操作系统、计算机网络、软件工程等传统的计算机学科核心课程,同时软件测试与质量控制的核心类课程也是教学的重点。在高年级专业的专业方向学习阶段,采用专业方向平台教学手段,学生可根据自己的专业兴趣、发展方向、就业趋向等选择合适的平台课程进行学习。根据社会对计算机专业人才需求和自身专业特点,设置软件测试与应用方向平台、网络工程及应用方向平台、嵌入式系统设计及应用方向平台等三个专业方向平台。在专业方向平台课程中,除侧重点不同外,都具有计量测试特色,如软件测试与应用方向平台包含软件质量工程、软件测试技术、软件能力成熟度模型(CMM)等,嵌入式系统方向平台包含软件质量工程和嵌入式系统测试技术等。

③ 选修课:与质量测试领域、职业发展素质和一般工程方法相关的选修课。如计量学概论、产品质量工程概论、检测技术与仪器等,以增强学生的质量测试意识和职业素养。另外软件的测试的行业或领域非常强,掌握领域专业知识也是非常关键,我们通过聘请相关行业或领域的专家以技术讲座方式使学生初步掌握相关行业或领域知识,以避免学生缺乏领域知识。

④ 实践教学:根据软件测试人才能力素质的要求,我们设置了相应的实践教学体系,包括课程实验、课程设计和专业实践三个环节。课程实验主要让学生在真实或模拟的环境中进行大量操作、实践,熟悉各种测试软件和测试工具;课程设计通过安排小型的软件测试项目,让学生运用测试工具进行测试,锻炼学生的综合分析能力和综合运用知识的能力;专业实践结合毕业设计,一方面安排学生走出学校,参加实际的软件测试项目。另一方面我们专门设计针对电信/互联网服务和典型行业(金融、银行、保险等)等应用领域的软件测试和质量控制的实践项目,并在实践过程中模拟企业的质量管理体系,训练学生项目管理、团队合作、学习创新的能力。

另外,我们还与知名软件测试职业培训机构合作,建设校内培训基地,充分利用校内的实验条件、生源条件;培训机构的师资、技术、资金资源。通过合作办学,建立良好的测试环境(各种流行测试工具),引入科学、系统的课程体系,利用双方的互补资源优势,相互学习、协作、促进,实现双赢。同时与省内软件企业合作,建立校外实习、实训基地,学生在教师和企业专家的指导下,参与实际测试项目。与第三方测试机构合作,承接了力所能及的测试项目,实施了大学生科研计划。

(3) 计算机学科和计量测试相关学科知识的相互渗透和融通

在软件质量测试应用型人才培养过程中,为了体现计量、质量、检测、标准、检验检疫等方面的办学特色,我们将“明确标准、注重量化、追求质量”渗透于人才培养的过程中,努力达到“标准先进、计量、质量”的人才培养目标,突出计量测试特色,在研究计算机学科和计量测试相关学科各自特点基础上,提出了计量测试大学科意识,实现了两学科知识的相互渗透和融通。以选修课的形式在计算机专业开设如计量学概论、产品质量工程概论、检测技术与仪器、技术监督法律法规、质量管理体系认证、标准化概论等课程,将计量测试相关学科基础知识的渗透和融通到计算机学科,使计算机专业学生能建立起标准意识、质量意识和法制意识,对计量、标准、质量方面的问题更敏感、理解更到位、工作上手更快。近三年来,学生共有50 余项与专业特色相关的专利申请被受理,参与的学生人数和专利项目申请数均列省属高校前茅。学生在各级各类学科性竞赛中所获得的奖项多数也与专业特色密切相关。

4结束语

中国计量学院属于行业性较强的学校,计量学本身涉及自然科学、人文社会科学和工程领域等多个方面,由计量派生出来的相关学科、领域和方向也在不断增加。在计量这个大框架下建立我们计算机专业特色,是我们培养能够适应21世纪科技、经济和社会发展需要,具有良好质量意识和软件测试技能的应用型人才的必然选择,开展具有计量特色的软件质量测试应用型人才的培养模式的研究是迫切的现实需要,这一能够满足国家对专业人才的需求,培养社会急需的软件度量与测试人才,也更能提高我校计算机专业在培养人才和为社会发展服务等方面的创造力和竞争力,也有助于提高我校计算机专业的水平和实力,争取更多的社会资源和企业支持。

软件测试论文:软件测试学习过程和方法探究

摘要:近几年来,人们越来越重视软件测试,软件测试工作也越来越“热”,但很多人在学习软件测试的过程当中走了不少弯路。本文对软件测试领域的现状和误区进行了阐述,并对学习软件测试的过程和方法进行了深入探讨,提供了一些软件测试技巧以供参考。

关键词:软件测试;误区;黑盒测试;测试用例

随着软件产业的发展、软件规模的逐步扩大,软件的质量问题日渐突显,软件测试与软件质量监控也越来越受到软件行业的重视。各类招聘信息中对软件测试类人才的需求猛增,很多人由此而选择了软件测试,但其中不少人始终未能拿到软件测试行业的“入场券”,原因何在?软件测试行业是一个高速发展的新兴行业,尽管当下认知程度不高,但有着广阔的发展前景。如何才能更有效地进入软件测试领域是本文的研究重点所在。

1软件测试的误区

软件测试不断受到重视,但总体上,国内软件项目过程不够规范,对软件测试的重要性、测试方法和流程等还存在很多错误的认识,以致很多人在软件测试领域走了不少弯路。对于测试人员以及准备进入软件测试领域的人员来说,首先必须认清并更正这些错误观点。

(1) 误区一:软件开发完成后才开始进行软件测试

软件从开始计划、编制、测试,一直到公开使用的过程中都可能存在软件缺陷。事实证明,需求规格说明书是导致软件缺陷的较大原因。随着时间的推移,修复软件缺陷的费用呈几何级数增长。

(2) 误区二:软件后如果发现质量问题,那是软件测试人员的错

软件测试只能确认软件存在错误,不能保障软件没有错误。软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程设计出来的。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。

(3) 误区三:软件测试要求不高,随便找个人都可以完成这项工作

软件测试涉及很多领域,简单的点点鼠标、按按键盘的工作根本无法达到软件测试的目的,若想立足于软件测试领域必须掌握和学习很多方面的知识。

(4) 误区四:项目进度吃紧时少做些测试,时间富裕时多做测试

缩短测试时间会导致测试不完整,无法达到测试的目的,测试效果也将大打折扣。软件项目过程应该是有计划的、可控制的,若项目过程管理混乱必然会降低软件测试的质量。

(5) 误区五:自动测试将取代手工测试

自动测试速度快、效率高、度和度高。但动测试只能测试某些软件的部分特性,且无法灵活处理意外事件。手工测试可以更好地发挥人的主观能动性、灵活性、随机应变性,可以更好地适应并处理突发事件。无论自动测试技术多么发达,自动测试也不能取代手工测试。

2学习软件测试的过程和方法研究

不同知识基础的人,学习软件测试技术、进入软件测试领域的感受也有所不同,很多人在学习软件测试知识的过程中非常盲目,没有计划、没有方向,学习效率低下。在此,本人对学习软件测试的过程和方法进行总结、研究和探讨,以作交流学习之用。

2.1学习软件测试的过程

(1) 及时步明确测试目的

有目的才有动力,有目标才有方向。软件测试就是对软件需求分析、设计规格说明、程序代码以及软件其他相关产品进行测试的过程,是软件质量保障的关键步骤。明确软件测试的目的和目标才能的定位测试并更有效的进行测试。

(2) 第二步结合实际项目,学习掌握测试方法、合理设计测试用例

常用的测试方法有黑盒测试和白盒测试。黑盒测试在不考虑程序内部结构和内部特性的情况下,针对软件界面和软件功能等进行测试,是最基本的测试方法。白盒测试允许测试人员利用程序内部的逻辑结构及有关信息设计或选择测试用例进行测试。的理解和掌握这些技术及其相互关系是进行软件测试的前提。

测试是有风险的行为,测试是不可能的。软件测试用例是进行测试的核心,是测试人员测试过程中的重要参考依据,它的组织和编写关系到整个测试工作和思路的正确性、有效性。测试用例的组织性和条理性是软件测试成功的一个重要因素。因此,在学习软件测试的过程中,要的把握测试方法并有条理的组织和设计测试用例。

同时,软件测试重在实践。理论的掌握只能达到纸上谈兵的功效,若想真正领悟测试技术的真谛还需进行实际的项目测试。结合具体的测试项目,灵活运用各种测试方法组织编写测试用例可以帮助初学者更好的理解和掌握这些技术。

(3) 第三步熟悉测试步骤

一个完整的软件测试过程包括测试计划、测试设计、测试开发、测试执行、缺陷跟踪和测试评估。软件测试管理工具可以系统地控制整个测试过程,实现从测试需求、测试设计、测试执行和缺陷跟踪所有操作的多方位跟踪管理,并为这几个部分提供了关联机制,使整个测试管理过程更加简单和有组织。在此,本人建议在学习软件测试技术的过程中,以一个测试管理工具(例:TestDirector)为平台进行测试实践,用心体会一个完整的测试过程。

(4) 第四步了解测试阶段

软件测试从软件需求阶段就已介入,基本贯穿软件项目开发全程,不同阶段有不同的测试点,需要不同的测试方法和技术。软件测试可以大致分为需求评审、单元测试、集成测试、系统测试、验收测试( 测试/ 测试)这几个阶段。明确各个阶段的测试目的和内容才能选择相对合适的方法进行测试。

(5) 第五步测试技术的提高和升级

软件自动化测试是一项让计算机代替测试人员进行软件测试的技术,通常借助测试工具来执行。自动化测试可以模拟软件实际运行效果,测试效率高、度和度高、可以持续测试而无须休息,弥补了手工测试的不足。

性能被列为系统质量的重要指标,并越来越受到人们的重视。性能测试是对软件性能的表现进行测试,较功能测试更难实现。

在掌握基本的测试方法和技术之后,可以继续深入研究自动化测试和性能测试,提高测试水平和测试能力。

2.2学习软件测试的方法

学习方法的好坏和学习习惯对学习效果的影响非常大,以下是软件测试初学者需要注意的几个地方:

(1) 勤学好问、充分利用各类学习资源

问题积累是学习的拦路虎。时间越久,问题越多,给学习造成了很大的阻力,更甚者会让初学者心生放弃。三人行必有我师,勤学好问,不要滋生“历史”遗留问题。当然,对于一个复杂问题,如果在短时间内无法理解透彻时,可以先简单的了解,然后在之后的学习和实践过程中慢慢体会其含义。由简入繁,勿钻“牛角尖”。

软件测试的学习资源非常丰富,书籍、网站、论坛、技术交流群等唾手可得。充分利用这些资源可以缩短学习和解决问题的周期,使学习更加高效。

(2) 实践出真知

实践是检验真理的标准。要想真正学会测试,必须进行实际的测试。不要说没有测试环境,想学的话,可以自己搭建环境。有了行动才能有收获。

(3) 切莫“闭门造车”

软件测试技术是解决实际软件测试问题的技术,与现实世界密切相关,盲目的学习可能适得其反。因此,应多关注软件测试行业的动态,了解软件测试行业的真正需求,有目的的学习。

(4) 细心、耐心

软件测试是对人技术和意志的一种考验,不细心就有可能与缺陷擦肩而过,没有耐心就无法将枯燥的测试进行到底。只有充分的细心和耐心才能适应和完成软件测试工作。

(5)“怀疑”精神

定性思维往往是发生错误的根源,对于软件测试人员来说,更应该具有“怀疑”精神,要考虑每个细节,不要想当然地接受任何假设。

(6) 沟通能力

软件测试人员必须具有良好的人际关系和沟通能力。由于软件测试工作的特殊性,软件测试人员在项目小组中并不受欢迎。由于需要经常和开发人员、测试组其他成员进行沟通,软件测试人员说话办事必须稳重得当,不能随意指责别人,否则会事倍功半,影响软件测试的效率。在学习软件测试的过程中,应把握各种机会,多与人进行沟通和交流。

3软件测试的常用技巧

软件测试虽然辛苦,但掌握一定技巧后将事半功倍。

(1) 边界测试

边界是最容易出错的地方。在进行软件测试时,应测试临近边界的合法数据(即一个可能合法的数据,以及刚超过边界的非法数据)。

(2) 非法测试

人们在不了解软件功能或使用方法的情况下,经常会不经意地输入一些非法数据或进行一些非法操作而导致软件出现意外情况。因此,在进行软件测试的过程当中,应考虑进行类似的非法测试。例如在输入数字的地方输入字符、输入邮件地址的地方输入非法格式的数据、进行一些不合理的操作等。

(3) 接口测试

程序往往在接口的地方发生错误,在进行相关测试时切勿掉以轻心。

(4) 代码重用测试

在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码的基础上作修改或修改不而引发错误。在测试的过程中应更加留意这方面的测试。

(5) 失效恢复测试

当意外(如网络突然中断、系统崩溃等)发生时,用户能否继续使用系统,用户将受到多大的影响也是测试要考虑的问题。

4结束语

软件测试是一个入门易、深入难的工作。学习软件测试技术没有捷径可言,一点点的努力才是正道。学习过程是指引,学习方法是手段,希望以上的方法和技巧能够给大家以启迪,也希望更多有识之士能够与我们共同徜徉在软件测试这五彩缤纷的世界之中。

软件测试论文:让软件测试实验和实训课程轻松地走进高校或培训机构

目前国内为软件测试理论课程配套的实验教程很少,即使有也大多是以商用软件测试工具使用介绍为主,很难普及到各个高校进行实践教学。针对这些问题,蔡建平教授以主流的开源软件测试工具作为软件测试实践教学的基础,并在《软件测试实验指导教程》中、系统地介绍了软件测试实践教学的方法、步骤和案例,很好地解决了软件测试实践教学面临的教材问题、案例问题和实践环境建设问题。

该书充分考虑了国内大多数院校办学条件不足,实验教学经费有限,无法多方位引进商用软件测试工具,无法开展软件测试实验室建设的实际情况,对国内外主流的开源软件测试工具进行分析、研究和挑选,并经过北京工业大学软件学院5轮实践教学的检验,来设计该书的实验教学重点和实践能力要求。该书的实验内容之广,涉及的软件测试知识之多,以及开源软件测试工具介绍之,无论是对于教师进行实验指导,还是培训机构进行实战训练或者学生进行自学自练,都是不可多得的实验教材。

该书与国内常见的软件测试实践教材重点讲授某个或某几个商用软件测试工具的方法不同,它是以现代IT企业软件测试需求为背景,以主流的软件测试技术和方法为基础,以当前的软件测试应用为实例,介绍了支持各种软件测试类型的开源软件测试工具的主要功能、应用流程及实际案例。特别突出了软件测试工具在实际测试项目中的使用能够有效地巩固所学软件测试知识,掌握软件测试方法和技术以及提高软件测试实战能力。

该书分为管理、静态分析、单元测试、GUI测试、性能测试以及软件综合评测等6大部分,共有12章。主要内容包括:软件缺陷管理、软件测试管理、程序理解、代码静态分析、xUnit单元测试框架、单元覆盖测试、Java GUI基础类库应用测试、Web页面测试、Gtk+用户界面测试、单元性能测试、Web应用性能测试以及软件综合评测工具等。在该书中,较大篇幅地介绍了如何使用主流开源软件测试工具建立测试环境,如何将它们用于实际软件项目的测试。这种举一反三、抛砖引玉的内容设计,对高校软件测试实践类课程的开设、培训机构软件测试的实战培训以及开发人员和测试人员自学是非常有现实意义的。该书在一章特别强调了软件综合评测的意义,并以南京大学研制的Eastt工具为实例,介绍了软件评测的思想和过程,有助于学生掌握软件评测的方法和技术,提高实际的软件评测能力。

该书针对软件测试的实验内容,实验方案完整,实践环境建设可行,实验步骤及过程讲解清晰,实验案例丰富实用,可作为高等院校不同学历教育的软件工程专业及计算机相关专业的“软件测试实践课程”教材(如本科生、研究生、甚至高职/高专生等),也可作为社会软件测试实战培训教材,同时该书也是软件开发或管理人员、测试或质量保障人员等的自学参考书籍。

蔡建平教授以他多年在软件测试领域开展工作的经验和对软件测试能力培养如何满足IT企业要求的了解,设计了软件测试独特的实践教学方法,并收受学生认可和欢迎。作为蔡建平教授多年在软件测试实践教学上的经验和成果总结,《软件测试实验指导教程》的出版发行,将有益于国内软件测试人员和软件工程相关专业本科生及研究生的学习与实践能力培养,有益于推动我国高等高等院校软件测试实践教学方法研究的进一步发展,同时对我国软件测试业的发展和软件测试紧缺人才的培养起到积极的促进作用。

软件测试论文:高职与培训机构软件测试人才专业能力培养差异性研究

摘要:面对软件测试人才市场的巨大缺口,高职院校迫切需要提高软件测试方向学生的专业能力。文章阐述了高职院校与培训机构对软件测试人才专业能力培养的现状,从培养目标方向性、知识传授深度及广度、专业能力提升成效性、企业需求传递时效性这四个方面,对高职与培训机构软件测试人才专业能力培养的差异性进行了对比分析,提出了优化高职院校软件测试人才专业能力培养的建议。

关键词:高职;培训机构;软件测试;专业能力

随着我国软件行业的迅猛发展和不断成熟,市场对软件测试人员缺口高达30、40万。特别是随着高端软件测试人员需求的与日俱增,为了保障每个学生都拥有进入测试行业的就业基础,高职院校必须抓住这个市场机遇,采取切实可行的教育教学改革措施,强化软件测试方向学生专业能力的培养。

1高职与培训机构对软件测试人才专业能力培养现状

专业能力是人们从事职业或职业活动赖以生存的能力,在劳动世界中其作用趋于核心地位,它是高职学生职业能力中的核心能力,是高职学生特点的集中体现,也是构建高职学生职业能力标准的核心内容。目前,中国的高职教育观主要是知识本位的职业能力观,对学生专业能力的培养主要以开展学科课程教育为主。通过对湖北省内及省外几所高职院校定位了软件测试方向人才培养的专业进行了调研,笔者发现在专业人才培养方案中,针对软件测试专业能力培养的课程比较少,大多数都只是开设了《软件测试技术》这一门课程,少数院校把性能测试单独作为一门课程。通过对30余家软件公司的问卷调研,笔者了解到软件测试技术包括的方面比较广,企业需求的测试技术主要有手工功能测试、性能测试、易用性测试、安全测试、自动化测试、云端测试与众包测试服务,还有从无到有、从简单到专业的移动APP、H5测试。然而,高职院校只用大约32至68个课时来讲解部分测试技术,通常就是泛泛地讲授软件工程知识、主流自动化测试软件(如Quick Test Professional、LoadRunner、TestDirector等)等,以此提高学生的专业测试能力,便把软件测试定位于专业人才培养目标之中。

据中国产业信息网报道,国内具有一定规模的软件测试培训机构有华育国际、安博教育、北大青鸟、达内科技等。其中,华育国际采用“订单+实训”的人才培养模式来提高软件测试学员的专业能力。华育国际通过与软件企业“点对点”方式,即签订定向委培协议,按照企业的需求,为学生专业制定人才培养方案,使学生在毕业时就能胜任协议企业里约定的工作岗位。华育国际还通过与某一类企业(如金融行业、互联网应用等)“点对面”方式,按照这一类企业的需求来设置培训内容,安排课程设置。无论采用哪种与企业的合作方式,其实训在培养方式上,均是以项目实战为主,培训学员都有机会参加IT名企的实际测试项目,掌握规范的软件测试流程,增加丰富的项目测试经验。安博教育实行以就业为导向的IT人才教育体系,通过IT软件测试实训,协助毕业生在就业之前,参与到企业的项目开发与测试过程中,解决软件测试方向学生和软件企业之间需求的错位。北大青鸟的培训策略是通过与高校合作办学来培养软件测试人才。通过课程置换的方式,北大青鸟将自身职业课程体系的优势与高校的教学优势相结合来提升学生的专业能力。达内科技主要推广“远程教育”,即在全国各地设置培训教学点,通过网络将达内的课堂引进各个地方,将拥有国际化大公司工作经验的技术专家和博学工程师通过远程在线的方式共享。达内也在各个高职院校推广这种远程教育模式,与全国一些高职院校合作,让高校提供培训场地和学生,达内提供教学内容和师资,在人才培养方案中进行“课程置换”。

2高职与培训机构对软件测试人才专业能力培养的差异性

2.1培养目标方向性差异

目前,国内软件测试培训机构的市场主要定位在校待就业学生,尤其是临近毕业的学生居多,主要是以线下培训为主。很多软件测试方向的大专生为了提升自己的就业实力,在毕业前选择去软件测试职业培训机构接受培训。培训机构对学生的培训只有几个月的时间,培养目标是能高薪胜任IT企业软件测试的工作岗位,在对学生专业能力的培养过程中,会强化训练软件企业需要的相关测试技术,如:手工测试、自动化测试、接口测试等,培养内容更有针对性和方向性。高职院校软件技术专业软件测试方向的人才培养目标是培养与社会主义现代化建设要求相适应的德、智、体、美发展,适应生产、建设、管理和服务及时线需要,具有良好的职I道德和敬业精神,掌握软件开发、软件服务所需的系统基础知识和具备软件开发、测试、技术支持及销售所需系统动手能力的高素质技术技能型专门人才。高职院校比较注重学生综合能力的培养,学生的专业能力、方法能力和社会能力发展较均衡,但是专业能力不突出;软件测试培训机构比较重视学生专业能力的培养,但因为受限于培训时间、培训规模、投入资金等因素,对学生方法能力和社会能力培养的力度不足。

2.2知识传授深度及广度差异

高职院校的课程体系分为通识课程、专业课程和拓展课程,既有思想道德类、英语类、体育、数学等素质与通识课程,也有程序设计、软件工程等专业课程,以及职业指导与创业教育等拓展课程,课程开设门数一般在28门左右,还有各种竞赛和团体活动,使学生的职业能力得到了广泛发展,尤其是自学能力、分析与解决问题的方法能力、创新与沟通等社会能力得到了锻炼与提高,对学生知识传授的广度比较广,但对软件测试专业知识传授的深度不够。培训机构由于培训的内容更有针对性和方向性,所以在知识传授的深度上不断强化深入,培养的人才短期内适应软件测试岗位的各个层次,但今后职业生涯的发展会有所局限性。

2.3专业能力提升成效性差异

培训机构通常在3-6个月的短期内,对学员进行反复训练,充分强调软件测试专业能力的培养,培训课程范围窄,使学员软件测试的专业技能得到明显提高,达到企业和社会对功能测试、自动化测试、性能测试、接口测试等专业能力的要求,对学生专业能力的培养更具有速成性。高职院校学生的专业课程主要集中在大一下学期和大二整个学年,对学生专业能力的培养是循序渐进的,成效性提升速度缓慢,但是学生的专业基础知识扎实,为以后的可持续发展奠定了基础。

在线咨询