当前位置:文档之家› 软件测试方法论文

软件测试方法论文

浅析软件测试技术未来形式一、软件测试的定义经过了多年软件开发实践,软件测试的重要意义逐渐被人们普遍认识。

然而究竟什么是软件测试,这一基本概念很长时间以来存在着不同的观点。

1973年W.Hetzel曾经指出,测试是对程序或系统能否完成特定任务建立信心的过程。

1983年IEEE提出的软件工程标准术语中给软件测试下的定义是:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

”G.J.Myers则持另外观点,他认为:“程序测试是为了发现错误而执行程序的过程。

”至今,对于软件测试所有定义中比较完善的是软件测试是分析某个软件项以发现显存和需要的条件之差别并评价此软件的特性。

二、软件测试的基本原则Bill Hetzel在他的《The Complete Guide to Software Testing》一书中讲述了六条原则。

所谓测试的原则就是测试过程中内部规律的具体体现,是已经被公认的。

这些原则可以帮助我们理解测试的意义。

原则1:穷尽测试是不可能的。

原则2:测试工作具有创造性但很困难。

原则3:测试旨在防止错误的发生。

原则4:测试是有风险的。

原则5:测试需要有计划性。

原则6:测试需要有独立性三、软件测试的分类从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。

1、要执行被测软件的角度按是否需要执行被测软件的角度,可分为静态测试和动态测试。

静态测试是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。

其中包括代码测试、界面测试和文档测试3个方面。

对于代码测试,主要测试代码是否符合相应的标准和规范。

对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。

对于文档测试,主要测试用户手册和需求说明是否符合用户的实际要求。

动态测试是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。

所以,我们判断一个测试属于动态还是静态测试,唯一的标准就是看是否运行程序。

2、按阶段划分:⑴单元测试单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。

它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。

因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。

因此应用系统有一个设计很好的体系结构就显得尤为重要。

单元测试主要用白盒测试方法,一般先静态检查代码是否符合规范,然后动态地运行代码,检查其实际运行结果。

当然检查运行结果是否正确是一个最基本的要求,我们还要检查很多项,比如程序的容错处理,程序的边界值处理等。

⑵集成测试集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。

它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。

集成测试的策略主要有自顶向下和自底向上两种。

单元测试仅仅保证了模块的局部正确性。

而系统测试一般在整个系统完成之后进行,错误难以定位。

⑶确认测试集成测试完成以后,分散开发的模块被连接起来,构成完整的程序。

其中各模块之间接口存在的种种问题都以消除。

于是测试工作进入最后阶段——确认测试。

在关于什么是确认测试的众多说法中,最严明、最严格的的解释是检验所开的软件是否能按顾客提出的要求进行。

若达到这一要求,则认为卡发的软件是合格的。

因而有的软件开发部门把确认测试称为合格性测试。

确认测试主要有以下两个步骤:①确认测试准则。

②配置评审。

⑷系统测试系统测试实际上是针对系统中各个组成部分进行的综合性检验。

尽管每一个检验有着特定的目标,然而所有的检测工作都要验证系统中每个部分均已得到正确的集成,并能完成指定的功能。

3、按测试方法划分:⑴白盒测试白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

⑵黑盒测试黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。

四、软件测试的发展1、软件测试的发展史软件测试是伴随着软件的产生而产生的。

早期的软件测试较为狭隘,测试相当于“调试”,由开发人员自己完成这部分工作。

通常是形成代码、产品基本完成时才进行测试,对测试的投入非常的少。

直到1957年,软件测试才成为一种发现软件缺陷的活动。

由于缺乏软件工程的概念,测试仍旧是开发之后的事情。

1972年在北卡罗来纳大学举行了首次软件测试正式会议,1975年John Good Enough和Susan Gerhart在IEEE上发表了“Toward a Theory of Test Data Selection”(测试数据选择原理)的文章,软件测试才被确定为一种研究方向。

1979年,Glen ford Myers的《The Art of Software Testing》(软件测试艺术)是测试领域的第一本重要专著。

在这本书中,Myers以及其同事们将软件测试定义为“测试是为发现错误而执行的一个程序或者系统的过程”。

到了20世纪80年代,软件测试不再单纯是发现错误的过程,而且包含了软件质量评价的内容。

包含IEEE(Institute of Electrical and Electronic Engineers)标准、美国ANSI(American National Standard Institute)标准以及ISO(International Standard Organization)国际标准在内的各类标准相继被制定。

1983年,Bill Hetzel在《Complete Guide of Software Testing》(《软件测试完全指南》)中指出“测试是以评价一个程序或系统属性为目标的任何一种活动,测试是对软件质量的度量”。

20世纪90年代,测试工具开始盛行。

2002年,Rick何和Stefan在《Systematic Software Testing》(《系统的软件测试》)一书中将测试定义为“测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程”。

最近20年来,软件测试技术随着计算机和软件技术的飞速发展取得了很大突破,包括V模型、W模型在内的测试模型被相继总结出来。

同时,TMM(Testing Maturity Model)概念的出现标志着测试过程的改进。

在单元测试、自动化测试、负载压力测试以及测试管理方面涌现了大量优秀的软件测试工具。

2、软件测试的国内外现状⑴软件测试在软件公司占有重要地位。

在微软,一个项目组中测试工程师要远比编码工程师多,同样花在测试的时间也比花在编码的时间多。

⑵软件测试理论研究蓬勃发展。

每年举办各种各样的测试技术年会,发表了大量的软件测试研究论文,引领软件测试理论研究的国际潮流。

⑶软件测试市场繁荣。

美国有一些专业公司开发软件测试标准与测试工具,MI Compuware、MaCabe、Rational等都是著名的软件测试工具提供商,它们出品的测试工具已经占领了国际市场。

(4)我国的测试技术起步于“六五”,随着软件工程的研究而逐步发展起来。

1990年国家级的中国软件评测中心成立,测试服务逐步开展起来。

由于起步晚,因此无论在软件测试理论研究还是测试实践上,都和发达国家有较大的差距。

主要体现在对软件产品化测试的技术研究还较为贫乏,从业人员少,测试服务没有形成足够的规模等方面。

但是,随着我国软件产业的蓬勃发展及对软件质量的重视,软件测试也越来越被人们所看重,软件测试正逐步成为一个新兴的产业。

3、软件测试的发展趋势分析现今国内外的测试发展,可以看出有以下趋势:测试工作将近一步前移,不仅仅是单元测试、集成测试、系统测试和验收测试,对需求的精确性和完整性的测试技术、对系统设计的测试技术将成为新的研究热点。

软件架构师、开发工程师、QA人员和测试工程师将进行更好的融合,他们之间是伙伴而非对立的关系,因为他们的工作相互促进相互借鉴。

同时测试工程师也会尽早的介入整个工程,在软件定义阶段就要开发相应的测试方法。

测试职业将得到充分的尊重。

开发与测试人员既是矛盾体也是统一体。

以前“没能力做开发就去测试”的观点已经被现在“只有高水平的开发者才能胜任测试工作”的观点所替代。

设置独立的软件测试部门将成为越来越多的软件公司的共识。

测试部门将和开发、QA一样作为一个重要的独立部门存在。

测试外包服务将快速增长。

软件测试外包将会和软件开发外包一样,成为全球化的一种趋势,可以利用职业测试专家队伍与机构为自己的产品进行测试,节省测试费用。

五、总结经过这一门课程的学习,意识到测试并非我以为的仅仅发现软件中的错误,软件测试是分析某个软件项以发现显存和需要的条件之差别并评价此软件的特性。

软件测试也不是我以为的可有可无的工作,而是开发工作中必不可少的工作。

我也意识到了开着门课程的必要性,有利于我们对软件工程更加全面深刻的认识。

六、参考资料【1】Ron Patton 《软件测试》机械工业出版社 2002【2】Jones,C.《软件评估、基准测试与最佳实践》机械工业出版社 2003【3】麦格雷戈《面向对象的软件测试》机械工业出版社 2002。

相关主题