5测试基础-白盒测试解决方案.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 其他程序结构的测试方法 程序变异 是一种错误驱动测试,针对某类特定程序错误实现测试。 程序强变异 程序弱变异 (可参考郑人杰:计算机软件测试技术 清华大学出版社) * 面向对象的白盒测试 对OO软件的类测试相当于传统软件的单元测试。和传统软件的单元测试不同,他往往关注模块的算法细节和模块接口间流动的数据,OO软件的类测试是由封装在类中的操作和类的状态行为所驱动的。OO软件测试的特点: 因为属性和操作是被封装的,对类之外操作的测试通常是徒劳的。封装使对对象的状态快照难于获得。 继承也给测试带来了难度,即使是彻底复用的,对每个新的使用语境也需要重新测试。 多重继承更增加了需要测试的语境的数量,使测试进一步复杂化。如果从超类导出的测试用例被用于相同的问题域,有可能对超类导出的测试用例集可以用于子类的测试,然而,如果子类被用于完全不同的语境,则超类的测试用例将没有多大用途,必须设计新的测试用例集。 面向对象的白盒测试 * 类测试方式 类测试一般有两种主要的方式: 功能性测试和结构性测试,即对应于传统结构化软件的黑盒测试和白盒测试。 功能性测试以类的规格说明为基础,它主要检查类是否符合其规格说明的要求。例如,对于Stack类,即检查它的操作是否满足LIFO规则; 结构性测试则从程序出发,它需要考虑其中的代码是否正确,同样是Stack类,就要检查其中代码是否动作正确且至少执行过一次。 面向对象的白盒测试 * 结构性测试方法(白盒测试) 结构性测试对类中的方法进行测试,它把类作为一个单元来进行测试。测试分为两层: 第一层考虑类中各独立方法的代码; 第二层考虑方法之间的相互作用。 方法的单独测试 结构性测试的第一层是考虑各独立的方法,这可与过程的测试采用同样的方法。 两者之间最大的差别在于:方法改变了它所在实例的状态,这就要取得隐藏的状态信息来估算测试的结果,传给其它对象的消息被忽略,而以桩来代替,并根据所传的消息返回相应的值,测试数据要求能完全覆盖类中代码,可以用传统的测试技术来获取。 面向对象的白盒测试 * 方法的综合测试 第二层要考虑一个方法调用本对象类中的其它方法和从一个类向其它类发送信息的情况。 单独测试一个方法时,只考虑其本身执行的情况。而没有考虑动作的顺序问题,测试用例中加入了激发这些调用的信息,以检查它们是否正确运行了。 对于同一类中方法之间的调用,一般只需要极少甚至不用附加数据,因为方法都是对类进行存取,故这一类测试的准则是要求遍历类的所有主要状态。 结构性测试方法(白盒测试) 面向对象的白盒测试 * 白盒测试工具: 内存资源泄漏检查:Numega中的bouncechecker,Rational的Purify等; 代码覆盖率检查:Numega中的truecoverage,Rational的Purecoverage,Telelogic公司的logiscope,Macabe公司的Macabe等; 开源覆盖率测试软件gCov等。 * 总结 控制结构测试 路径测试 ?利用流图表示控制逻辑 ?根据流图标识独立路径 ?确定覆盖测试路径上界的计算(环复杂度计算) ?用基本路径法导出测试案例的步骤 条件测试 数据流 测试 循环测试 分支测试:真假分支必须至少执行一次的路径策略 域测试:对于大于、小于和等于值的测试路径策略 由变量的定义到变量的使用,构成DU链,覆盖每个DU链至少一次。用此方法为包含循环和嵌套语句的程序选择测试路径的策略 对于简单循环、嵌套循环、串接循环和无结构循环的路径选择策略 * 判定/条件覆盖有缺陷:从表面看,它测试了所有条件的取值,但事实并非如此,往往某些条件掩盖了另一些条件,会遗漏某些条件取值错误的情况。为彻底地检查所有条件的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。 * 语句覆盖中不能检测的错 1)如果第一个条件语句中的AND错误地写成OR,则第二个测试用例能发现; 2)如第三个条件语句中X>1误写成X>0,第一个测试用例能暴露它; 3)沿着路径abd执行时,X的值应该保持不变,如果这一方面有错误,测试数据也不能发现。 * 独立路径必须包含一条在定义之前不曾用到的边。 * 一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。 * 注意(E3=E4)的“T”意味着“=”,而(E3=E4)的“F”意味着“>”或“<”。分别用(T,=)和(F,=)替换(T,T)和(F,T),并用(T,<)和(T,>)替换(T,F),用(F,<)和(F,>)替换(F,F),就得到C2的约束集:

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档