参数组合测试利器 - allpairspy

起源


问题

不管是做为专职开发或测试人员,相信你们在编写测试时都遇到过如下难题:python

  • 函数入参组合过多,如何有效设计用例
  • 测试场景变量过多,如何减小用例量

举例

咱们这里拿传统 Web 测试举个栗子 ( 开发人员设计单元测试同理 ):数组

咱们对某移动端 Web 网站设计了 5 个 测试用例,而且须要对其进行不一样 IOS 大版本 ( >=10 ) 以及 最新主流浏览器兼容性测试。因而咱们共有 3 个测试维度:浏览器

  • IE、Firefox、Chrome、UC、QQ
  • IOS 十、 IOS 十一、 IOS 十二、 IOS 13
  • 用例一、用例二、用例三、用例四、用例5

想要实现参数组合全覆盖的话,一共须要覆盖 5 x 4 x 5 = 100 种组合、若是实现了自动化测试这倒不算什么问题,若是是手工测试的话那就比较蛋疼了。函数

解决方案

那么有没有办法能够以最少的用例作到尽量全面的覆盖呢???单元测试

答案固然是确定的~测试

咱们能够采起 pairwise ( 结对测试 ) 的测试策略进行用例设计,减小测试组合的同时最大化用例性价比。网站

什么是 pairwise ?

pairwise 是一种组合测试的设计策略,保证对各个参数两两组合的全覆盖 (通过实践,遍历参数两两组合能够找出绝大部分的 Bug )
,能够有效提升用例设计与执行性价比。 -- 笔者
复制代码

如何使用 pairwise 策略设计测试用例 ?

请看下文 实现~spa

实现


安装

这里咱们直接引用一个简单实用的 python 库 - allpairspy设计

安装过程很是简单:3d

pip install allpairspy==2.4.1
复制代码

核心代码

咱们这里将用代码实现上文中提到的 Web 测试场景下的用例参数组合设计~

if __name__ == "__main__":

    # 导入库
    from allpairspy import AllPairs
    
    # 列出全部参数
    parameters = [
        ["Ie", "Firefox", "Chrome", "UC", "QQ"],
        ["Ios10", "Ios11", "Ios12", "Ios13"],
        ["用例1", "用例2", "用例3", "用例4", "用例5"]
    ]
    
    # 输出 pairwise 参数组合
    if __name__ == '__main__':
        print("PAIRWISE:")
        for i, pairs in enumerate(AllPairs(parameters)):
            print("{:2d}: {}".format(i, pairs))
复制代码

控制台输出以下:

PAIRWISE:
 0: ['Ie', 'Ios10', '用例1']
 1: ['Firefox', 'Ios11', '用例1']
 2: ['Chrome', 'Ios12', '用例1']
 3: ['UC', 'Ios13', '用例1']
 4: ['QQ', 'Ios13', '用例2']
 5: ['QQ', 'Ios12', '用例3']
 6: ['UC', 'Ios11', '用例3']
 7: ['Chrome', 'Ios10', '用例3']
 8: ['Firefox', 'Ios10', '用例2']
 9: ['Ie', 'Ios13', '用例3']
10: ['Ie', 'Ios12', '用例2']
11: ['Firefox', 'Ios12', '用例4']
12: ['Chrome', 'Ios11', '用例2']
13: ['UC', 'Ios10', '用例4']
14: ['QQ', 'Ios11', '用例4']
15: ['QQ', 'Ios10', '用例5']
16: ['UC', 'Ios12', '用例5']
17: ['Chrome', 'Ios13', '用例4']
18: ['Firefox', 'Ios13', '用例5']
19: ['Ie', 'Ios11', '用例5']
20: ['Ie', 'Ios11', '用例4']
21: ['Firefox', 'Ios11', '用例3']
22: ['Chrome', 'Ios11', '用例5']
23: ['UC', 'Ios11', '用例2']
24: ['QQ', 'Ios11', '用例1']

Process finished with exit code 0
复制代码

能够很清晰的看出,咱们成功输出了全部 pairwise 策略下的参数组合,将用例总数从 100 条减小至 25 条, 整整减小了 3/4 ! (当参数愈来愈多时,效果会更明显)

总结


当测试参数组合很是庞大时,使用 pairwise 策略不失为一种恰当的用例设计方法,不管是做为测试亦或是开发,我以为都应该掌握这门技术。

但愿你们能从本篇文章有所收获~

给你们推荐一下个人公众号 「智能测试开发」,欢迎你们扫描下方海报二维码领取 进阶教程~

相关文章
相关标签/搜索