对软件测试的认识及未来的发展

文对软件测试的认识及未来的发展

对软件测试的认识及未来的发展

一、软件测试的定义

经过了多年软件开发实践,软件测试的重要意义逐渐被人们普遍认识。然而究竟什么是软件测试,这一基本概念很长时间以来存在着不同的观点。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

文对软件测试的认识及未来的发展

对软件测试的认识及未来的发展

一、软件测试的定义

经过了多年软件开发实践,软件测试的重要意义逐渐被人们普遍认识。然而究竟什么是软件测试,这一基本概念很长时间以来存在着不同的观点。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


    相关文章

    信管专业大二认识实习报告

    认识实习时间:十一月一日至十一月五日 认识实习地点:xx市xx软件有限责任公司、xx船厂有限责任公司(xxxx船舶制造有限公司)、xx市xx铝业有限公司 认识实习任务:主要是了解今后实习时应当做的事,为今后的实习做准备。另外,向已经工作的前 ...

    软件工程认识实习报告

    信息科学与技术学院15软件工程1班 姓 名 学 号 电 话 认 知 实 习 心 得 体 会 [1**********] [1**********] :李甜雅 : : 正文: 这个周三是一个特殊的日子,我们软件工程1班终于迎来了期待已久的属于 ...

    工程师未来五年职业生涯规划范文3篇

    工程师未来五年职业生涯规划范文3篇1 一位哲人说过:"走好每一步,就是你的人生.",人生之路说长也长,是因为这是你一生所要走的艰难险阻的跋涉; 人生之路说短也短,因为你度过的每一天就是你的人生.每个人都在计划自己的人生, ...

    从测控技术与仪器专业的内涵和外延浅谈我未来的设想

    从测控技术与仪器专业的内涵和外延浅谈 我未来的设想 年级:2015级 学号:[1**********] 姓名:骆泽钰 测控技术与仪器专业导论论文 一. 引言 随着社会的快速发展,人们在工业方面的成就也越来越多.与此同时也面临着一个问题,工业 ...

    IMAP潜能测试

    "IMAP潜能测试"是采用了一套心理测量学的理论和方法,以及教育学.心理学的相关理论设计而成.可以说,心理测量学在近一个世纪的发展中,形成了一门比较成熟的学问.基于这种理论所开发的各种各样的心理测量工具,为政府决策.企业 ...

    [网络信息安全的重要性与发展趋势]

    题目(中文) 计算机导论课程报告 :网络信息安全的重要性与发展趋势 学院(系) 软件学院 专业 信息管理与信息系统 班级 学号 姓名 指导教师 2015年11月04日 摘 要 本文主要介绍了计算机的发展历史,现状及发展趋势.计算机是20世纪 ...

    大学毕博平台思修第一单元测试答案

    名称 第一单元测试 说明 多次尝试 禁止.此测试只能进行一次. 强制完成 该测试可以并在以后继续进行. Show 问题完成状态: 问题 1 问题 1 一个社会精神文明发展水平的重要衡量标志是( ). 问题 1 答案 经济发展水平 传统文化积 ...

    中小学无人机创客实验室建设方案

    专业服务教育,提升学生品质 空中机器人中小学创客实验室建设方案 (初稿) 河北恒拓电子科技有限公司 2017年8月17日 一.背景 空中机器人又叫无人机,近年来在军用机器人家族中,无人机是科研活动最活跃.技术进步最大.研究及采购经费投入最多 ...

    大学生职业规划(软件)

    大学生职业规划设计 江西农业大学职业生涯规划课程作业 作品名称: 大学生职业规划设计 作者姓名: 彭胜 作者班级: 软件1104班 电子邮箱:799275381@qq.com 前言 ............................. ...