|
|
|
|
移动端

1.11 测试生成策略

《软件测试基础教程》第1章软件测试的基本知识,本章作为一个导引,其目的在于让读者熟悉与软件测试相关的基本概念,建立起全书的框架。在本书后续章节中将要详细阐述的问题,首先在这里被提了出来。读完这章之后,读者就能够在软件测试和软件质量方面提出一些有意义的问题。本节为大家介绍测试生成策略。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-16 21:18

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

1.11 测试生成策略

在软件测试活动中,一个重要任务就是设计测试用例。通过对被测软件执行测试用例,来判断软件是否满足需求。本书第二部分(测试生成)将详细回答“如何设计测试用例”的问题。在这里,我们只提供一个对不同测试设计策略的概览。

任何方式的测试设计都要使用一个原始依据。在最不形式化的测试方法中,原始依据存在于测试人员的心里,他们根据掌握的需求知识来设计测试。某些组织常常直接采用源自作为原始依据的需求文档,交叉采用形式化的和非形式化的方法来设计测试。在一些测试过程中,需求文档是开发用于测试设计的形式化模型的原始依据。

图1-12总结了几个测试设计策略。图中最上面一行描述了直接应用于需求文档的技术。这些技术也许是非形式化的技术,即没有采用严格的或形式化的方法就将值赋予了输入变量;也可能是先识别出输入变量,找出变量之间的相互关系,再采用形式化的技术进行测试设计,比如随机测试、因果图。第2章将介绍几种这样的技术。

 
图1-12 需求、模型与测试生成算法


另一些策略属于基于模型的测试生成(model-based test generation)技术。这些策略要求采用形式化的标记符号来模拟部分需求,这样得到的一个模型又称作这部分需求的规范,将该规范作为原始依据,就能设计出测试来。FSM、状态图、Petri网以及时间I/O自动机就是一些著名的、广泛使用的形式化标记符号,用来模拟林林总总的需求。这些标记符号属于图形符号类,尽管也存在相应的文本标记符号。此外还存在另外几种标记符号,比如统一建模语言(UML)中的顺序图和活动图,也被用来模拟某些需求。

基于谓词逻辑的语言以及代数语言,也被用来以形式化的方式表达某些需求。每一个这样的符号化工具都有其长处和不足。在通常情况下,对于大型应用程序,人们常常采用多个工具来表示需求、设计测试。本书的第3章将介绍采用FSM、状态图以及时间I/O自动机进行测试设计的算法。

另外,还存在直接从代码生成测试的技术。这类技术属于基于代码的测试生成(code-based test generation)技术。当根据测试充分性准则增强现存的测试设计时,这些技术相当有用。例如,假设已用状态图方法对程序P进行了测试,在所有的测试用例都成功执行之后,人们发现P的某些分支并没有被覆盖,也就是说,某些条件从未被判断为真或假,这时,人们可以采用基于代码的测试生成技术来设计新的测试用例,或者修正现有的测试用例,以便产生新的测试集来强使上述条件被判断为真或假(如果这种判断可行的话)。本书后面的第三部分将介绍两种这样的技术,一种基于程序变异,一种基于控制流覆盖。

基于代码的测试生成技术也同样可用于回归测试,因为常常有必要压缩回归测试的测试集规模或优化回归测试顺序。基于代码的回归测试采用4个输入:

1)将要被回归测试的程序P′;

2)因变更而导出P′的原始程序P;

3)现存的针对程序P的测试集T;

4)当针对程序P执行测试集T时得到的某些运行时信息。

这些运行时信息包括诸如语句覆盖、分支覆盖等。根据这些信息,回归测试生成算法从测试集T中选择测试用例,必须是对P′中已变更的部分或受P变更影响的那部分程序执行选出的测试用例。新产生的测试集通常是T的子集。为达到回归测试目的而压缩测试集规模的技术将在第5章中描述。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java程序员面试宝典

本书是程序员面试宝典系列中的一册,也是上一本《程序员面试宝典》的姊妹书。本书对程序设计面试中Java常见的题型和常用解答技巧进行了介绍...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊