白盒测试之测试用例设计方法

白盒测试之测试用例设计方法

什么是白盒测试

按照测试方法分类,测试可以分为白盒测试 和黑盒测试 两种。

白盒测试也称结构测试或逻辑驱动测试 ,是把测试对象看作一个透明白色的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

所以白盒测试是一种基于代码 的测试,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

白盒测试一般是开发做单元测试用,但是也有是测试自己做的,那么对测试能力要求比较高

白盒测试的特点

测试人员需要了解软件的实现;

可以检测代码中的每条分支和路径;

揭示隐藏在代码中的错误;

对代码的测试比较彻底;

实现代码结构上的优化;

白盒测试投入较大,成本高;

白盒测试不验证规格的正确性。

白盒测试的设计方法

静态设计方法

桌面检查

代码审查

代码走查

代码扫描工具

动态设计方法

逻辑覆盖法

基本路径测试法

java 复制代码
if A and B
	then action1
if C or D
	then action2
语句覆盖

顾名思义就是针对代码语句。我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次

上例中,设计一条测试用例即可: A=true B=true C=true

通常语句覆盖被认为是"最弱的覆盖",因为它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,比较难以发现代码中的问题。

分支(判定)覆盖

程序中每个判断的真和假至少经历一次,即判断的真假均被满足

判定是指A and B C or D

条件是指 A B C D

java 复制代码
A and B 为true
A and B 为false
C or D  为true
C or D  为false

上例中,两条测试用例即可:

testcase1: A=true,B=true,C= true,D=false

testcase2: A=true,B=false,C= false,D=false

条件覆盖

条件覆盖要求所设计的测试用例能使每个判定的每一个条件都获得可能的取值,即每个条件至少有一次真值和假值。(不考虑组合情况)

第一个判断应考虑到A=true,A=false,B=true,B=false

第二个判断应考虑到C=true,C=false,D=true,D=false

所以上例中可以设计测试用例满足下列条件,两条用例:

testcase1:A=true,B=true, C=true,D=true

testcase2:A=false, B=false, C= false,D=false

判定条件覆盖

2+3

设计的测试用例使得判断中每个条件所有的可能取值至少执行一次(条件覆盖)同时每个判断本身所有的结果也要至少执行一次(判定覆盖)。不难发现判定条件覆兰同时满足判定覆盖和条件覆盖,弥补了两者各自的不足,但是判定条件覆盖并未考虑条件的组合情况。

条件覆盖:A=true,A=false,B=true,B=false

C= true,C= false,D=true, D=false

判定覆盖::A and B =True ,A and B =False

C or D =True ,C or D =False

所以满足条件覆盖和判断覆盖,我们可以设计两条用例:

TestCase1: A=true, B=true,C=true,D=true(条件都为True,Aand B=True,Cor D =True)

TestCase2: A=false,B=false, C=false, D=false (条件为False,A and B=False, C or D =False)

组合覆盖

也叫条件组合覆盖,我们设计的测试用例应该使得每个判定中的各个条件的各种可能组台都至少出现一次 。显然,满足条件组合覆盖的测试用例一定是满足判定覆盖、条件覆盖和判定条件覆盖的。

针对这个案例,做条件组合覆盖时我们可以设计如下用例:

TestCase1: A=True, B=True,C=True,D=True

TestCase2: A=True, B=False, C=True,D=False

TestCase3: A=False, B=True,C=False,D=True

TestCase4: A=False, B=False,C=False,D=False

路径覆盖

要求覆盖程序中所有可能的路径 。意思是说我们设计的测试用例可以覆盖程序中所有可能的执行路径,可以对程序进行彻底的测试用例覆盖,但是用例数量会增多很多,所以路径覆盖是最彻底的测试用例覆盖但实际上可操作性不强。

所以可以设计测试用例满足下列条件:

  1. A=true,B=true,C=true,D=true
  2. A=false,B=false,C = false,D=false
  3. A=true,B=true,C=false,D=false
  4. A=false,B=false,C= true,D=true
  5. A=true,B=true,C=false,D=false
    ...
总结

以上简单描述了几种不用的白盒测试方法的原则和优劣。在实际的操作中,要正确使用白盒测试的代码覆盖方法,就要从代码分析和代码调研入手,根据调研的结果,可以选择上述方法中的某一种,或者好几种方法的结合,设计出高效的测试用例,尽可能全面地覆盖到代码中的每一个逻辑路径,只有适当的测试方法,才能帮助我们从代码的角度对产品做到最好的测试。

白盒测试的优势:

1、优点

迫使测试人员去仔细思考软件的实现

帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题

2、缺点

昂贵:系统庞大时,测试开销会非常大;测试人员要求比较高,人才昂贵;

测试基于代码,只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求

相关推荐
五网6 天前
软件测试用例模板怎么写:从用例设计到执行记录的全套指南
软件测试·论文阅读·全文检索·测试用例·论文笔记·用例设计·用例模板
测试界的小码农10 天前
【让 AI 生成的测试用例变成 pytest API 自动化脚本】
人工智能·测试用例·pytest
Da Da 泓14 天前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
会开车的鸟哥15 天前
自动创建测试用例与组件测试向导
测试用例·simuinktest
螺丝钉tina15 天前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
TomEval16 天前
【测AI】第22篇:Agent 系统测试方法 — AI 学会“动手“了
人工智能·python·prompt·aigc·测试用例
车软学堂16 天前
CANoe自动化:跑起第一个测试用例
运维·车载系统·自动化·汽车·测试用例
jiangbqing18 天前
测试功能点,测试用例、测试报告全流程技能直接用
功能测试·测试用例·测试用例 测试报告
自动化测试行业观察18 天前
AI智能测试用例生成技术解析:多源融合+LLM混合生成方案与实践
自动化测试·人工智能·科技·测试用例·智能化测试·ai测试平台·ai智能遍历
TomEval18 天前
【测AI】第20篇:大模型安全测试 —— 越狱攻击与防护
人工智能·python·功能测试·ai·aigc·测试用例·安全性测试