接口测试 组合测试生成参数在接口测试中的探索篇

测试小书童 · 2016年12月12日 · 最后由 leon 回复于 2017年03月01日 · 3780 次阅读

首先看了卡斯的这篇帖子打造接口测试框架 -- 架构篇,讨论后,研究了下组合测试

说明

本次研究的是 PICT 工具应用到接口测试中生成组合参数

组合测试

用更少的组合更简洁的用例,让覆盖率不减少,组合测试的分类:

  • 两因素组合测试(也称配对测试、全对偶测试)生成的测试集可以覆盖任意两个变量的所有取值组合。在理论上,该用例集可以暴露所有由两个变量共同作用而引发的缺陷。
  • 多因素组合测试生成的测试集可以覆盖任意 n 和变量的所有取值组合。在理论上,该测试用例集可以发现所有 n 个因素共同作用引发的缺陷。

较好的测试组合的原则就是

  • 每个因子的水平值都能被测试到;
  • 任意两个因子的各个水平值组合都能被测试到,这就叫配对测试法。 此网站列出了所有的快速组合测试工具: http://www.pairwise.org/tools.asp

PICT 的应用

  • 下载 PICT,配置好环境
  • 设置需要生成的参数。本次以登录接口中的用户名,密码,验证码为例子
  • 接口设置参数说明

    • empt:是否为空
    • right:输入正确的参数
    • error:不存在的用户名
    • format-error:格式错误
    • type:参数类型
  • 配置登录接口 txt

    user_name:user_name:empty:true:type:bool, user_name:right:1851111111:type:str, user_name:error:18522222222:type:str, user_name:format-error:18522222:type:str
    pwd:pwd:empty:true:type:bool, pwd:right:111111:type:str, pwd:error:222222:type:str
    code:code:empty:true:type:bool, code:right:1234:type:str, code:error:3333:type:str
    
  • 生成参数

pict login.txt >login_result.txt
# 生成后txt的接口如下:
user_name   pwd code
user_name:format-error:18522222:type:str    pwd:empty:true:type:bool    code:right:1234:type:str
user_name:right:1851111111:type:str pwd:right:111111:type:str   code:right:1234:type:str
user_name:empty:true:type:bool  pwd:error:222222:type:str   code:empty:true:type:bool
user_name:format-error:18522222:type:str    pwd:error:222222:type:str   code:error:3333:type:str
user_name:error:18522222222:type:str    pwd:empty:true:type:bool    code:empty:true:type:bool
user_name:format-error:18522222:type:str    pwd:right:111111:type:str   code:empty:true:type:bool
user_name:right:1851111111:type:str pwd:empty:true:type:bool    code:error:3333:type:str
user_name:empty:true:type:bool  pwd:error:222222:type:str   code:right:1234:type:str
user_name:empty:true:type:bool  pwd:right:111111:type:str   code:error:3333:type:str
user_name:right:1851111111:type:str pwd:error:222222:type:str   code:empty:true:type:bool
user_name:error:18522222222:type:str    pwd:right:111111:type:str   code:error:3333:type:str
user_name:error:18522222222:type:str    pwd:error:222222:type:str   code:right:1234:type:str
user_name:empty:true:type:bool  pwd:empty:true:type:bool    code:error:3333:type:str

python 处理本生成接口测试参数

def read_pict_param(pict_params, method):
    '''
    读取本地生成好了的接口请求参数
    :param pict_params:  本地路径
    :return: list
    '''
    result = operateFile.read_txt(pict_params)
    l_result = []
    if result:
        for info in range(len(result)):
            if info != 0:
                for item in range(len(result[info])):
                    t_result = result[info][item].split(",")
                    d_t = {}
                    for i in t_result:
                        temp = i.split(":")
                        t = {}
                        # print(temp)
                        t[temp[1]] = temp[2]
                        t[temp[3]] = temp[4]
                        d_t[temp[0]] = t
                    l_result.append(d_t)
        return l_result
if __name__ == "__main__":
    t = read_pict_param(get_variable.PICT_PARAMS_RESULT, "")
    print(t)
  • 看看 python 处理好的参数结果,只要对三个参数进行 12 次测试(1 次是所有参数都对此接口验证通过,其他 11 次都是接口为失败的情况)

其他

后面的接口测试,也会对接进来
@kasi 欢迎一起探讨下

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 11 条回复 时间 点赞

6666,那么快出成果

#5 楼 @kasi 等你的分享,我可走到前面了😁

@lose 我比你早分享那么一点😂

接口入参如何设计,直接影响到接口测试的有效性和覆盖性,重要性不言而喻,需重点研究和探索的部分。可惜的是,关注这篇文章的人不多。

测试小书童 接口组合参数压力测试进阶篇 中提及了此贴 12月16日 20:19

#8 楼 @quqing @lose 请教下,你们的测试请求数据和预期结果数据都是自动生成的吗,还是手工准备的,每个用例都手工准备的话,case 多起来,光数据准备就花很多时间,有没好的方法或者工具可以自动生成的,谢谢

#10 楼 @A_tester 预期结果我的另外一篇帖子也写了分两部分:

匿名 #8 · 2017年02月08日

最近还在想要不要自己想办法去写个什么东西来实现参数的排列组合,赞~

为什么 PICT 生成的组合中没有参数全部正确的组合咧?

simple 接口测试覆盖率设计讨论 中提及了此贴 03月03日 09:11
测试小书童 关闭了讨论 06月18日 15:50
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册