接口自动化测试体系架构
体系架构:全局视野
落地方案-->写脚本、运行脚本、生成报告、测试汇总、工作协同
自动化不是特指某一个技术,指能够提高工作效率技术应用【不局限于工具、代码、硬件】
接口请求 路径url
·查看:http://XXX/api/v1/topic/帖子ID
·发表:http://XXX/api/v1/topics
请求方式
·http常见请求类型:post、get、put、delete...
·提交过程【请求行】看不到的内容-->还有请求头
·必须在手机浏览器里面去使用【修改请求头里面user-agent】
请求参数
·不同的接口往往 接口参数也不一样
·同一个接口 根据参数的组合 去设计用例
接口响应内容
·决定了你判断接口 是否通过测试一个重要标准
web用例---用户借助浏览器,去操作
接口用例执行---借助工具【jmeter、postman、编程语言、apifox...】
自动化很多层级
最初级的自动化【能够利用一些工具快速实现效率提升】
postman里面的断言--自动化测试工具
postman还可以处理 多接口依赖、参数化、ddt数据驱动
特点:自动化的范围 局限 用例执行层面
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
测试人员自动化 --不局限于 测试
团队协作的内容 -- 软件研发团队【超出自动化测试的范畴】
持续集成 --> 将 软件工程 里面的各个环节的工作实现自动化
开发、测试、运维、产品---都会接触到持续集成
集成:提需求、排开发计划、开发部署、测试执行、运维部署
>微观角度:多个开发人员的代码 集成合并运行、多个测试人员针对多个模块集成
持续:各个环节的工作,无缝对接
--只要人能够用 计算机命令去实现的事情,jenkins都能做
不仅仅是能够实现 测试环节工作的自动化
针对整个 软件研发流程
下载jenkins的war包 启动 java -jar jenkins.war
jenkins 所有的事情job管理
构建 -- Execute Windows batch command 直接放命令行 执行测试
构建后操作 -- Allure Report ----创建一个机器人 直接发送企业微信通知
保存 ---(后续重复执行 Build Now)
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);