接口测试 接口的排列组合测试

王德法 · 2021年10月08日 · 最后由 王德法 回复于 2021年10月09日 · 2664 次阅读

有一个问卷调查,包含 9 个小问题,每个问题有 A B C D 等多个不定项选项,每个问题的每个选项对应不同分数。用户对 9 个小问题都选择了相应答案后提交问卷,系统计算得出总分。我们现在需要校验,总分是否正确,即每个问题的得分加和与总分相比。
请问:
需要对全部问题的所有选项进行排列组合,对每种可能的情况进行校验吗?假设每个问题有 3 个选项,那么就有 39 将近 2 万种可能。
初步解决思路
手工肯定测不完的,考虑用代码自动化测试。当前需求通过计算发现,大概有 6 万多个情况。是否有必要发起 6 万次请求进行验证?有没有更好的思路?

共收到 5 条回复 时间 点赞

allpairs.py 正则匹配法过滤一下 case 组合,然后套呗,实在不行就等价类再抽一次

没太理解为何需要考虑穷举或者大量组合计算呢?如果题目数量增加到 20 个甚至 100 个,那不就没法测试了?

个人理解从代码实现层面,这里面应该可以拆开两部分,一个是每个小问题的单题得分计算,另一个是多个小问题单题得分的合计。当然具体的逻辑你可以想办法问下开发怎么实现,可以更针对性地拆分。

然后你测试的时候,分别验证这两个点是否正确,然后再抽验几个两个合在一起的,应该就可以了。

这种需求最好就是直接白盒测试,根据等价类划分和边界条件来区分 case,穷举遍历没有任何意义。好比我的代码逻辑是

int a,b,c;
c=a+b;

那无论你穷举出多少个 a 和 b,你不过就是在测试 java 的加法有无 bug,根本就是在做无效测试。

有一个问卷调查,包含 9 个小问题,每个问题有 A B C D 等多个不定项选项,每个问题的每个选项对应不同分数。

所以我觉得关注点并不是穷举 A B C D 分数总和(这个求总和可能就是一行代码而已,如果没有额外的条件分支,那一条 case 都过了),而是不同题目的 A B C D 这几个选项它本身映射的分数是否符合预期,以及几个关键的分数总和点和答题场景(如全对、全错、对错混合、部分题目没作答、全部题目没作答)

软件测试是咋有限资源约束下,如何去尽可能发现缺陷的技术和管理活动,理想的结果是实现测试代价和测试质量的最佳平衡。测个分数相加,竟然要进行穷举测试,我个人认为测试策略就是有问题的。

这么搞的人,要么是外行的要求,要么就是闲的。

王德法 关闭了讨论 10月09日 17:37
王德法 重新开启了讨论 10月09日 17:37

确实没必要穷举测试;只需要验证
1.数据库里各问题的各答案对应分数与需求一致
2.如恒捷所说那两方面

王德法 关闭了讨论 10月09日 17:38
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册