- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
白盒测试技术.doc
实验
1 实验要求与目的
●
●熟悉常用的白盒测试技术;
●掌握逻辑覆盖的不同标准及原理,能够设计测试用例;
2 实验原理与背景知识2.1 白盒测试
白盒测试也称结构测试或逻辑驱动测试,它按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。它关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子,如图1所示
白盒测试通常可分为静态测试和动态测试两类方法,其中静态测试不要求实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,从而达到发现程序错误的过程。
白盒测试的测试方法有代码检查法、静态结构分析法、逻辑覆盖法、基本路径测试法、域测试法、符号测试法、数据流测试法、Z路径覆盖法、程序变异法等等。
2.2 代码检查法
代码检查是静态测试的主要方法,包括代码走查、桌面检查、流程图审查等。代码检查主要检查代码和设计意图的一致性、代码结构的合理性、代码编写的标准性和可读性、代码逻辑表达的正确性等方面,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
代码检查应该在编译和动态测试之前进行,在检查前,应该准备好需求文档、程序设计文档、程序的源代码清单、代码编写标准和代码缺陷(错误)检查表。
在实际使用中,代码检查法能够快速找到缺陷,发现30%到70%的逻辑设计和编码缺陷,而且代码检查法看到的是问题本身而非征兆。但是代码检查法非常耗费时间,并且需要经验和知识的积累。
代码检查法可以使用人工测试,也可以使用测试软件进行自动化测试。
2.3 静态结构分析法
静态结构分析是指测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形和图表,清晰得标识整个软件的组成结构,通过分析这些图表,检查软件是否存在缺陷或错误。
以函数调用的静态分析为例,主要分析一下内容:
①检查函数的调用关系是否正确;
②是否存在孤立的函数没有被调用;
③明确函数被调用的频繁度,对调用频繁的函数可以重点检查。
2.4 程序插桩技术
在调试程序时,常常需要插入一些打印语句,从而在执行程序时能够打印有关信息,并进一步通过这些信息来了解程序执行时的一些动态特性,例如,程序的执行路径或特定变量在特定时刻的取值。这一思想发展出来的程序插桩技术在软件动态测试中,作为一种基本的测试手段,有着广泛的应用。
2.5 逻辑覆盖法
逻辑覆盖是白盒测试的主要动态测试方法之一,是以程序内部的逻辑结构为基础的测试技术,通过对程序逻辑结构的遍历实现程序的覆盖。
从覆盖源代码的不同程度可以分为以下6个标准:
语句覆盖(Statement Coverage, SC)
判定覆盖(Decision Coverage, DC)
条件覆盖(Condition Coverage, CC)
判定/条件覆盖(Decision/Condition Coverage, D/CC)
条件组合覆盖(Condition Combination Coverage, CCC)
路径覆盖(Path Coverage, PC)
正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况选用合适的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试出正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。
3 实验内容及步骤
PRCEDURE EXAMPLE(A,B:REAL; VAR X:REAL);
READ
BEGIN
IF (A1) AND (B=0)
THEN X:=X/A;
IF (A=2) OR (X1)
THEN X:=X+1;
END;
(1)语句覆盖
语句覆盖的含义:选择足够多的测试数据,使被测程序中每个语句至少执行一次。
表1-1 语句覆盖的测试用例
测试用例序号
(项目编号--项目版本号--模块号--测试用例编号) 测试数据 说明 覆盖路径 XX-V1-101-001 A=2,B=0,X=4 两个判定表达式都取真 sacbed 该测试用例虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题(如写程序时将第一个判定表达式中的“AND”错写为“OR”,该测试用例无法检查出这个错误)。
总结:语句覆盖是很不充分的一种测试,是最弱的逻辑覆盖标准。
(2)判定覆盖
含义:不仅每个语句必须至少执行一次,而且每个判定的每种可
文档评论(0)