ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

测试分类篇 - 测试方法(黑盒测试、白盒测试、灰盒测试)

测试分类篇 - 测试方法(黑盒测试、白盒测试、灰盒测试) 测试分类篇 - 测试方法黑盒测试、白盒测试、灰盒测试文章目录测试分类篇 - 测试方法黑盒测试、白盒测试、灰盒测试1. 黑盒测试1.1 黑盒测试的优点1.2 黑盒测试的缺点1.3 黑盒测试常用方法2. 白盒测试2.1 白盒测试设计方法1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 条件判定覆盖5. 条件组合覆盖6. 路径覆盖附带判定组合覆盖2.2 总结3. 灰盒测试4.常见面试题你知道的测试方法有哪些哪种用得比较多高频面试题5. 结尾这篇博客来源自这篇博客博客链接 测试(8) - 测试分类篇如果你是第一次点击这篇博客推荐你先看上面这篇博客上面这篇博客有这篇博客的跳转链接。看到根据 测试方法 划分的时候再点击链接过来看这这篇博客。如果你只是想单独了解测试方法的话也可以直接看这篇博客1. 黑盒测试黑盒测试是在完全不考虑程序内部逻辑与结构的前提下检查系统功能是否按照需求规格说明书需求文档正常实现能否正确接收输入数据并输出符合预期的结果满足需求规范的测试方法。由于只关注输入与输出的对应关系黑盒测试也被称为数据驱动测试测试重点聚焦于软件功能。1.1 黑盒测试的优点无需了解程序内部代码与实现细节不关注软件内部结构。从用户视角设计测试用例更容易把握用户常用功能与潜在问题培养测试人员的产品思维。基于软件需求文档设计用例不易遗漏需求中规定的测试功能。1.2 黑盒测试的缺点无法实现全量代码覆盖。1.3 黑盒测试常用方法等价类划分法、边界值分析法、因果图法、场景法、错误猜测法等。也就是我们这篇博客测试用例篇 - 设计测试用例的方法等价类边界值场景法讲到的所有设计测试用例的方法都属于是 黑盒测试。2. 白盒测试白盒测试又称为结构测试或逻辑测试通过分析程序内部结构针对程序逻辑结构设计测试用例并开展测试。白盒测试的目的是检查软件内部逻辑结构对软件中的逻辑路径进行覆盖测试在程序不同位置设立检查点监测程序运行状态确保实际运行状态与预期状态一致。黑盒测试完全不考虑程序内部逻辑与结构白盒测试分析程序内部逻辑与结构白盒测试主要分为静态测试和动态测试两类。静态测试常见方式包括桌面检查、代码审查、代码走查、代码扫描工具检测等。动态测试主要包含六种测试方法语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。接下来我们要介绍的是 白盒测试中动态测试主要包含的六种测试方法语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。2.1 白盒测试设计方法ifAandB// 语句1then action1// 语句2ifCorD// 语句3then action2// 语句4ABCD 分别是四个判定条件。并且我会以 T 表示 trueF 表示 false通过这段 伪代码来讲解白盒测试设计方法。1. 语句覆盖语句覆盖每个语句至少执行一次。语句1 和 语句2 想要都执行需满足 A 为真且 B 为真。A 为 T并且 B 为 T语句1 和 语句2 想要都执行需满足 C 为真或 D 为真。C为 T或者 D 为 T由此得出测试用例用例 1A 为TB 为TC 为TD 为F。通过这个测试用例就能够让每个语句至少执行一次这就是语句覆盖。2. 判定覆盖if语句就是判定语句。判定覆盖分支覆盖设计测试用例使得程序中每一个判定的结果都至少取一次真、取一次假。ifAandB// 语句1ifCorD// 语句3上述代码中只有语句1 和 语句3 为if语句。针对 语句1if A and B都为真或者都为假 的情况if A and BTA T且B TFA F 且 B FA F 且 B TA T 且 B F针对 语句2if C or D都为真或者都为假 的情况if C or DTC T 且 D TC F 且 D TC T 且 D FFC F且 D F综合起来语句1 和 语句2 都为真的情况测试用例1A TB TC T D F通过这个测试用例满足每个 if语句 都为真的情况语句1 和 语句2 都为假的情况测试用例1A FB FC FD F通过这个测试用例满足每个每一个判定的结果都至少取一次真、取一次假3. 条件覆盖设计足够的测试用例使得程序中每个判定包含的每个条件 的所有可能取值真和假都至少被执行一次ifAandB// 语句1then action1// 语句2ifCorD// 语句3then action2// 语句4ABCD 分别是四个判定条件。ABCD 这四个判定条件都为 T 都为 F 的情况AT FBT FCT FDT F得出测试用例如下用例 1ATBTCTDT用例 2AFBFCFDF通过这两个测试用例覆盖了ABCD 这四个判定条件都为 T 都为 F 的情况。4. 条件判定覆盖结合判定覆盖和条件覆盖设计测试用例都为T都为F 的情况。判定覆盖和条件覆盖 都为T 的情况结合判定覆盖和条件覆盖判定覆盖针对 语句1if A and B都为真或者都为假 的情况if A and BTA T且B TFA F 且 B FA F 且 B TA T 且 B F针对 语句2if C or D都为真或者都为假 的情况if C or DTC T 且 D TC F 且 D TC T 且 D FFC F且 D F条件覆盖ABCD 这四个判定条件都为 T 。结合起来得出测试用例1ATBTCTDT判定覆盖和条件覆盖 都为F 的情况结合判定覆盖和条件覆盖判定覆盖和上述一样。条件覆盖ABCD 这四个判定条件都为 F 。结合起来得出测试用例2AFBFCFDF总结测试用例1 和 测试用例2既可以做到 判定覆盖也可以做到 条件覆盖。因此称之为判定条件覆盖5. 条件组合覆盖设计足够的测试用例使得每个判定中所有条件 的各种可能组合都至少出现一次ifAandB// 语句1then action1// 语句2ifCorD// 语句3then action2// 语句4语句1语句3分别有4个条件ABCD将这 4 个条件的各种TF 情况结合起来形成表格ABCDTTTTTFTTFTTTFFTT每一行就可以是⼀个用例⼀共四个用例。条件组合覆盖条件越多条件的各种TF 情况也就越多测试用例也就越多。6. 路径覆盖附带判定组合覆盖路径覆盖比较复杂我们先给出一个示例将上述流程图转化为代码if(x0y0){语句块1}else{语句块2}if(z0){语句块3语句块4}else{语句块4}判定条件定义如下if(x0 y0)判定记为P1if(z0)判定记为P2x 0记为C1y 0记为C2z 0记为C3路径覆盖需要按步骤进行设计一共有三步判定组合覆盖根据判定组合覆盖的结果设计条件根据条件给出数据接下来我们根据这三步一步一步设计判定组合覆盖if(x0 y0)判定记为P1if(z0)判定记为P2​ 将 P1P2 可能的结果都列举出来就像 条件组合覆盖 那样​P1P2TTTFFTFF根据判定组合覆盖的结果设计条件P1 if(x0 y0)的两个条件x 0记为C1y 0记为C2P2 if(z0)的条件z 0记为C3x0 (C1)y0 (C2)z0 (C3)P1 (x0 y0)P2 (z0)TTTTTFTTFTTFTFTFFTFTTTFTFFTFFFTFFFFFFFFF为了方便大家观察下面的步骤就取其中 4 个例子就行x0 (C1)y0 (C2)z0 (C3)P1 (x0 y0)P2 (z0)TTTTTFTTFTTTFTFFTFFF根据条件给出数据数据x0 (C1)y0 (C2)z0 (C3)P1 (x0 y0)P2 (z0)路径{x3,y3,z-2}TTTTTa-b-d-f{x-3,y3,z-2}FTTFTa-c-d-f{x3,y3,z2}TTFTFa-b-e-f{x-3,y15,z2}FTFFFa-c-e-f这就是根据 路径覆盖 设计出来的 4 个测试用例。2.2 总结白盒测试主要适用于单元测试阶段。测试用例设计遵循先静态、后动态的原则。通常以路径测试法为主对重点模块可额外采用逻辑覆盖法进行补充。3. 灰盒测试灰盒测试是介于白盒测试与黑盒测试之间的一种测试方法多用于集成测试阶段。它不仅关注输入与输出的正确性同时也会关注程序内部的实现情况。但灰盒测试的细致度与完整性不如白盒测试而黑盒测试是覆盖产品范围最广的测试方式。因此灰盒测试基本无法替代黑盒测试若强行替代会带来极高的成本需要设计大量测试用例。4.常见面试题你知道的测试方法有哪些哪种用得比较多高频面试题常见的测试方法有黑盒测试、白盒测试和灰盒测试。开发人员主要使用白盒测试与灰盒测试测试人员主要使用黑盒测试与灰盒测试。对测试人员而言相比白盒测试黑盒测试的应用更为广泛。5. 结尾回到上一篇博客测试(8) - 测试分类篇最后如果这篇博客能帮到你的请你点点赞有写错了写的不好的欢迎评论指出谢谢
返回列表