在自动化测试工作中,测试人员所花时间最多的地方就是编写自动化测试用例,而把自动化测试用例一条一条写入自动化平台更是耗时巨大,把机械重复的事情自动化,本来就是自动化测试人员的职责,那么这件重复而又繁琐的事情当然该用自动化的方式解决.
在这里插入图片描述

分析公司自动化平台

我司做接口自动化采用的是阿里云效平台,自己手动在平台录入一条接口自动化案例,通过charles抓包可以看到,客户端(浏览器)与服务端之间的通信报文是明文. 这就太好了,不需要去解决报文加密的问题.
在这里插入图片描述

设计思路

通过人工录入测试用例可以看到,此自动化测试平台每个用例有用例标题,用例请求头,报文,断言等多个字段,同时还会有用例所在项目,创建用例的测试人员名字等基本组织结构.

我司所有系统接口报文格式分为json,xml,json+xml,还有几个小众的系统就暂不考虑了.

设计以下文件,由测试人员填写,传入本用例生成平台.

  1. 项目信息文件projectInfo.csv
    前面三个即是本组用例所在项目结构, req_url是本接口的请求地址.
    在这里插入图片描述

  2. 手工用例文件 testcase.xlsx
    对照本接口的接口文档,逐个字段编写即可. name是字段名,value是正常值,err是异常值,每个可选值中间以|分隔,每个可选值又会在云效上生成一条自动化用例.
    这个例子的用例,一共可以在云效平台生成55个自动化用例.
    理论上,这样批量生成的接口自动化用例,可以实现单接口所有字段的所有可选值全覆盖.在这里插入图片描述

  3. 本接口示例报文,开发提供或者直接在日志里捞取,不用修改任何字段,直接另存为文件test.jsontest.xml

    {
      "head": {
        "sysCode": "EBK",
        "appsInfo": "",
        "optime": "1591344721472",
        "appVer": "20191211",
        "netType": "WIFI",
        "rocket": "A20060516123Ni7iw02Je5T440231on76R5M7",
        "versionName": "5.1.5",
        "deviceId": "86916102396",
        "deviceName": "Xiaomi--gemini",
        "osVer": "8.0.0",
        "osType": "ADR",
        "quickTrace": "740991",
        "staticInfo": "",
        "dynamicInfo": "",
        "channelCode": "ENK"
      },
      "body": {
        "findModle": "0",
        "cardNo": "110003228000002"
      }
    }
    

为了方便快捷,本项目使用flask框架.

收到用户上传的文件, 解析成HttpRunner能用的jsoncsv文件,然后通过HttpRunner框架,发送报文给云效服务端,批量生成测试用例.

在这里插入图片描述

根据用户上传的 testcase.xlsx, 后台生成的test.csv文件示例
在这里插入图片描述

驱动HttpRunner脚本:

{
    "config": {  
        "name": "create users with uid"    
    },
    "testcases": 
       {
           "ceshi1":{
            "testcase": "./sat/json_post.json",
            "parameters": {
                "appId-interfaceId-serviceId-owner-cookie-req_url-paraId-rexResult-header_cookie": "${P(./sat/data/projectInfo.csv)}",
                "testname-testraw-resdata": "${P(./sat/test.csv)}"
              }
    }
   
}

上线的前端界面

在这里插入图片描述

在这里插入图片描述

结尾

该项目上线之前,一个测试人员在不被任何人打断的情况下,往云效平台录入一个接口自动化用例,大概需要10分钟.
该项目上线之后,一个测试人员一天可以录入上千条测试用例,并且可以完整的覆盖一个接口的所有字段的所有可选值,达到100%覆盖效果.


再也没有人去手工录入接口自动化案例了.

Logo

一站式 AI 云服务平台

更多推荐