- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
白盒测试技术
白盒测试 白盒测试是基于代码的测试。软件测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面的程序以及程序是如何运作的。 白盒测试的优点和局限性 优点:相比白盒测试,更易于定位错误的原因和具体的位置。 局限性: 不能查出程序中的设计缺陷 不能查处是否遗漏了功能 发现不了一些与数据相关的错误 白盒测试分类 白盒测试分为静态白盒测试和动态白盒测试。 静态测试通过评审文档和阅读代码等方式测试软件。可以利用专门的静态测试工具分析代码中的缺陷,也可以人为去测试,但静态测试对测试人员的编码和测试等水平要求很高。 常见的静态测试缺陷 数组越界 内存泄漏 除数为0 缓冲区溢出 未初始化变量的误用 空指针的误用 函数参数错误 无限循环 代码不可达 等等 动态白盒测试 常用的动态白盒测试方法有逻辑覆盖法、基本路径测试法等 逻辑覆盖法:以程序内部的逻辑结构为基础设计测试用例的方法。根据对逻辑结构的覆盖程度不同分为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖 逻辑覆盖的相关术语 语句覆盖:语句覆盖就是设计若干个测试用例,使被测试程序中的每条可执行语句至少执行一次。 判定覆盖(也称为分支覆盖):设计若干个测试用例,使被测程序中每个判定的取真分支和取假分支至少执行一次; 条件覆盖:设计足够多的测试用例,使被测程序中每个判定的每个条件的每个可能取值至少执行一次; 判定-条件覆盖:设计足够多的测试用例,使被测程序中每个判定的每个条件的所有可能取值至少执行一次,并且每个判定的取真分支和取假分支也至少执行一次; 条件组合测试:设计足够多的测试用例,使被测程序中每个判定的所有可能的条件取值组合至少执行一次 路径覆盖:运行所测程序,要覆盖程序中所有可能的路径。 下面以例子进行分析讲解 void DoWork(int x,int y,int z) { int k=0,j=0; if((x3)(z10)) { k=x*y-1; //语句块1 j=sqrt(k); } if((x= =4)||(y5)) { j=x*y+10; //语句块2 } j=j%3; //语句块3 } dowork函数的流程图 语句覆盖 条件覆盖 在实际程序代码中,一个判定中通常都包含若干条件。 条件覆盖的目的是设计若干测试用例,在执行被测程序后,要使每个判定中每个条件的可能值至少满足一次。 对DoWork函数的各个判定的各种条件取值加以标记。 对于第一个判定( (x3)(z10) ): 条件x3 取真值记为T1,取假值记为-T1 条件z10 取真值记为T2,取假值记为-T2 对于第二个判定( (x==4)||(y5) ): 条件x==4 取真值记为T3,取假值记为-T3 条件y5 取真值记为T4,取假值记为-T4 条件覆盖(续) 根据条件覆盖的基本思想,要使上述4个条件可能产生的8种情况至少满足一次,设计测试用例如下: 条件覆盖(续) 说明:虽然前面的一组测试用例同时达到了条件覆盖和判定覆盖,但是,并不是说满足条件覆盖就一定能满足判定覆盖。如果设计了下表中的这组测试用例,则虽然满足了条件覆盖,但只是覆盖了程序中第一个判定的取假分支c 和第二个判定的取真分支d,不满足判定覆盖的要求。 练习题 判定/条件覆盖 判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法,即:设计足够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。 根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖4个条件的8种取值以及4个判定分支。 判定/条件覆盖(续) 分析:从表面上看,判定/条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也不一定能够完全检查出逻辑表达式中的错误。 例如:对于第一个判定(x3)(z10)来说,必须x3和z10这两个条件同时满足才能确定该判定为真。如果x3为假,则编译器将不再检查z10这个条件,那么即使这个条件有错也无法被发现。对于第二个判定(x==4)||(y5)来说,若条件x==4满足,就认为该判定为真,这时将不会再检查y5,那么同样也无法发现这个条件中的错误。 组合覆盖 组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。 对DoWork函数中的各个判定的条件取值组合加以标记: 1、x3, z10 记做T1 T2,第一个判定的取真分支 2、x3, z
文档评论(0)