如何用测试算法高效体验奶茶口感

如何用算法 "高效体验奶茶口感"

故事的起源

最近公司开始了新的一轮技术分享活动,然而此次的形式比较特殊...算法

某技术大群:

CTO: @全部人  刚刚跟一些同窗讨论了一下,为了减小技术分享会的启动压力(好比须要较长时间准备,就致使惰性和阻力),咱们干脆化整为零,从明天开始天天最先的晨会前,来一个5分钟快闪分享,轮流分享一个小的技术点,tips & tricks 类型的,能够是本身以为比较好的一个技术实践,也能够是代码重构的小技巧,某个更好的写法,某个好的工具,或者一个好的产品设计细节等等。就在这个群里发截图或连接就能够。
复制代码

正巧要轮到我了,做为刚转入后端组发光发热的"测试小伙",我居然给大伙分享了一个 "高效体验奶茶" 的算法...后端

如下为部分分享内容及互动...

我:数组

今日分享tips: 关于参数组合生成markdown

在接口测试或是单元测试中,咱们经常会遇到参数组合过多的问题。举个例子,有一个接口,有 5 个参数,每一个参数又能够取值 7 个,若是要验证全部参数传入状况的话则须要测试 77777 = 16807 种状况,针对这种状况,咱们可使用 Pairwise 方法有效地减小测试用例数量的同时保证测试质量。工具

什么是 Pairwise?

Pairwise 是一种覆盖参数双因子组合的测试方法。Pairwise基于以下 2 个假设:每个维度都是正交的,即每个维度互相都没有交集;根据数学统计分析,73% 的缺陷(单因子是 35%,双因子是 38%)是由单因子或两个因子相互做用产生的,19% 的缺陷是由 3 个因子相互做用产生的。所以,Pairwise 基于覆盖全部双因子的交互做用产生的用例集合,是很是具备测试性价比的。单元测试

可是 Pairwise 和 "喝奶茶" 又有什么关系...

然而Pairwise 方法不只能够用在生成测试用例中,甚至能够用在生活中... 若是想有效体验不一样的奶茶配料组合会产生怎样不一样的口感 (假设奶茶的口感主要由 2 个关键的配料组合而决定),也能够试试参考 Pairwise 给出的答案 [旺柴]测试

下面给你们展现一个例子。优化

from allpairspy import AllPairs

parameters = [
    ["常规", "+波波", "+椰果", "+芋圆", "+厚芋泥"],
    ["正常冰", "少冰", "去冰", "温热", "热"],
    ["标准糖", "七分糖", "五分糖", "三分糖", "不另外加糖"],
    ["奶茶", "牛乳茶", "果茶", "果汁"]
]

print("PAIRWISE:")
for i, pairs in enumerate(AllPairs(parameters)):
    print("{:2d}: {}".format(i, pairs))
复制代码

能够看到上述代码中的 parameters 包含了全部奶茶配料的组合(共 5 * 5 * 5 * 4 = 500 种),能够在下方输出中看到,通过 pairwise 优化后组合量减小至了 27 种:spa

PAIRWISE:
..........
22: ['+椰果', '正常冰', '三分糖', '牛乳茶']
23: ['+芋圆', '热', '标准糖', '果汁']
24: ['+厚芋泥', '去冰', '三分糖', '果汁']
25: ['+厚芋泥', '热', '标准糖', '果茶']
26: ['+厚芋泥', '温热', '标准糖', '果汁']
复制代码

同事A:设计

牛逼啊!

同事B:

大家个个都是人才呀!

同事C:

这个例子我一会儿看懂了。

同事D:

想 + 啵啵 + 椰果 + 芋圆 + 厚芋泥 (都加) 怎么办 ?[奸笑]

同事E:

再加一份奶盖,谢谢。

同事F:

请问如今去喝六个核桃还能望获得各位大佬的项背吗?

同事G:

六个核桃我不知道,我以为我要喝脑白金

同事H:

个人理解他的假设就是只有少部分bug是须要三个以上参数同时特定的取值才能踩到的,

因此就放弃了那部分,专一在一两个上,这样能够大大减小枚举个数。

同事 I:

这个例子我快速看了下,任意两个输出之间,至少有2项(两个维度值)不一样,其余3项/4项就更多。而本来的 5 * 5 * 5 * 4 = 500,其中不少输出之间是仅有一项不一样的。因此应该是有统计学理论支撑了某些挑选依据。

同事 J:

大家的分享都这么高端,让后来者很难啊!

......

或许这就是夸夸群吧... [旺柴]

相关文章
相关标签/搜索