软件测试技术浅析

软件测试技术浅析

作者:张云岗 刘春茂

内容摘要:

软件质量是软件的生命,保证软件质量的关键一步是软件测试,本文描述了软件测试的基本概念及其重要性和必要性,阐述了软件测试的静态测试、动态测试,以及软件测试的一般过程和步骤;并且探讨软件测试的发展趋势及其新的研究动向,包括构件测试和Veb Services测试等,最后总结了软件测试中应该注意的一些实际问题,比如学习和你所测试的软件产品相关的知识及跟相关人员交流等。

关键词:

软件测试 黑盒测试 白盒测试 构件测试 Veb Services测试

0.引言

随着社会的不断进步和计算机科学技术的飞速发展,计算机在人类生活中的作用越来越重要了,而软件作为计算机的灵魂,在其中起着举足轻重的作用。软件的失效有可能造成巨大的经济损失,甚至危及人的生命财产安全。由于软件开发的各个阶段都需要人的参与,因为人的工作和通信都不可能完美无缺,出现错误是在所难免的。而软件测试则能够发现软件中隐藏的许多错误和缺陷,因此软件测试是保证软件质量和可靠性的重要手段。随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。为了尽可能多地找出程序中的错误,生产出高质量的软件产品,很有必要研究软件测试技术及其发展动向。

1. 软件测试

软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现错误的过程。

另外,需要指出的是软件测试是提高软件产品质量的必要条件而非充分条件,软件测试是提高产品质量最直接、最快捷的手段,但绝不是一个根本手段。

2. 软件测试技术

2.1 软件测试的方法

软件测试的方法原则上可以分为两大类,即静态测试和动态测试。静态测试是对被测软件进行特性分析的方法的总称,主要特点是:不利用计算机运行被测试的软件,

而针对需求说明、设计文件等文档和源程序进行人工检查和静态分析,以保证软件质量。静态测试能够有效地发现软件中30%到70%的逻辑设计错误和编码错误。动态测试是在计算机上实际运行被测试的软件,通过选择适当的测试用例,判定执行结果是否符合要求,从而测试软件的正确性、可靠性和有效性。动态测试的两种主要方法是白盒测试和黑盒测试。

白盒测试是对软件内部工作过程的细致检查,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同测试点检查程序的状态,确定实际的状态是否与预期的状态一样,因此,白盒测试又称为结构测试或逻辑驱动测试。白盒测试一般选用可以有效揭露隐藏错误的路径进行测试,所以如何设计软件测试用例是这种方法的关键。

黑盒测试则着眼于软件的外部结构,不考虑程序的逻辑结构和内部特性,仅依据软件的需求规格说明书,在软件界面上检查程序的功能是否符合要求,因此黑盒测试又叫做功能测试或数据驱动测试。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。

白盒、黑盒测试不能相互替代,而应互为补充,在测试的不同阶段为发现不同类型的错误而灵活选用。

2.2 软件测试过程

软件测试过程一般按五个步骤进行,即单元测试、集成测试、系统测试、验收测试和回归测试,如图所示:

软件测试过程图

2.2.1 单元测试

单元测试是指依据详细的设计描述,对每一个功能相对独立的程序模块进行测试,检查各个单元是否正确地实现规定的功能。单元测试一般在完成某一程序模块的编程后由程序员立即进行,主要对程序内部结构进行检验,着重发现和解决代码编写过程中的差错,多采用白盒测试法。

2.2.2 集成测试

集成测试,也叫组装测试或联合测试。是指一个应用系统的各个部件的联合测试,也就是在将单元测试无误的程序模块组装成软件系统的过程中,对程序模块间的接口和通讯方面的正确性的检查,以决定他们能否在一起共同工作并没有冲突。其中的部件可以是代码块、独立的应用程序、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。集成测试一般在完成了软件的所有或大部分编码工作后,由不同开发人员共同完成,是在单元测试完成之后进行的。

2.2.3 系统测试

系统测试是将通过集成测试的软件作为一个元素,在实际运行环境中,与计算机硬件、外设、某些支持软件、数据和人员等元素结合在一起,对整个软件系统进行的测试。与前两种测试不同,实施系统测试的人员应是最终用户代表。其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。

2.2.4 验收测试

验收测试是向未来的用户表明系统能够像预定要求那样工作。经系统测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。其目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

2.2.5 回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来

改进回归测试的效率和有效性是非常有意义的。

3.软件测试技术的发展趋势

随着IT行业和软件的发展,软件趋向大型化、高复杂度,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。这时,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,软件开发人员和测试人员开始一起来探讨软件开发与测试问题了。从软件开发及测试的发展过来来看,软件测试的发展趋势:向软件开发的前期发展,与软件开发的设计和编码阶段相融合。既在软件开发和设计阶段考虑软件的后期测试问题,从而设计出便于后期测试的软件,这样软件本身包含的缺陷就会相应减少,将会给后期的软件测试带来诸多便利。

于是就出现了软件易测试性设计,软件易测试性设计将有效地提高软件测试的效率和质量,提高软件设计和编程的质量,进而提高软件产品的质量。软件的易测试性设计方法包括合约式设计、内建式测试和内建式自测试等几种方法。

4. 软件测试技术新的研究动向

大多数人以为,开发一个程序是困难的,测试一个程序则比较容易,其实不然。设计测试用例是一项细致并需要高度技巧的工作,稍有不慎就会顾此失彼,出现疏漏。不论是黑盒测试方法还是白盒测试方法,由于测试情况数量巨大,都不可能进行彻底的测试。所谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为“穷举测试”。

在实际测试中,穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的。当然就不能够保证被测试程序中不存在遗留的错误。软件测试的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试。要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误。掌握好测试量是至关重要的,一位有经验的软件开发管理人员在谈到软件测试时曾这样说过:“不充分的测试是愚蠢的,而过度的测试是一种罪孽”。测试不足意味着让用户承担隐藏错误带来的危险,过度测试则会浪费许多宝贵的资源。

4.1 构件测试

社会信息化发展对软件的开发方法与生产能力提出了新的要求,软件复用技术也

被提上日程,软件构件概念的提出为软件复用提供了技术基础。构件的高可靠性是构件能被成功复用的前提。构件测试是保障和提高构件的可靠性的重要手段。构件的开发者和复用者必须对构件进行充分的测试,以确保它在新的环境中工作正常。

国际上于20世纪90年代后期对构件测试开展了研究。大体上,对构件的测试可以从以下几个方面来进行分类:

(1)从构件测试的内容可分为:构件内部实现细节的测试,构件接口的测试,构件组装(构架)的测试。

(2)从测试者与构件的关系可分为:构件开发者的测试(拥有构件的源代码)、构件复用者和第三方的测试(没有源代码)。

(3)从测试过程中所采用的技术手段可分为:基于变异测试的方法,基于构件状态机的方法,对构件的回归测试,以及构件的易测试性设计等。

4.2 Web Services 测试

Web Services是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。由于Web Services的自身特点,使得Web Services测试成为软件测试的一个新挑战。目前,面向Web Services测试的研究比较多,而且主要是侧重于功能性的测试,自动化测试的研究还比较少。

由于Web Services受关注程度日益提升,再加上它使用了包括SOAP、WSDL 和UDDI 在内的标准协议。这些标准协议体现了互操作性,并用于应用的开发及运行时Web Services的选择和调用。Web Services的测试和评估对服务提供者和服务使用者来说都是相当重要的。对用户而言,通常需要合并多个Web Services来满足他们的需求,所谓的服务聚合就是根据用户的要求合并现存的Web Services。这时需要一种标准语言来描述不同的Web Services是如何集成在一起的,即描述Web Services流的语言。当前有两种常见的Web Services流描述语言WSFL和XLANG。如果让用户自己来描述Web Services流,很可能会导致错误。在发现错误之前,流中的许多Web Services已经被调用了,其后果会导致事务回滚困难、引起网络拥塞,从而造成资源浪费。

5.软件测试过程中应注意的问题

要想成为好的测试人员,首先要了解被测试的软件的相关知识;了解软件产品的架构是什么样的;了解软件的市场需求,在接触软件之初可以多看看用户的反馈信息,这些才是用户最关心的,也是在测试中需要注意的问题,满足客户是最大的需要。但

是了解软件需求之后要学会多读些软件系统的技术文档,软件设计文档,这些文档可以帮助我们了解产品是如何被开发出来的,以及投入使用后是如何工作的。还有多看看公司 Bug 库中的问题,这些存在的问题可以帮助我们了解软件产品那些地方存在缺陷,软件系统那些地方会出现错误。

软件是运行在一个大环境中,如果对操作系统不熟悉,那么有些问题我们就不能从一个更广阔的层面考虑,学习操作系统的知识,有助于发现缺陷,定位问题更加准确。比如软件运行在 Windows或者Linux,如果不懂操作系统,我们就无法建立测试环境,有些时候软件的组件发生问题,可能就是系统配置造成的,如果对系统不熟悉,就会把外在原因归结为软件本身,从而造成判断错误不能对软件进行准确测试。所以我们要学习和软件系统相关的知识,比如编程,网络,数据库等。不一定要学习到非常精通的程度,只是通过这些扩展的知识面在发现问题、解决问题上不局限在狭小的圈子里。

另外,和一切相关的人员交流,不同的交流渠道,获取的信息是不同的,角度也不相同。和客户交流,我们会在测试中从客户的角度发现问题;和开发人员交流,我们会了解开发人员怎么实现软件功能的;和项目管理人员交流,我们会知道开发进度以及遇到的困难。因此,在测试过程中我们要多与相关人员交流以达到测试最佳效果。

6.结束语

软件测试是一项费时、费力并且单调乏味的活动,测试人员需要设计、执行、分析大量的测试用例。软件测试的自动化将有效地减轻测试人员的劳动强度,提高测试的效率和质量,从而节省软件开发的成本,提高软件的质量。随着软件技术的不断向前发展,构件、Web Services等新技术的应用为软件测试带来新的问题和挑战,也为软件测试的发展带来新的机遇。软件测试技术自身的不断发展对软件开发方法学将产生影响。随着软件易测试性概念的提出和研究的不断深入,软件的易测试性将成为衡量软件质量的一项指标。软件易测试性分析技术将为度量软件的易测试性,进而为改进和提高软件测试的过程乃至软件开发的过程提供帮助。软件测试目前呈现向软件开发的前期发展、与软件开发的设计阶段和编码阶段相融合的趋势。软件易测试性设计技术将帮助软件开发者在软件中嵌入测试信息,开发具有自测试能力,并且能够向外界提供相应测试信息的软件实体(如构件),为解决基于构件、Web Services等新技术的软件开发方法所带来的新问题提供有前途的解决办法。

参考文献:

[1] 刘瑞挺等. 软件开发的创新思维[M]. 北京: 电子工业出版社. 2003年

[2] 朱少民. 软件测试方法和技术[M].北京: 清华大学出版社. 2005年

[3] 张海藩. 软件工程[M]. 北京: 清华大学出版社. 1998年

[4] 徐芳. 软件测试技术[M]. 北京: 机械工业出版社. 2006年

[5] 张小松、王钰等. 软件测试[M]. 北京: 机械工业出版社.2006年

[6] 席相霖等. 快速软件开发有效控制与完成进度计划[M]. 北京:电子工业出版

社.2002年

[7] 张克东.软件工程与软件测试自动化教程[M].北京:电子工业出版社. 2002年

软件测试技术浅析

作者:张云岗 刘春茂

内容摘要:

软件质量是软件的生命,保证软件质量的关键一步是软件测试,本文描述了软件测试的基本概念及其重要性和必要性,阐述了软件测试的静态测试、动态测试,以及软件测试的一般过程和步骤;并且探讨软件测试的发展趋势及其新的研究动向,包括构件测试和Veb Services测试等,最后总结了软件测试中应该注意的一些实际问题,比如学习和你所测试的软件产品相关的知识及跟相关人员交流等。

关键词:

软件测试 黑盒测试 白盒测试 构件测试 Veb Services测试

0.引言

随着社会的不断进步和计算机科学技术的飞速发展,计算机在人类生活中的作用越来越重要了,而软件作为计算机的灵魂,在其中起着举足轻重的作用。软件的失效有可能造成巨大的经济损失,甚至危及人的生命财产安全。由于软件开发的各个阶段都需要人的参与,因为人的工作和通信都不可能完美无缺,出现错误是在所难免的。而软件测试则能够发现软件中隐藏的许多错误和缺陷,因此软件测试是保证软件质量和可靠性的重要手段。随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。为了尽可能多地找出程序中的错误,生产出高质量的软件产品,很有必要研究软件测试技术及其发展动向。

1. 软件测试

软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现错误的过程。

另外,需要指出的是软件测试是提高软件产品质量的必要条件而非充分条件,软件测试是提高产品质量最直接、最快捷的手段,但绝不是一个根本手段。

2. 软件测试技术

2.1 软件测试的方法

软件测试的方法原则上可以分为两大类,即静态测试和动态测试。静态测试是对被测软件进行特性分析的方法的总称,主要特点是:不利用计算机运行被测试的软件,

而针对需求说明、设计文件等文档和源程序进行人工检查和静态分析,以保证软件质量。静态测试能够有效地发现软件中30%到70%的逻辑设计错误和编码错误。动态测试是在计算机上实际运行被测试的软件,通过选择适当的测试用例,判定执行结果是否符合要求,从而测试软件的正确性、可靠性和有效性。动态测试的两种主要方法是白盒测试和黑盒测试。

白盒测试是对软件内部工作过程的细致检查,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同测试点检查程序的状态,确定实际的状态是否与预期的状态一样,因此,白盒测试又称为结构测试或逻辑驱动测试。白盒测试一般选用可以有效揭露隐藏错误的路径进行测试,所以如何设计软件测试用例是这种方法的关键。

黑盒测试则着眼于软件的外部结构,不考虑程序的逻辑结构和内部特性,仅依据软件的需求规格说明书,在软件界面上检查程序的功能是否符合要求,因此黑盒测试又叫做功能测试或数据驱动测试。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。

白盒、黑盒测试不能相互替代,而应互为补充,在测试的不同阶段为发现不同类型的错误而灵活选用。

2.2 软件测试过程

软件测试过程一般按五个步骤进行,即单元测试、集成测试、系统测试、验收测试和回归测试,如图所示:

软件测试过程图

2.2.1 单元测试

单元测试是指依据详细的设计描述,对每一个功能相对独立的程序模块进行测试,检查各个单元是否正确地实现规定的功能。单元测试一般在完成某一程序模块的编程后由程序员立即进行,主要对程序内部结构进行检验,着重发现和解决代码编写过程中的差错,多采用白盒测试法。

2.2.2 集成测试

集成测试,也叫组装测试或联合测试。是指一个应用系统的各个部件的联合测试,也就是在将单元测试无误的程序模块组装成软件系统的过程中,对程序模块间的接口和通讯方面的正确性的检查,以决定他们能否在一起共同工作并没有冲突。其中的部件可以是代码块、独立的应用程序、网络上的客户端或服务器端程序。这种类型的测试尤其与客户服务器和分布式系统有关。集成测试一般在完成了软件的所有或大部分编码工作后,由不同开发人员共同完成,是在单元测试完成之后进行的。

2.2.3 系统测试

系统测试是将通过集成测试的软件作为一个元素,在实际运行环境中,与计算机硬件、外设、某些支持软件、数据和人员等元素结合在一起,对整个软件系统进行的测试。与前两种测试不同,实施系统测试的人员应是最终用户代表。其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。

2.2.4 验收测试

验收测试是向未来的用户表明系统能够像预定要求那样工作。经系统测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。其目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

2.2.5 回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来

改进回归测试的效率和有效性是非常有意义的。

3.软件测试技术的发展趋势

随着IT行业和软件的发展,软件趋向大型化、高复杂度,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。这时,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,软件开发人员和测试人员开始一起来探讨软件开发与测试问题了。从软件开发及测试的发展过来来看,软件测试的发展趋势:向软件开发的前期发展,与软件开发的设计和编码阶段相融合。既在软件开发和设计阶段考虑软件的后期测试问题,从而设计出便于后期测试的软件,这样软件本身包含的缺陷就会相应减少,将会给后期的软件测试带来诸多便利。

于是就出现了软件易测试性设计,软件易测试性设计将有效地提高软件测试的效率和质量,提高软件设计和编程的质量,进而提高软件产品的质量。软件的易测试性设计方法包括合约式设计、内建式测试和内建式自测试等几种方法。

4. 软件测试技术新的研究动向

大多数人以为,开发一个程序是困难的,测试一个程序则比较容易,其实不然。设计测试用例是一项细致并需要高度技巧的工作,稍有不慎就会顾此失彼,出现疏漏。不论是黑盒测试方法还是白盒测试方法,由于测试情况数量巨大,都不可能进行彻底的测试。所谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为“穷举测试”。

在实际测试中,穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的。当然就不能够保证被测试程序中不存在遗留的错误。软件测试的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试。要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误。掌握好测试量是至关重要的,一位有经验的软件开发管理人员在谈到软件测试时曾这样说过:“不充分的测试是愚蠢的,而过度的测试是一种罪孽”。测试不足意味着让用户承担隐藏错误带来的危险,过度测试则会浪费许多宝贵的资源。

4.1 构件测试

社会信息化发展对软件的开发方法与生产能力提出了新的要求,软件复用技术也

被提上日程,软件构件概念的提出为软件复用提供了技术基础。构件的高可靠性是构件能被成功复用的前提。构件测试是保障和提高构件的可靠性的重要手段。构件的开发者和复用者必须对构件进行充分的测试,以确保它在新的环境中工作正常。

国际上于20世纪90年代后期对构件测试开展了研究。大体上,对构件的测试可以从以下几个方面来进行分类:

(1)从构件测试的内容可分为:构件内部实现细节的测试,构件接口的测试,构件组装(构架)的测试。

(2)从测试者与构件的关系可分为:构件开发者的测试(拥有构件的源代码)、构件复用者和第三方的测试(没有源代码)。

(3)从测试过程中所采用的技术手段可分为:基于变异测试的方法,基于构件状态机的方法,对构件的回归测试,以及构件的易测试性设计等。

4.2 Web Services 测试

Web Services是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。由于Web Services的自身特点,使得Web Services测试成为软件测试的一个新挑战。目前,面向Web Services测试的研究比较多,而且主要是侧重于功能性的测试,自动化测试的研究还比较少。

由于Web Services受关注程度日益提升,再加上它使用了包括SOAP、WSDL 和UDDI 在内的标准协议。这些标准协议体现了互操作性,并用于应用的开发及运行时Web Services的选择和调用。Web Services的测试和评估对服务提供者和服务使用者来说都是相当重要的。对用户而言,通常需要合并多个Web Services来满足他们的需求,所谓的服务聚合就是根据用户的要求合并现存的Web Services。这时需要一种标准语言来描述不同的Web Services是如何集成在一起的,即描述Web Services流的语言。当前有两种常见的Web Services流描述语言WSFL和XLANG。如果让用户自己来描述Web Services流,很可能会导致错误。在发现错误之前,流中的许多Web Services已经被调用了,其后果会导致事务回滚困难、引起网络拥塞,从而造成资源浪费。

5.软件测试过程中应注意的问题

要想成为好的测试人员,首先要了解被测试的软件的相关知识;了解软件产品的架构是什么样的;了解软件的市场需求,在接触软件之初可以多看看用户的反馈信息,这些才是用户最关心的,也是在测试中需要注意的问题,满足客户是最大的需要。但

是了解软件需求之后要学会多读些软件系统的技术文档,软件设计文档,这些文档可以帮助我们了解产品是如何被开发出来的,以及投入使用后是如何工作的。还有多看看公司 Bug 库中的问题,这些存在的问题可以帮助我们了解软件产品那些地方存在缺陷,软件系统那些地方会出现错误。

软件是运行在一个大环境中,如果对操作系统不熟悉,那么有些问题我们就不能从一个更广阔的层面考虑,学习操作系统的知识,有助于发现缺陷,定位问题更加准确。比如软件运行在 Windows或者Linux,如果不懂操作系统,我们就无法建立测试环境,有些时候软件的组件发生问题,可能就是系统配置造成的,如果对系统不熟悉,就会把外在原因归结为软件本身,从而造成判断错误不能对软件进行准确测试。所以我们要学习和软件系统相关的知识,比如编程,网络,数据库等。不一定要学习到非常精通的程度,只是通过这些扩展的知识面在发现问题、解决问题上不局限在狭小的圈子里。

另外,和一切相关的人员交流,不同的交流渠道,获取的信息是不同的,角度也不相同。和客户交流,我们会在测试中从客户的角度发现问题;和开发人员交流,我们会了解开发人员怎么实现软件功能的;和项目管理人员交流,我们会知道开发进度以及遇到的困难。因此,在测试过程中我们要多与相关人员交流以达到测试最佳效果。

6.结束语

软件测试是一项费时、费力并且单调乏味的活动,测试人员需要设计、执行、分析大量的测试用例。软件测试的自动化将有效地减轻测试人员的劳动强度,提高测试的效率和质量,从而节省软件开发的成本,提高软件的质量。随着软件技术的不断向前发展,构件、Web Services等新技术的应用为软件测试带来新的问题和挑战,也为软件测试的发展带来新的机遇。软件测试技术自身的不断发展对软件开发方法学将产生影响。随着软件易测试性概念的提出和研究的不断深入,软件的易测试性将成为衡量软件质量的一项指标。软件易测试性分析技术将为度量软件的易测试性,进而为改进和提高软件测试的过程乃至软件开发的过程提供帮助。软件测试目前呈现向软件开发的前期发展、与软件开发的设计阶段和编码阶段相融合的趋势。软件易测试性设计技术将帮助软件开发者在软件中嵌入测试信息,开发具有自测试能力,并且能够向外界提供相应测试信息的软件实体(如构件),为解决基于构件、Web Services等新技术的软件开发方法所带来的新问题提供有前途的解决办法。

参考文献:

[1] 刘瑞挺等. 软件开发的创新思维[M]. 北京: 电子工业出版社. 2003年

[2] 朱少民. 软件测试方法和技术[M].北京: 清华大学出版社. 2005年

[3] 张海藩. 软件工程[M]. 北京: 清华大学出版社. 1998年

[4] 徐芳. 软件测试技术[M]. 北京: 机械工业出版社. 2006年

[5] 张小松、王钰等. 软件测试[M]. 北京: 机械工业出版社.2006年

[6] 席相霖等. 快速软件开发有效控制与完成进度计划[M]. 北京:电子工业出版

社.2002年

[7] 张克东.软件工程与软件测试自动化教程[M].北京:电子工业出版社. 2002年


相关内容

  • 关于网络信息安全技术体系的优化浅析
  • [摘要]本文首先对我国网络信息技术安全现状进行总结,对计算机网络信息安全体系的完善进行分析,对于如何切实加强网络病毒的防范工作,对计算机系统安全性设计和配置优化,对路由器安全性防护过程进行探讨. [关键词]网络信息;安全技术;体系 1.引言 随着社会经济的不断发展,以及科学技术的进步,信息技术已经逐 ...

  • 浅析组态软件的发展趋势
  • 第21卷第2期2008年3月 机电产品开发与创新 Development&InnovationofMachinery&ElectricalProducts Vol.21,No.2・产品与市场Mar.,2008・ 浅析组态软件的发展趋势 孙立军1,丁伟玲2 (1.山东经贸职业学院,山东 ...

  • 浅析软件测试技术现状
  • ·综述· 浅析软件测试技术现状 李静,郭晓磊 摘 (开封大学软件职业技术学院,河南开封475004) 要:软件测试被定义为是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量.随着测试工具 盛行,Rick和Stefan在<系统的软件测试>一书中对软件测试做了进一步诠释 ...

  • 浅析校园网络安全现状
  • ■高校之窗 浅析校园网络安全现状 宋照文万玮 (江苏盐城技师学院江苏盐城224002) 摘要:本文主要分析了近年来校园网络安全面临的一些问题与风险,提出相应的建议.关键词:校园网安全:安全风险:网络安全管理 引言随着科学技术的飞速发展,校园网建设与应用的不断普及成熟,网络安全问题却日益突显.据公安部 ...

  • 浅析会计电算化系统与会计教学中遇到的问题与对策
  • 浅析会计电算化系统与会计教学中遇到的问题与对策 [论文关键词]会计电算化 会计教学 [论文摘 要]会计电算化是会计工作的发展趋势,也是会计专业学生的必修课,本文主要分析会计电算化系统在会计专业教学中,所遇到的问题与对策,并提出了在会计电算化系统下如何加强和完善会计教学的效果问题,以确保中专班学生在学 ...

  • 浅析会计电算化工作中存在的问题及改进措施
  • 摘要:当前,会计电算化已成为会计工作的主要工具,它不仅提高了会计核算的质量.减轻了的会计人员的劳动强度,而且由于计算机运行速度快,大大提高了会计信息的及时性.准确性和完整性,为会计人员参与经营管理决策创造了有利条件.但由于财务工作本身的特点,网络的迅速发展.电子商务的迅速兴起等,一些先进的.现代化的 ...

  • 浅析手机APP开发的发展现状
  • 浅析手机APP开发的发展现状 在移动互联网飞速发展的今天,智能手机迅速普及,手机软件随着智能手机而走进千家万户,人们的消费理念也随之改变,消费视线有PC端逐渐转移到移动端,可以说手机App开发软件已成为人们享受生活的一种方式.商家纷纷看中这一商机,都想借助手机App软件开发来提高自己的客户粘性,带来 ...

  • [CAPESE 知识分享] 美军[软件系统安全性手册]浅析(一)
  • <软件系统安全性手册>是美国三军联合开发的技术文件,对提高武器装备软件开发的安全性有着举足轻重的作用和意义.下面我们将分期对该手册进行介绍与分析. 1. 概述随着国防现代化和装备现代化,计算机软件在现代化装备中的应用越来越广泛,其所起的作用越来越重要.由于在计算机应用系统中软件的可靠性比 ...

  • 浅析民用建筑安全性鉴定
  • 龙源期刊网 http://www.qikan.com.cn 浅析民用建筑安全性鉴定 作者:朱丑元 来源:<建筑工程技术与设计>2014年第36期 摘 要:主要介绍结构安全性鉴定,并结合工程实例论述了安全性鉴定的流程及重要性. 关键词:结构鉴定.检测原则.安全性评级 一.引言: 结构鉴定是 ...