接口自动化测试体系架构

体系架构:全局视野

落地方案-->写脚本、运行脚本、生成报告、测试汇总、工作协同

自动化不是特指某一个技术,指能够提高工作效率技术应用【不局限于工具、代码、硬件】

接口测试流程

1.分析需求

2.接口文档【四要素】

  • 接口请求   路径url

        ·发表:http://XXX/api/v1/topics

  • 请求方式

  • ·http常见请求类型:post、get、put、delete...

        ·提交过程【请求行】看不到的内容-->还有请求头

        ·必须在手机浏览器里面去使用【修改请求头里面user-agent】

  • 请求参数

  • ·不同的接口往往 接口参数也不一样

        ·同一个接口  根据参数的组合  去设计用例

  • 接口响应内容

  • ·决定了你判断接口  是否通过测试一个重要标准

3.设计接口测试用例【评审】

4.执行用例

  • web用例---用户借助浏览器,去操作
  • 接口用例执行---借助工具【jmeter、postman、编程语言、apifox...】
  • 自动化很多层级

            最初级的自动化【能够利用一些工具快速实现效率提升】

                postman里面的断言--自动化测试工具

                postman还可以处理 多接口依赖、参数化、ddt数据驱动

                特点:自动化的范围  局限 用例执行层面

5.整理测试报告

    postman  file->settings->Add-ones(扩展组件)---Download Newman from npm

    newman : 对postman的功能 做了强大的补充

    依赖nodejs环境   <检查是否安装成功 打开命令行  node -v>

    安装Newman:npm install -g newman <检查是否安装成功 打开命令行  newman -v>

  • newman 执行postman的测试脚本 ,自动化生成测试报告
newman run

在postman将相关脚本导出 【json文件】直接终端运行

newman run 【json文件名】/json文件路径  --reporters cli,htmlextra --reporters-htmlextra-export index.html
--reporters 指定我要生成测试报告的一种形式  cli  在当前命令行直接生成

(jmeter-->jmx   postman -->.json)

  • allure集成

        下载allure,配置相关allure环境变量

        newman生成allure报告数据

newman run 【json文件名】/json文件路径  --reporters cli,allure --reporters-allure-export allure-results
        allure 启动查看命令  (在newman命令行中直接运行它的服务) allure serve

6.测试总结、测试报告发送

    测试人员自动化 --不局限于  测试

    团队协作的内容 -- 软件研发团队【超出自动化测试的范畴】

持续集成


        开发、测试、运维、产品---都会接触到持续集成

        集成:提需求、排开发计划、开发部署、测试执行、运维部署

        >微观角度:多个开发人员的代码 集成合并运行、多个测试人员针对多个模块集成

        持续:各个环节的工作,无缝对接

jenkins 持续集成系统工具

                --只要人能够用 计算机命令去实现的事情,jenkins都能做

    不仅仅是能够实现 测试环节工作的自动化

    针对整个 软件研发流程

1>依赖java运行环境

    下载jenkins的war包     启动 java -jar jenkins.war

    jenkins  所有的事情job管理

        构建 -- Execute Windows batch command   直接放命令行  执行测试

        构建后操作 -- Allure Report ----创建一个机器人  直接发送企业微信通知

        保存  ---(后续重复执行 Build Now)

2>自动化

postman中   [tests]   右侧有提示内容:

//断言---接口请求  响应的内容   做自动化判断

判断状态码是否为200  Status code:Code is 200
pm.test("判断状态码是否为200",function(){
    pm.response.to.have.status(200);
});
返回的内容是否有指定字符串  Response body:Contains string
pm.test("Body matches string判断的描述",function(){
    pm.expect(pm.response.test()).to.include("string_you_want_to_search指定字符串");
});
提取接口返回值 Response body:JSON value check
var jsonDate=pm.response.json();

作为下一个接口的变量  Set a collection variable
pm.collectionVariables.set("topic_id",jsonData.topic_id);