在当今的软件开发过程中,API(应用程序编程接口)的使用变得越来越普遍,API 允许不同系统之间进行通信和数据交换,从而实现复杂的功能和服务集成,为了确保 API 的可靠性和稳定性,自动化测试至关重要。[Postman] 作为一款功能强大的 API 开发和测试工具,在自动化测试领域扮演着重要的角色。
[Postman] 是一款功能丰富的 API 开发和测试工具,集成了多种功能,包括:
[自动化测试] 是指使用工具或框架自动执行测试用例的过程。它通过模拟用户操作,自动发送请求、验证响应,并判断测试结果是否符合预期。自动化测试可以大大提高测试效率和覆盖率,并减少人为错误。
自动化测试之所以重要,主要有以下几个原因:
自动化测试可以分为不同的类型,根据测试的粒度和范围,常见的类型包括:
此外,自动化测试还可以分为以下几类:
不同的自动化测试类型和类别适用于不同的测试场景和需求,测试人员需要根据实际情况选择合适的自动化测试类型和类别,以实现最佳的测试效果。
更多内容可以学习《测试工程师 Python 工具开发实战》书籍、《大话性能测试 JMeter 实战》书籍
打开 [Postman] 并创建一个新的工作区(Workspace),单击 “请求” 选项卡(Request)并选择要发送的请求类型(如 GET、POST、PUT 等),在 “URL” 字段中输入请求的 URL,在 “Body” 选项卡中选择请求正文的格式(如 JSON、XML、文本等),在 “Headers” 选项卡中添加必要的请求头,在 “Params” 选项卡中添加请求参数。
Postman 的环境变量功能允许你轻松地在不同的环境之间切换,而无需更改请求的 URL 或其他设置。
单击左侧边栏的 “Environments” 选项卡,单击 “+” 按钮以创建一个新的环境,在环境中填写环境变量名和变量值。
环境变量设置后,如果要在请求中使用环境变量,请使用以下语法:
{{environment_variable_name}}
例如,要在请求 URL 中使用名为 “host” 的环境变量,语法为:
{{host}}/api/v1/users
当你在不同的环境之间切换时,Postman 会自动替换环境变量的值,点击页面右上角可切换环境变量。
Postman 允许你使用 JavaScript 在 Tests tab 中编写测试脚本,测试脚本可以用来验证响应状态、响应时间、响应体等。比如我要在 [Postman] 中将下面返回响应的 token 校验字段提取到环境变量中,我要怎么写脚本呢?
{
"code": "0",
"data": {
"token": "fgub938t203t9ug0j2r9it2094942"
},
"message": "success"
}
要提取出上面的 token 校验字段到环境变量中,你可以在 Tests 中写入以下脚本。
var body = JSON.parse(pm.request.body.raw);
var token = body.token;
console.log("Token: " + token);
pm.environment.set("token", token);
一般接口的 token 是用来鉴权的,所以你需要将其存到环境变量中,然后在 Collections 中全局引用这个变量,这样其它接口在测试或者是自动化测试的时候就可以继承这个鉴权的 token 了。
有一点要注意,在集合中设置了鉴权的 token 后,在接口中需要选择 “Inherit auth from parent”,也就是继承父级(继承自集合中设置的 token),不然不会生效的。
Pre-request Scripts 允许你在发送请求之前执行一些脚本。这可以用来动态生成请求参数、设置请求头、修改请求正文等。比如你要在发送请求时在每个请求的请求头加上一些参数,你就可以在集合的 Pre-request Scripts 中编写 Javascript 脚本,这取决于你的需求,形如:
pm.request.headers.add({
key: 'aaaaa',
value: 'bbbbb'
});
当上述步骤完成后,也就是你根据你的业务需求,将接口、环境及环境变量、接口鉴权校验、请求头都设置完毕后,你可以试着点击 “Send” 按钮来调试一下,看看是否符合初步预期,如果符合,接下来就可以在 Postman 中运行自动化测试了。
提个醒,在编写任何自动化测试之前,都要首先确保单个接口能够调试成功,然后逐步往下联调集成,养成良好测试路径,才能事半功倍。
要在 Posmtan 中进行自动化测试,你可以点击集合名上的 “。。。”,然后点击 “Run collection” 选项打开 Runner 页。
在 Runner 页,你可以选择需要测试的接口,然后选择循环次数、间隔时间,也可以上传 Data 文件,这个文件是需要测试的数据,设置完毕后点击 “Run ” 运行即可。
运行完成后,你可以在 Collection Runner 的结果窗口中查看每个请求的执行情况。这包括请求的响应时间、状态码、响应体等信息,这样,一个简单的自动化测试就完成了。
使用 Chai Assertion Library 增强测试能力
Chai Assertion Library 是一个功能强大的 JavaScript 断言库,可以帮助你编写更复杂、更具可读性的测试脚本。Postman 内置了 Chai Assertion Library,因此你可以直接在测试脚本中使用 Chai 的断言方法。
以下是一些 Chai 断言方法的示例:
pm.expect(actual).to.be.equal(expected);
:断言实际值等于预期值。pm.expect(actual).to.be.above(expected);
:断言实际值大于预期值。pm.expect(actual).to.be.below(expected);
:断言实际值小于预期值。pm.expect(actual).to.include(expected);
:断言实际值包含预期值。pm.expect(actual).to.have.lengthOf(expected);
:断言实际值具有指定的长度。这些 Chai 断言方法需要包裹在 pm.test()
中使用。在 Postman 中,pm.test()
是用来编写测试脚本的方法,你可以在其中编写你的测试逻辑,包括断言部分。因此,你应该将这些断言方法放在 pm.test()
中,以确保它们在测试中正确执行,并根据断言结果生成相应的测试结果,例如:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Status code is 200", function () {
pm.expect("actual").to.be.equal("qq");
});
如何利用环境变量在多个请求间传递数据
Postman 的环境变量允许你在不同的请求之间传递数据。这可以用来共享一些公共的数据,例如:用户凭证、API 密钥、测试数据等。具体步骤已经在上文的 2.2 和 2.3 小节讲过,不再具体赘述。简单来讲就是在环境变量
中设置变量及变量值,然后在 Collection 中通过{{}}
引用环境变量即可。
如何将 Postman 测试集成到 CI/CD 流程中
将 Postman 测试集成到 CI/CD 流程中可以帮助你实现持续集成和持续交付。这样,你可以在每次代码更改后自动运行 Postman 测试,并根据测试结果决定是否将更改部署到生产环境。
以下是一些将 Postman 测试集成到 CI/CD 流程中的步骤:
1.安装 Postman Newman
Postman Newman 是一个命令行工具,可以帮助你在 CI/CD 流程中运行 Postman 测试。要安装 Postman Newman,请按照以下步骤操作:
npm install -g newman
2.将 Postman 测试导出为 JSON 或 Collection 文件
要将 Postman 测试导出为 JSON 或 Collection 文件,请按照以下步骤操作:
3.将 Postman Newman 集成到你的 CI/CD 工具中
你可以使用不同的 CI/CD 工具来集成 Postman Newman。以下是一些示例:
pipeline {
agent any
stages {
stage('Run Postman Tests') {
steps {
sh 'newman run /path/to/postman_collection.json'
}
}
}
}
language: node_js
script:
- newman run /path/to/postman_collection.json
version: 2.1
jobs:
run_postman_tests:
docker:
- image: circleci/node:latest
steps:
- checkout
- run:
name: Run Postman Tests
command: newman run /path/to/postman_collection.json
上面的流水线命令你可以在 Postman 中生成,还是在自动化测试的 Runner 页,在页面中点击 “Automate runs via CLI” 选项,然后点击下方的 “Configure command” 即可。
来到配置页,你可以选择相应的平台(比如 Jenkins、Gitlab)来生成对应的 Postman CLI 命令。
测试用例组织技巧
性能和效率优化建议
常见的测试编写错误和解决方案
错误: 使用 pm.test()
来验证响应状态,但没有指定要验证的状态码。
解决方案: 使用 pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
来验证响应状态码为 200。
错误: 使用 pm.expect()
来验证响应正文,但没有指定要验证的值。
解决方案: 使用 pm.expect(pm.response.text()).to.equal("Hello, world!");
来验证响应正文为 "Hello, world!"。
错误: 使用 pm.send()
来发送请求,但没有指定请求方法。
解决方案: 使用 pm.get()
, pm.post()
, pm.put()
, pm.delete()
或其他方法来发送请求,并指定请求方法。
错误: 使用 pm.environment.get()
来获取环境变量,但没有指定要获取的环境变量的名称。
解决方案: 使用 pm.environment.get("API_KEY")
来获取名为 "API_KEY" 的环境变量。
[Postman] 具有多种功能,包括请求构建和发送、响应查看和分析、环境管理、测试脚本编写以及 Mock Server 功能。Postman 的自动化测试功能通过模拟用户操作,自动发送请求、验证响应,并判断测试结果是否符合预期,提高了测试效率和覆盖率,减少了人为错误。
在 [Postman] 中创建自动化测试的步骤包括创建新的请求、使用环境变量管理多个环境、编写测试脚本、使用 Pre-request Scripts、以及运行测试和查看结果。进阶的功能包括利用 Chai Assertion Library 增强测试能力、使用环境变量在多个请求间传递数据,以及将 Postman 测试集成到 CI/CD 流程中。最佳实践包括测试用例组织技巧、性能和效率优化建议,以及常见的测试编写错误和解决方案。
更多内容可以学习《测试工程师 Python 工具开发实战》书籍、《大话性能测试 JMeter 实战》书籍