目录

白盒测试的理解和测试方法

目录

白盒测试的理解和测试方法

基本原理

白盒测试基于软件的源代码,已知产品的内部工作过程,主要是对程序内部结构展开测试,关注程序实现的细节。

白盒测试关注的对象包括两个方面:

(1)源代码,即直接查看源代码,查看代码的规范性,并对照函数功能查找代码的逻辑缺陷、内存管理缺陷,数据定义和使用缺陷等;

(2)程序结构,即通过函数调用图、算法流程图等反映程序设计的相关图表,或评价程序的执行效率,以利于程序的结构优化。

优点:代码覆盖率高

缺点:

1、覆盖所有代码路径难度大

2、业务功能可能覆盖不全

3、测试开销大

白盒测试的方法

https://i-blog.csdnimg.cn/blog_migrate/650f73d8cdd101f020bfe4bc08f2000b.png 逻辑覆盖法

◆逻辑覆盖法:是通过对程序逻辑结构的遍历实现程序的覆盖。

◆覆盖率:是用来度量测试完整性的一个手段。

https://i-blog.csdnimg.cn/blog_migrate/5466f40dbadda66f470489df165e7a90.png

将代码转换为流程图(以下的测试设计方法均用这个流程图举例)

https://i-blog.csdnimg.cn/blog_migrate/20cd0ac513b06051c600dddcee66b295.png

1、语句覆盖

语句覆盖:设计测试用例,使得程序中每条语句至少被执行一次。

https://i-blog.csdnimg.cn/blog_migrate/3572848eea672716c0ee7f8aaba583e5.png

例如:

  • 案例代码中共有4条可执行语句

  • 设计测试用例执行了3条,语句覆盖率为3/4=75%

    https://i-blog.csdnimg.cn/blog_migrate/252caf9ae654a4c3b11e8d3ea715a94c.png

    局限性:

    https://i-blog.csdnimg.cn/blog_migrate/6f5bf54dc5d6a887f7e35649e7a96414.png

    2、判定覆盖

判定覆盖:也叫分支覆盖,设计测试用例,使得程序中的每个判断的“真"和“假”都至少被执行一次。即:程序中的每个分支至少执行一次。

https://i-blog.csdnimg.cn/blog_migrate/b606741eb0859785ebe0897b1f6538c8.png

例如:

  • 案例代码中有判定2个,判定结果4个

  • 设计测试用例执行了3个分支,分支覆盖率为3/4=75%

    https://i-blog.csdnimg.cn/blog_migrate/578b2ab4fe121a578fee10a10548f688.png

    局限性:

    https://i-blog.csdnimg.cn/blog_migrate/fdc191974d4e5f183b3295722609f629.png

https://i-blog.csdnimg.cn/blog_migrate/89c8d9c262c7e4cdc1a88c772c2b374b.png

例如:

  • 案例代码中有判定2个,条件3个,条件结果6个

  • 设计测试用例执行了5个条件结果,条件覆盖率为5/6=83%

    https://i-blog.csdnimg.cn/blog_migrate/11e0d3b69d04b71319b5fc03760b1667.png

    局限性:

    https://i-blog.csdnimg.cn/blog_migrate/677535646beb0e718cc0cd674be4bc37.png

    4、判定条件覆盖

    判定条件覆盖:设计测试用例,使得被测试程序中的每个判断身的判定结果(真假)至少满足一次,同时,每个逻辑条件的能值(真假)也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。

    https://i-blog.csdnimg.cn/blog_migrate/0d6152afcaec35a01a3560e1aef9b6e7.png

    例如:

  • 案例代码中有判定2个,条件3个, 判定结果4个,条件结果6个

  • 设计测试用例执行了3个判定结果,5个条件结果,判定条件覆盖率为: (3+5) / (4+6) =80%

    https://i-blog.csdnimg.cn/blog_migrate/1e3b5e0184f3f0b3ab7bf8565374b2ec.png

    局限性:

    https://i-blog.csdnimg.cn/blog_migrate/70f7354518964ba5e71b9a9d9564159a.png

    5、条件组合覆盖

    条件组合覆盖:设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。

    https://i-blog.csdnimg.cn/blog_migrate/5e7c81b9146314a81536914865a7b6d6.png

    例如:

  • 案例代码中有判定2个,条件3个(判定1有2个条件,判定2有1个条件),判定1的条件组合为4个,判定2的条件组合为2个

  • 设计测试用例执行了5个条件组合,条件组合覆盖率为:5/ (4+2) =83%

https://i-blog.csdnimg.cn/blog_migrate/0f023fd90e94a17aac7040b02e99eaac.png

局限性:

https://i-blog.csdnimg.cn/blog_migrate/ac6a562fc4124327ab21655e63f57aa7.png

6、测试设计方法——路径覆盖

路径覆盖:设计测试用例,覆盖程序中所有可能的路径。

https://i-blog.csdnimg.cn/blog_migrate/2ce2a05c3285a517dc764e44ea6a6348.png

例如:

  • 案例代码中共有4条路径

  • 设计测试用例执行了3条路径,路径覆盖率为3/4=75%

    https://i-blog.csdnimg.cn/blog_migrate/76c677b7ba9d1da23e2c4bd55d8ed7b1.png

    局限性:

    https://i-blog.csdnimg.cn/blog_migrate/7a652e5fb68c1d228e988dc025288e35.png

    对于下面的流程图路径覆盖很难实现,我们该如何实现呢?

    https://i-blog.csdnimg.cn/blog_migrate/3bf8a4aefd3364807bc82574e54ca916.png

    引出了基本路径测试法:

    https://i-blog.csdnimg.cn/blog_migrate/ca27082707ac4de417ff541fe46a2258.png

    https://i-blog.csdnimg.cn/blog_migrate/62017f647c7d6d8f639c21112317b9bd.png

    https://i-blog.csdnimg.cn/blog_migrate/56ee8e88d290cdc092c2b0a44b97eb79.png

    https://i-blog.csdnimg.cn/blog_migrate/030f8d2e0b1035c2b94ade5902b3a364.png

    https://i-blog.csdnimg.cn/blog_migrate/e095f5b8873322cc84547940b91cf1ea.png

    https://i-blog.csdnimg.cn/blog_migrate/f25b50eefdf43987b2197867465c73da.png