目录
关注我,学习更多企业开发和面试内容~
1. 黑盒测试(数据驱动测试)
- 概念:不考虑程序的内部结构,仅通过输入和输出来验证功能是否符合需求。又称为数据驱动测试,只注重软件的功能。
- 优点:
- 不关注程序内部的实现。
- 从用户角度出发设计测试用例,容易知道用户会用到哪些功能,碰到哪些问题,锻炼测试人员的产品思维。
- 缺点:不能覆盖所有代码。
- 测试用例:基于需求文档,不容易遗漏文档中需要测试的功能。
- 测试方法:等价类,边界值,正交表,判定表,场景法,错误猜测法等。
案例:测试登录界面
不需要看源代码,直接进入界面,输入信息,检查最后是否能登陆。
2. 白盒测试(结构测试)
2.1 概念及分类
检查程序内部的逻辑结构,对逻辑路径进行覆盖测试。又称为结构测试,分析程序的逻辑结构来设计测试用例。
分类:
- 静态测试:代码检查。
- 动态测试:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆
盖、路径覆盖。
用动态测试对上图代码设计测试用例。 T——>True;F——>False。
* 语句覆盖
- 定义:保证每个语句至少执行一次。
- 目标:覆盖所有可执行语句。
- 缺点:无法覆盖所有的分支条件,可能遗漏逻辑错误。
- 测试用例:
- 语句1:A:T,B:T。
- 语句2:C:T,D:T;C:F,D:T;C:T,D:F。
- 最后测试用例为:A:T,B:T,C:F,D:T。
* 判定覆盖:
- 定义:每个判定(如if、while等)既要测试语句为True,也要测试为False。
- 目标:覆盖所有可能的结果。
- 优点:发现的逻辑错误比覆盖语句多。
- 缺点:无法覆盖所有的可能组合。
- 测试用例:
最后测试用例为:
结果T:A:T,B:T,C:F,D:T。
结果F:A:F,B:T,C:F,D:F。
* 条件覆盖:
- 定义:确保每个判定的每个条件的可能取值(T/F)至少被执行一次。
- 目标:覆盖所有可能的判定结果。
- 优点:比判定覆盖更细致,能发现条件中的错误。
- 缺点:不一定会覆盖所有的判定结果。
- 测试用例:
最后测试用例为:
结果1:A:T,B:T,C:T,D:T。
结果2:A:F,B:F,C:F,D:F。
* 判定条件覆盖:
- 定义:结合了判定覆盖和条件覆盖,确保每个判定和每个条件的可能取值至少执行一次。
- 目标:同时覆盖所有的判定和条件。
- 优点:比单独的判定覆盖或条件覆盖更强。
- 缺点:无法覆盖条件之间的组合。
- 测试用例:
结果为T:A:T,B:T,C:T,D:T。
结果为F:A:F,B:F,C:F,D:F。
* 条件组合覆盖:
- 定义:确保每个判定中的每个条件的组合至少被执行一次。
- 目标:覆盖所有条件的组合。
- 优点:非常全面,能够发现复杂的逻辑错误。
- 缺点:测试用例数量可能非常多,尤其是条件较多时。
- 测试用例:
用例1:A:T,B:T,C:T,D:T。
用例2:A:F,B:T,C:F,D:T。
用例3:A:T,B:F,C:T,D:F。
用例4:A:F,B:F,C:F,D:F。
* 路径覆盖:
- 定义:确保程序中的所有可能的路径至少被执行一次。
- 目标:覆盖所有可能的执行路径。
- 优点:最全面,能够发现所有路径相关的错误。
- 缺点:路径数量可能非常多,尤其是循环和复杂逻辑。
- 测试用例:
覆盖准则 | 描述 | 强度 | 测试用例数量 |
---|---|---|---|
语句覆盖 | 每条语句至少执行一次 | 弱 | 少 |
判定覆盖 | 每个判定的真假分支至少执行一次 | 中 | 较少 |
条件覆盖 | 每个条件的取值至少执行一次 | 中 | 较多 |
判定条件覆盖 | 每个判定和条件的取值至少执行一次 | 较强 | 较多 |
条件组合覆盖 | 每个条件的所有组合至少执行一次 | 强 | 很多 |
路径覆盖 | 所有可能路径至少执行一次 | 最强 | 非常多 |
3.3 灰盒测试
结合了白盒测试和黑盒测试,但灰盒测试没有白盒测试详细和完整,而黑盒测试是覆盖产品范围最广的测试,灰盒测试不具备该优点。
- 定义:灰盒测试是介于白盒测试和黑盒测试之间的一种测试,灰盒测试常用于集成测试阶段,不仅关注输入输出的正确性,也关注程序的内部情况。
4. 面试题
【问】你知道的测试方法有哪些?哪种用的比较多?
【答】
- 常见的测试方法有黑盒测试,白盒测试,灰盒测试。
- 开发人员主要用白盒测试和灰盒测试,测试人员主要用于白盒测试和黑盒测试。
- 对测试人员来说,相较于白盒测试,黑盒测试用的更多一些。
话不要说得太死,比如说白盒测试一定比黑盒测试用的多。