- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
章白盒测试
第11章 白盒测试 内容提要 11.1 白盒测试的概述 11.2 控制流测试 11.2.1 语句覆盖 11.2.2 判定覆盖 11.2.3 条件覆盖 11.2.4 判定-条件覆盖测试 11.2.5 路径覆盖 11.2.6 几种常用逻辑覆盖的比较 11.2.7 循环测试 11.3 基本路径测试 11.3.1 程序的控制流图 11.3.2 程序结构的要求 11.3.3 举例分析 内容提要 11.4 程序插装/程序变异测试 11.5 白盒测试工具 11.5.1 C++Test介绍 11.5.2 白盒测试工具JUnit 11.6 软件缺陷分析 11.6.1 简介 11.6.2 软件缺陷的类别 11.6.3 软件缺陷的级别 11.6.4 软件缺陷产生的原因 11.6.5 软件缺陷的构成 11.7小结 11.1 白盒测试的概述 软件人员使用白盒测试方法,主要想对程序模块进行如下的检查: 对程序模块的所有独立的执行路径至少测试一次; 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次; 在循环的边界和运行界限内执行循环体; 测试内部数据结构的有效性等。 白盒测试的实施步骤: 测试计划阶段:根据需求说明书,制定测试进度。 测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。 测试执行阶段:输入测试用例,得到测试结果。 测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。 11.2 控制流测试 算法流程 11.2.1 语句覆盖 语句覆盖的含义是:在测试时首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。这里所谓“若干个”,自然是越少越好。 例如对上面的程序片段 CASE1:(A=2,B=0,X=2)可以做到语句覆盖。 CASE2:(A=2,B=1,X=3)显然没有达到语句覆盖。 让我们总结一下语句覆盖的优点和缺点。 优点:很直观地从代码中得到测试用例,无需细分每条判定表达式。 缺点:对于隐藏的条件和可能到达的隐式分支是无法测试的。它只在乎运行一次,而不考虑其他情况 11.2.1 判定覆盖 按判定覆盖准则进行测试是指: 设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。 下面总结一下分支覆盖测试的优点和缺点。 优点:分支覆盖是比语句覆盖更强的测试能力,比语句覆盖要多几乎一倍的测试路径。它无需细分每个判定就可以得到测试用例。 缺点:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其最终结果,而忽略每个条件的取值必然会遗漏部分的测试路径。 11.2.1 条件覆盖 11.2.1 判定-条件覆盖测试 11.2.1 路径覆盖 按路径覆盖要求进行测试是指,设计足够多的测试用例要求覆盖程序中所有可能的路径。 下面总结一下路径覆盖测试的优点和缺点。 优点:路径覆盖是经常要用到的测试覆盖方法,它比普通的判定覆盖准则和条件覆盖准则覆盖率都要高。 缺点:路径覆盖不一定能保证条件的所有组合都覆盖。a=1,b=0这个就没有被测试到。:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。 11.2.1 几种常用逻辑覆盖的比较 语句覆盖:在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个语句至少执行一次;语句覆盖的测试可能给人们一种心理的满足,以为每个语句都经历过,似乎可以放心了;实际上,语句覆盖在测试被测试程序中,除去对检查不可执行语句有一定作用外,并没有排除被测程序包含错误的风险;必须看到,被测程序并非语句的无序堆积,语句之间的确存在着许多有机的联系。 判定覆盖(分支覆盖):设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足;同样,只作到判定覆盖仍无法确定判断内部条件的错误。 条件覆盖:设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次;但覆盖了条件的测试用例不一定覆盖了分支。 判定—条件覆盖:判定—条件覆盖要求设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次;不过忽略了路径覆盖的问题,而路径能否全面覆盖在软件测试中是个重要问题,因为程序要取得正确的结果,就必须消除遇到的各种障碍,沿着特定的路径顺利执行。 如果程序中的每一条路径都得到考验,才能说程序受到了全面检验。 路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径;许多情况路径数是个庞大的数字,要全部覆盖是无法实现的;即使都覆盖到了,仍然不能保证被测程序的正
文档评论(0)