- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
白盒测试之理论篇 1.1 白盒测试的概念 白盒测试(White Box Testing),按照程序内部的结构、逻辑驱动测试程序,通过测试来检测产品内部动作是否按照设计说明书的规定正常进行,检验程序中的每条路径是否都能按预定要求正确工作。 白盒测试的对象主要是源程序。是指用代码内部的分支、路径、条件,使程序设计的控制结构导出测试用例。 白盒测试是一个与黑盒测试相对的概念,是指测试者针对可见代码进行的一种测试。白盒测试通常再划分为单元测试、集成测试两大类,但依据不同的流程,对白盒测试细分的标准也不尽一致,比如在IBM的IPD流程之下,白盒测试可能划分为如下几类:模块单元测试、模块集成测试、模块系统测试、渐增Build集成测试、系统集成测试等。而在XP实践中,单元测试与集成测试之间的界限并不明显,统称为渐增迭代测试。 1.2 白盒测试的特点 白盒法特点:以程序的内部逻辑为基础设计测试用例,所以又称为逻辑覆盖法。应用白盒法时,手头必须有程序的规格说明以及程序清单。 白盒法考虑的是测试用例对程序内部逻辑的覆盖程度。 最彻底的白盒法是覆盖程序中的每一条路径,但是由于 程序中一般含有循环,所以路径的数目极大,要执行每 一条路径是不可能的,只能希望覆盖的程度尽可能高些。 2 白盒测试的目的 3 白盒测试的原则 白盒测试的原则有4点: 1)保证一个模块中所有路径至少被测试一次; 2)所有逻辑值都要测试真和假两种情况; 3)检查程序的内部数据结构是否有效; 4)检查上、下边界及可操作范围内运行所有循环。 4 白盒测试依据 软件需求报告; 软件需求规格说明; 程序设计文档; 软件界面设计; 编码规范; 开发命名标准。 5 白盒测试的类别 白盒测试的类别具体分为8大类: 1) 软件公用问题的测试; 2) 语言测试; 3) SQL语句测试; 4) 数据类型测试; 5) 界面测试; 6) 数值对象测试; 7) 业务对象测试; 8) 数据管理对象测试。 7 白盒测试策略 桌前检查(Desk Check) 同行评审(Peer Review) 代码走查(Walkthrough) 静态分析(static analyse) 单元测试(Unit Testing) 白盒测试综合策略 (1)测试中,尽量先用自动化工具来进行静态结构分析; (2)测试中建议先从静态测试开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试; (3)利用静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性; (4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率; (5)在不同的测试阶段,测试的侧重点是不同的。 8 白盒测试方法 静态测试 代码检查法 静态结构分析法 动态测试 逻辑测试 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合测试 路径测试 白盒测试的其它方法 条件测试 数据流测试 循环测试 域测试 Z路径测试 8.2.1 语句覆盖 语句覆盖”是一个比较弱的测试标准, 它的含义是:选择足够的测试用例,使得程序 中每个语句至少都能被执行一次。为使程序中 每个语句至少执行一次,只需设计一个能通过 路径ace的例子就可以了,例如选择输入数据为: A=2,B=0,X=3 就可达到“语句覆盖”标准。 从上例可看出,语句覆盖实际上是很弱的, 如果第一个条件语句中的AND错误地编写成OR, 上面的测试用例是不能发现这个错误的; 又如第三个条件语句中X>1误写成X>0,这个测 试用例也不能暴露它,此外,沿着路径abd执行 时,X的值应该保持不变,如果这一方面有错 误,上述测试数据也不能发现它们。 8.2.1 分支覆盖 8.2.1 条件覆盖 8.2.1 条件覆盖 “条件覆盖”通常比“分支覆盖”强,因为它使一个判定中的每一个条件都取到了两个不同的结果,而判定覆盖则不保证这一点。 “条件覆盖”并不包含“分支覆盖”,如对语句IF(A AND B)THEN S 设计测试用例使其满足条件覆盖,即使A为真并使B为假,以及使A为假而且B为真,但是它们都未能使语句S得以执行。 条件覆盖 如对例2设计了下面的测试用例,则虽然满足了条件覆盖,但只覆盖了第一个条件的取假分支和第二个条件的取真分支,不满足分支覆盖的要求。 8.2.1 分支/条件覆盖 针对上面的问题引出了另一种覆盖标准——“分支 /条件覆盖”,它的含义是:执行足够的测试用例,使得分支中每个条件取到各种可能的值,并使每个分支取到各种可能的结果。 对例1的程序,前面的两个例子 ① A=2,B=0,X=4 (沿ace路)????????????
文档评论(0)