网站建设的视频教程,合肥专业做网站的公司有哪些,个人做外贸接订单网站,微信小程序推广软件说明 API 测试是软件测试的一种形式#xff0c;涉及直接测试 API 并作为集成测试的一部分#xff0c;以确定它们是否满足功能、可靠性、性能和安全性的预期。 先决条件#xff1a; JavaScript 基础知识。Node.js 安装在您的计算机上。如果没有#xff0c;请在此处下载。npm… 说明 API 测试是软件测试的一种形式涉及直接测试 API 并作为集成测试的一部分以确定它们是否满足功能、可靠性、性能和安全性的预期。 先决条件 JavaScript 基础知识。Node.js 安装在您的计算机上。如果没有请在此处下载。npm节点包管理器它是 Node.js 附带的。对 API 和 HTTP 方法GET、POST、PUT、DELETE有基本了解。
第 1 章了解 API 测试
1.1 什么是API
API 代表应用程序编程接口。它是一组允许程序相互通信的规则。开发人员在服务器上创建 API 并允许客户端与其对话。
1.2 什么是API测试
API 测试是一种软件测试通过测试应用程序编程接口 (API) 来确定它们是否满足功能、可靠性、性能和安全性的预期。由于 API 缺乏 GUI因此 API 测试是在消息层执行的。
1.3 为什么 API 测试很重要
API 测试对于发现其他测试级别难以检测的缺陷类型至关重要例如与集成和功能相关的问题。
第 2 章API 测试规划
规划对于 API 测试至关重要。以下是规划时需要考虑的一些步骤
了解 API您需要了解您正在测试的 API 的用途。它可以像处理登录功能一样简单也可以像管理大型系统的数据交换一样复杂。定义结果在开始测试之前您应该知道您期望的结果。如果没有这种理解您将无法知道 API 是否按预期运行。定义您的测试确定您要测试的内容。您可以测试 API 的功能、可靠性、安全性和/或性能。每一个都需要不同的方法。准备测试环境在开始测试之前设置测试环境。这包括拥有任何必要的数据库和服务器并确保 API 可访问。创建测试用例测试用例包括测试步骤、条件和输入。提前准备好这些是很重要的。
第 3 章API 测试最佳实践
为确保有效的 API 测试请遵循以下最佳实践
测试典型负载、最大负载和最小负载始终检查 API 在典型负载、峰值负载和最小负载条件下的行为方式。确定 API 函数调用的优先级根据使用频率、重要性和实现复杂性确定 API 测试的优先级。按测试类别对 API 测试用例进行分组这可确保一个类别的所有测试用例按顺序执行从而节省时间。使用自动化进行回归、负载和性能测试手动测试可能非常耗时且容易出错因此建议尽可能实现自动化。监控生产中的 API持续监控 API 的性能以确保其功能、可靠性和安全性。
第 4 章设置环境
首先我们将设置我们的项目。导航到您的项目目录并初始化一个新的 Node.js 项目
npm init -y
接下来我们需要安装jest用于测试和axios发出 HTTP 请求
npm install --save-dev jest axios
为您的测试创建一个新文件例如api.test.js.
第 5 章编写基本测试
5.1 测试GET请求
const axios require(axios);test(User with ID 1 exists, async () {const response await axios.get(https://jsonplaceholder.typicode.com/users/1);expect(response.status).toBe(200);
});
5.2 测试响应内容
test(User with ID 1 has name Leanne Graham, async () {const response await axios.get(https://jsonplaceholder.typicode.com/users/1);expect(response.data.name).toBe(Leanne Graham);
});
5.3 测试POST请求
test(Create a new user, async () {const user {name: Test User,username: testuser,email: testuserexample.com};const response await axios.post(https://jsonplaceholder.typicode.com/users, user);expect(response.status).toBe(201);
});
第 6 章运行测试
在您的“脚本”部分添加以下内容package.json
scripts: {test: jest
}
您现在可以使用以下命令运行测试
npm test
这是使用 JavaScript 进行 API 测试的基本介绍。请记住随着您的系统变得更加复杂您的测试将需要变得更加复杂。测试愉快
第 7 章不同类型的 API 测试
7.1 验证测试
验证测试可确保 API 以正确的格式返回正确的数据。
test(User email is valid, async () {const response await axios.get(https://jsonplaceholder.typicode.com/users/1);expect(response.data.email).toMatch(/\S\S\.\S/);
});
7.2 功能测试
功能测试验证 API 是否按预期工作以及所有端点交互是否正常运行。
test(Create a new post, async () {const post {title: foo,body: bar,userId: 1};const response await axios.post(https://jsonplaceholder.typicode.com/posts, post);expect(response.data.title).toBe(foo);expect(response.data.body).toBe(bar);expect(response.data.userId).toBe(1);
});
7.3 安全测试
安全测试可验证您的 API 是否免受攻击和漏洞的影响。
test(Cannot access secured endpoint without token, async () {try {await axios.get(https://myapi/secure);} catch (error) {expect(error.response.status).toBe(401);}
});
7.4 错误检测
错误检测检查 API 如何处理故障。它会崩溃吗它是否返回有意义的错误消息
test(Non-existent endpoint returns 404, async () {try {await axios.get(https://jsonplaceholder.typicode.com/nonexistent);} catch (error) {expect(error.response.status).toBe(404);}
});
第 8 章自动化 API 测试
您可以使用 GitHub Actions、CircleCI、Travis CI 或任何其他 CI/CD 工具来自动化测试。每次推送代码更改时该工具都会自动运行您的测试。
第 9 章模拟 API 响应
Jest 允许您在测试中轻松模拟模块。这是一个模拟 axios 获取响应的示例
jest.mock(axios);axios.get.mockResolvedValue({data: {id: 1,name: Leanne Graham}
});test(Get user with ID 1, async () {const response await axios.get(https://jsonplaceholder.typicode.com/users/1);expect(response.data.name).toBe(Leanne Graham);
});
第 10 章高级 API 测试概念
10.1 负面测试 负面测试是指向 API 提供无效输入以确保它可以正常处理并返回适当的错误消息。
test(Cannot create user without email, async () {const user {name: Test User,username: testuser};try {await axios.post(https://jsonplaceholder.typicode.com/users, user);} catch (error) {expect(error.response.status).toBe(400);}
});
10.2 API 链接 API 链接涉及使用一个 API 调用的响应来触发另一个 API 调用。当必须根据前一个 API 的响应触发一系列 API 时这一点非常重要。
test(Get posts by user with ID 1, async () {const userResponse await axios.get(https://jsonplaceholder.typicode.com/users/1);const postsResponse await axios.get(https://jsonplaceholder.typicode.com/posts?userId${userResponse.data.id});expect(postsResponse.data[0].userId).toBe(1);
});
10.3 API 中的 OAuth 如果您的 API 使用 OAuth 进行身份验证和授权您可能需要在测试中处理令牌生成和刷新。
test(Cannot access resource without token, async () {try {await axios.get(https://myapi/resource);} catch (error) {expect(error.response.status).toBe(401);}
}); 本教程涵盖了使用 JavaScript 进行 API 测试的基础知识和一些高级概念。请记住随着您的应用程序的增长您的测试和方法也会随之增长。测试愉快瓦利德·穆萨