使用postman 自动化测试接口
为什么需要自动化测试
软件测试是软件开发的重要组成部分,是贯穿整个软件生命周期,对软件产品进行验证和确认的活动过程,其目的是尽早发现软件产品中存在的各种问题,如与用户需求、预先定义不一致等问题。
随着代码库的增长,需要确保自己没有破坏自己以前可以正常运行的任何功能。测试覆盖率越高,代码将越灵活且具有更好的抗错误性。
单元测试
对软件中的最小可测试单元进行检查和验证,具体来说就是开发者编写一小段代码,用于检验被测代码的一个很小的,很明确的功能是否正确。
集成测试
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 也就是说,在集成测试之前,单元测试应该已经完成,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价
系统测试
是对整个系统的测试,将需测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件数据等其他系统元素及环境结合在一起测试, 系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。
接口测试流程
接口测试一般遵循如下流程,细节部分可根据实际项目情况进行调整。
编写接口测试计划
一般来说,接口测试计划包含概述、测试资源、测试功能及重点、测试策略、测试风险、测试标准。
编写、评审接口测试用例
和功能测试类似,在开始接口测试前,需要根据需求文档、接口文档等项目相关文档编写并评审接口测试用例。
执行接口测试
依据编写的接口测试用例,借助测试工具(如 Postman、JMeter、SoapUI 等)执行接口测试,上报发现的问题。
接口自动化测试持续集成要点
进行项目测试时,接口会增加、减少或变更,测试用例也会相应更新,因此需要借助工具(如 GitHub 等)来维护测试用例进行持续集成,通过自动化测试实时监控项目接口运行情况。对接口测试而言,持续集成是核心内容,通过自动化的手段才能做到低成本、高收益。接口自动化测试持续集成主要包括以下内容。
① 流程方面。在回归阶段加强接口异常场景的覆盖,并逐步向系统测试、冒烟测试阶段延伸,最终达到全流程自动化。
② 结果展示。更加丰富的结果展示、趋势分析、质量统计和分析等。
③ 问题定位。报错信息、日志更精准,方便问题复现与定位。
④ 结果校验。加强自动化校验能力,如数据库信息校验。
⑤ 代码覆盖率。不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。
⑥ 性能需求。完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。
初识postman
创建一个request
将请求保存到collection
运行collection
编写测试用例
postman 内置包含了一些js模块(chai,lodash,tv4 uuid xml2js)等,具体可以查看文档
只需要require 就可以使用
var uuid = require('uuid');
console.log(uuid())
HTTP响应状态码
1××:指示信息,表示请求已接收,继续处理。 2××:成功,表示请求已被成功接收、理解和接受。 3××:重定向,要完成请求必须进行更进一步的操作。 4××:客户端错误,请求有语法错误或请求无法实现。 5××:服务器错误,服务器未能实现合法的请求。 以下对常见状态代码和状态描述进行说明。 200 OK:客户端请求成功。 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。 401 Unauthorized:请求未经授权。 403 Forbidden:服务器收到请求,但是拒绝提供服务。 404 Not Found:请求资源不存在,如输入了错误的 URL。 500 Internal Server Error:服务器发生不可预期的错误。 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
测试脚本流程
Pre-request 在请求之前,tests在请求之后。
项目示例
我们可以使用官方模板来,查看如何编写测试用
- 注册登录,用户鉴权
- rest API
TDD测试驱动开发
在开发功能代码之前,先编写单元测试用例代码,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。
- 接口路径
- 接口状态码
- 请求参数
- 返回结果
postman 脚本 newman
Newman是Postman的命令行运行程序,要运行Newman,请确保您具有Node.js> = v10
安装
yarn init -y //项目初始化
yarn add newman //安装newman
使用
新建一个js文件index.js
, ./sample-collection.json
文件可以通过postman导出。
const newman = require('newman');
// call newman.run to pass `options` object and wait for callback
newman.run({
collection: require('./sample-collection.json'),
reporters: 'cli',
environment: {
name: 'dev',
values: [
{
key: 'base_url',
value: 'http://10.1.11.235',
enabled: true,
}
],
},
}, function (err) {
if (err) { throw err; }
console.log('collection run complete!');
});
运行
node index.js
就可以运行,运行完成后测试报告就打印在命令行中。
安装 newman-reporter-html
, 修改报告生成,就可以生成html 形式的测试报告
...
- reporters: 'cli',
+ reporters: ['cli',html],
...
文件上传
将上传文件sample-file.txt
和collection.json
在同一个目录中就可以测试文件上传接口。
{
"info": {
"name": "file-upload"
},
"item": [
{
"request": {
"url": "https://postman-echo.com/post",
"method": "POST",
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"enabled": true,
"src": "sample-file.txt"
}
]
}
}
}
]
}
持续集成
整合github
整合Jenkins
总结
优点
- Postman 安装简单、使用方便、功能强大,另外,这也是开发人员常用的接口调试工具
- 接口文档生成,版本管理
- 导入导出
- CI/CD 对接到各个平台
缺点
- request名称重复容易导致请求错误
- 客户端编写js,不是很方便,没有代码自动提示
相关文章
- 数据资产管理:数据到底有没有价值,有什么价值?
- ISO 镜像已放出,Linux Mint 21.1“Vera”正式发布
- 权限系统就该这么设计,yyds
- 利用树莓派和乒乓球制作一个假日彩灯
- 几个提升Go语言开发效率的技巧,你学会几个?
- GitLab在CockroachDB和YugabyteDB上的兼容性对比之系统初始化
- 统信软件打造核心生态攻坚战略,着力发展从量到质的生态圈
- Openharmony 游戏开发探索之军棋翻翻棋实现
- 面试突击:请求转发和请求重定向有什么区别?你懂了吗?
- 缩短 Linux 命令并节省时间的四种方法
- 探讨:你认为微软Windows 12可以在哪些方面改进?
- 如何在 Linux 系统中访问 UEFI 设置
- 从 B 站崩溃报告看分布式系统的技术栈
- Windows 11 学院:如何让 Windows 11 系统托盘显示秒数
- 三个绝招解决代码重复
- 如何利用大数据驱动业务增长?
- 善用企业数据战略,无惧混合云和多云环境挑战
- 一文搞懂响应式编程
- 修复八处漏洞,谷歌 Chrome 浏览器 108 维护版本更新发布(附下载链接)
- 助推数字经济发展 大数据产业高速增长动力十足