- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 6.5-6.7白盒测试的其他方法
6.5-6.7 白盒测试的其它方法 6.5 定义/使用测试 定义/使用测试又称为数据流测试,是按照程序中的变量定义和使用的位置来选择测试路径的一种测试方法。 定义/使用测试法能够发现的错误包括: 变量被定义,但是从来没有使用。 所使用的变量没有被定义。 变量在使用之前被定义两次。 定义/使用测试涉及的两个概念: 变量定义:如果程序中某一语句执行时能够改变某个变量V的值,则称V是被该语句定义的。 变量引用:如果程序中某一语句的执行引用了内存中变量V的值,则说该语句引用变量V。 定义/使用测试案例 下图为某程序每个语句定义和引用的变量的列表。 6.6 程序片法 程序片法的思想:程序片法将一个复杂程序分解为几个相对简单的可执行程序,即程序片,这些程序片相对原来的程序来说,要简单且易于测试。 6.7 白盒测试的其他方法 1、域测试(Domain Testing) 域测试是一种基于程序结构的测试方法。 Howden把程序中出现的错误分为域错误、计算型错误和丢失路径错误三种。 如果程序的控制流有错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为路径错误,也叫做域错误。 如果对于特定输入执行的是正确路径,但由于赋值语句的错误致使输出结果不正确,则称此为计算型错误。 另外一类错误是丢失路径错误。 域测试是主要针对域错误进行的程序测试。 6.7 白盒测试的其他方法 2、程序变异测试 变异测试是一种故障驱动测试,即针对某一类特定程序故障进行的测试,变异测试也是一种比较成熟的排错性测试方法。它可以通过检验测试数据集的排错能力来判断软件测试的充分性。 其原理如下: 先介绍程序变异体的概念:假设对程序P进行一些微小改动而得到程序MP,程序MP就是程序P的一个变异体。 6.7 白盒测试的其他方法 2、程序变异测试(续) 假设程序P在测试集T上是正确的,设计某一变异体集合:M={MP|MP是P的变异体},若变异体集合M中的每一个元素在T上都存在错误,则认为源程序P的正确度较高,否则若M中的某些元素在T上运行正确,则可能存在以下一些情况: M中的这些变异体在功能上与源程序P是等价的; 现有的测试数据不足以找出源程序P与其变异体之间的差别; 源程序P可能产生故障,而其某些变异体却是正确的。 6.7 白盒测试的其他方法 2、程序变异测试(续) 测试集T和变异体集合M中的每一个变异体MP的选择都是很重要的,它们会直接影响变异测试的测试效果。 对程序进行变异的方法多种多样,具体操作要靠测试人员的实际经验。通过变异分析构造测试数据集的过程是一个循环过程,当对源程序及其变异体进行测试后,若发现某些变异体并不理想,就要适当增加测试数据,直到所有变异体达到理想状态,即变异体集合中的每一个变异体在T上都存在错误。 6.7 白盒测试的其他方法 3、符号测试 符号测试是基于代数运算的一种结构测试方法。它的基本思想是允许程序的输入不仅仅是数值数据,而且包括符号值。 普通测试执行的是算术运算,符号测试则是执行代数运算。 符号测试方法使用问题的关键在于开发出比传统的编译器功能更强,能够处理符号运算的编译器和解释器。 补充内容:循环测试方法 从本质上说,循环测试的目的就是检查循环结构的有效性。 通常,循环可以划分为简单循环、嵌套循环、串接循环和 非结构循环4类。 (1)测试简单循环。设其循环的最大次数为n ,可采用以下测试集: 跳过整个循环; 只循环一次; 只循环两次; 循环 m 次,其中mn; 分别循环 n-1、n 和 n+1 次。 补充内容:循环测试方法(续) (2)测试嵌套循环。如果将简单循环的测试方法用于嵌套循环,可能的测试次数会随嵌套层数成几何级数增加。 此时可采用以下办法减少测试次数: 测试从最内层循环开始,所有外层循环次数设置为最小值; 对最内层循环按照简单循环的测试方法进行; 由内向外进行下一个循环的测试,本层循环的所有外层循环仍取最小值,而由本层循环嵌套的循环取某些“典型”值; 重复上一步的过程,直到测试完所有循环。 (3)测试串接循环。若串接的各个循环相互独立,则可分别采用简单循环的测试方法;否则采用嵌套循环的测试方法。 (4)对于非结构循环这种情况,无法进行测试,需要按结构化程序设计的思想将程序结构化后,再进行测试。 补充内容: Z路径覆盖 Z路径覆盖是路径覆盖的一种变体,它是将程序中的循环结构简化为选择结构的一种路径覆盖。 循环简化的目的是限制循环的次数,无论循环的形式和循环体实际执行的次数,简化后的循环测试只考虑执行循环体一次和零次(不执行)两种情况,即考虑执行时进入循环体一次和跳过循环体这两种情况。 补充内容: 白盒测试的综合策略 在白盒测试中,可以使用各种测试方法的综合策略如下: 在测试中,应尽量先用工具进行静态结构分析。 测
原创力文档


文档评论(0)