【测试基础】08-软件测试用例设计方法之因果图判定表+正交实验法

发布时间:2026/6/19 1:03:40

【测试基础】08-软件测试用例设计方法之因果图判定表+正交实验法 因果图判定表背景我们前面介绍的等效类划分法和边界值分析方法都是着重考虑输入条件但未考虑输入条件之间的联系相互作用等。如果我们考虑多个条件之间的相互组合可能会产生一种新的情况(组合之后就是一种新的情况)。但要检查输入条件的组合不是一件容易的事情即使把所有输入条件划分成等价类它们之间的组合情况也是相当之多因此必须考虑采用一种不适于描述多种条件的组合相应产生多个动作的形式来考虑设计测试用例此时就需要利用因果图方法。简单的说就是我们往往会有多个条件不同的条件组合会有不同的结果。使用场景需求中存在多个条件及对应结果的场景因我也不会忘。因果图判定表分析的步骤列出所有的条件及结果画出判定表简化判定表【简化判定表是有规则的我们后边会说】根据简化后的判定表中的每种组合分别编写对应的测试用例补充判定表的结构如图条件桩我们所列出的需求中的所有条件比如疲倦兴趣糊涂。动作桩我们所列出需求中的所有结果比如休息跳入下一章重读一遍继续阅读。条件项不同条件的组合。动作项不同条件组合所得出的结果或者说不同条件组合所对应的结果。条件项到底有多少项每个条件有两个值(true/false)则条件项等于2的n次幂n是条件桩的个数。画判定表要注意一个目的覆盖所有不同条件组合下不同结果对应的场景。条件桩决定了输入维度N条件项是输入的所有可能组合数量 2^N结果项是每个输入组合对应的输出动作。比如3个条件桩就有8个条件项每个条件项都有自己对应的动作项。比如如果感到疲倦则休息如果不疲倦且不感兴趣则跳入下一章如果不疲倦且感兴趣且感到糊涂则重读一遍如果不疲倦且感兴趣且不感到糊涂则继续阅读用判定表描述法处理逻辑。1、找出需求中的条件和结果虽然读出来有6个条件可能但是这里边我们分析出其实就只有三个条件只是每一个条件都有两个值要么做要么不做。如图2、画出判定表条件桩 / 动作桩条件项条件项条件项条件项条件项条件项条件项条件项疲倦YYYYNNNN感兴趣YYNNYYNN糊涂YNYNYNYN动作桩动作项动作项动作项动作项动作项动作项动作项动作项休息√√√√跳入下一章√√重读一遍√继续阅读√3、简化判定表简化判定表的规则以合并相似规则为目标也就是说如果你的表中出现两条或者两条以上规则具有相同的动作(即相同的结果)并且在条件项之间存在极为相似的关系则可以合并。如图所示的例子简单来说就是只要出现有相同的结果并且在我们的条件项中有其中一项的值为任意值的情形下不影响这个结果。那么这样的项可以进行合并。那分析我们上述的因果判定表可以合并的项为此时合并之后的结果疲倦YYNNN感兴趣YNYYN糊涂--YN-条件桩 / 动作桩条件项 1条件项 2条件项 3条件项 4条件项 5动作桩动作项 1动作项 2动作项 3动作项 4动作项 5休息√√跳入下一章√重读一遍√继续阅读√但是此时我们仔细观察还能再合并那么最终合并后的结果为条件桩条件项条件项条件项条件项疲倦YNNN感兴趣-YYN糊涂-YN-动作桩动作项动作项动作项动作项休息√跳入下一章√重读一遍√继续阅读√因此原本我们需要测8次但实际我们简化下来只需要测4次就行了。4、根据简化后的判定表中的每种组合分别编写对应的测试用例【本例子呢我们主要是解释如何分析所以呢就不做这一步了那我们后续会有对应的例子】案例分析需求行李托运处理逻辑如下航天公司规定乘客可以免费托运30公斤的行。当重量超过30公斤的时候对头等舱的国内乘客超重部分每公斤收费4元。对其他舱的国内乘客超重部分6元每公斤。对国外乘客收费多一倍对残疾乘客收费减半。用判定表描述以上处理逻辑。首先看到这个题目我们分析需求可知它含有那种有不同的条件组成的不同的结果的含义所以此时我们就考虑到使用判定表方法。【找多个条件 得到的结果这种语句】1、找出条件和结果1首先你就所有的条件和结果找出来不分能取还是不能取2然后我就将条件合并为一个条件 取两个值(取或者不取)2、画判定表条件桩条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项条件项30 公斤YYYYYYYYNNNNNNNN头等舱YYYYNNNNYYYYNNNN国内乘客YYNNYYNNYYNNYYNN残疾YNYNYNYNYNYNYNYN动作桩动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项动作项免费√√√√√√√√4 元 /kg√√6 元 /kg√√8 元 /kg√12 元 /kg√2 元 /kg√3 元 /kg√3、简化判定表分析简化之后条件桩 / 动作桩条件项 1条件项 2条件项 3条件项 4条件项 5条件项 6条件项 7条件项 8条件项 930 公斤YNNNNNNNN头等舱-YYYYNNNN国内乘客-YYNNYYNN残疾-YNYNYNYN动作桩动作项 1动作项 2动作项 3动作项 4动作项 5动作项 6动作项 7动作项 8动作项 9免费√4 元 /kg√√6 元 /kg√√8 元 /kg√12 元 /kg√2 元 /kg√3 元 /kg√所以简化之后我们从写16条测试用例变为只需要写9条。4、根据判定表写测试用例用例编号模块用例标题用例级别预置条件测试步骤预期结果实际结果001行李收费模块30 公斤及以内免费高重量29.9 公斤国籍任意值舱位任意值是否残疾任意值收费0 元002行李收费模块头等舱国内残疾乘客超重 2 元 /kg高重量30.1 公斤国籍中国舱位头等舱是否残疾是收费(30.1-30) 元 ×20.2 元003行李收费模块头等舱国内非残疾乘客超重 4 元 /kg高重量30.1 公斤国籍中国舱位头等舱是否残疾否收费(30.1-30) 元 ×40.4 元004行李收费模块头等舱国外残疾乘客超重 4 元 /kg高重量30.1 公斤国籍外国舱位头等舱是否残疾是收费(30.1-30) 元 ×40.4 元005行李收费模块头等舱国外非残疾乘客超重 8 元 /kg高重量30.1 公斤国籍外国舱位头等舱是否残疾否收费(30.1-30) 元 ×80.8 元006行李收费模块经济舱国内残疾乘客超重 3 元 /kg高重量30.1 公斤国籍中国舱位经济舱是否残疾是收费(30.1-30) 元 ×30.3 元007行李收费模块经济舱国内非残疾乘客超重 6 元 /kg高重量30.1 公斤国籍中国舱位经济舱是否残疾否收费(30.1-30) 元 ×60.6 元008行李收费模块经济舱国外残疾乘客超重 6 元 /kg高重量30.1 公斤国籍外国舱位经济舱是否残疾是收费(30.1-30) 元 ×60.6 元009行李收费模块经济舱国外非残疾乘客超重 12 元 /kg高重量30.1 公斤国籍外国舱位经济舱是否残疾否收费(30.1-30) 元 ×121.2 元正交实验法背景上述我们说的因果图判定表如果他的条件很多的话那我们的条件项就会特别多。而我们使用因果图判定表我们的条件都是控制在有限范围内的多的话我们搞不了。也就是说利用因果图来设计测试用例的时候作为输入条件的原因与输出条件之间的因果关系有时候很难从软件去需求规格说明中得到。往往因果关系非常庞大以至于据此因果图得到的测试用例数目多的惊人给软件测试带来沉重的负担为了有效的合理的减少测试用例的工时和费用可利用正交实验设计方法进行测试用地的设计。正交实验法的使用场景当你的因果关系非常庞大的情况下一般使用正交实验法进行测试。如何使用正交实验法进行测试【如何根据正交表进行测试】正交表的格式Ln(m的k次幂)n测试的次数表的行数。m每个条件有几个值k条件的个数步骤根据需求选择需求中需要参与的测试的条件及对应条件的值。选取对应的正交表正交表中的m的值要小于等于需求条件中最小值的个数 K要小于等于需求条件的个数。根据正交表的每一行进行对应的测试。以「字符属性设置」为例正交测试法完整应用流程 一、为什么这个场景适合用正交测试这个界面有4 个独立配置项条件/因素字体字符样式字体颜色字号如果每个配置项有 2 个可选值水平全组合测试需要 (2^416) 次而正交测试只用8 次就能覆盖核心组合高效且不遗漏关键场景。二、步骤1确定「因素」与「水平」先给每个配置项定义可选取值水平因素配置项水平1取值1水平2取值2字体F宋体黑体字符样式S常规斜体字体颜色C黑色红色字号Z小四五号这里每个因素取 2 个水平是最常见的正交场景也可根据实际选项扩展更多水平。三、步骤2选择合适的正交表因素数(条件)4 个水平数(可选值)2 个选择正交表(L_8(2^7))(L_8)需要执行 8 次测试(2)每个因素有 2 个水平(7)最多可容纳 7 个 2 水平因素足够放我们的 4 个因素四、步骤3映射因素到正交表列将 4 个因素分配到正交表的前 4 列列1 → 字体F列2 → 字符样式S列3 → 字体颜色C列4 → 字号Z列5~7 暂时空置不影响测试五、步骤4生成测试用例正交表行 测试用例试验号字体列1字符样式列2字体颜色列3字号列4测试用例描述11宋体1常规1黑色1小四设置宋体、常规、黑色、小四 → 验证显示21宋体1常规2红色2五号设置宋体、常规、红色、五号 → 验证显示31宋体2斜体1黑色2五号设置宋体、斜体、黑色、五号 → 验证显示41宋体2斜体2红色1小四设置宋体、斜体、红色、小四 → 验证显示52黑体1常规1黑色2五号设置黑体、常规、黑色、五号 → 验证显示62黑体1常规2红色1小四设置黑体、常规、红色、小四 → 验证显示72黑体2斜体1黑色1小四设置黑体、斜体、黑色、小四 → 验证显示82黑体2斜体2红色2五号设置黑体、斜体、红色、五号 → 验证显示六、步骤5执行测试与结果分析按上面 8 组用例逐一操作「字符属性设置」界面保存后查看字符显示效果。验证点字体是否与选择一致宋体/黑体字符样式是否正确常规/斜体颜色是否匹配黑色/红色字号是否符合小四/五号若某组用例显示异常可快速定位是哪个因素比如「斜体红色」组合出问题高效排查缺陷。正交测试的核心优势 ✨少测多覆盖原本 16 次全组合 → 现在 8 次测试量减半均衡无遗漏任意两个因素的水平组合如「宋体斜体」「黑体红色」都被覆盖不会漏掉关键交互场景易定位问题缺陷能快速关联到具体因素组合方便开发修复最后如果觉得这篇知识的总结对你有帮助别忘了 点赞⭐ 收藏 关注感谢各位老铁的支持。

相关新闻