不同类型的API测试
在本文中,您将了解4种类型的API测试 :
- 烟雾测试(Smoke Test)
- 负载测试(Load Test)
- 压力测试(Stress Test)
- 浸泡测试(Soak Test)
我将使用k6演示如何进行测试,刚入门的朋友可以看看我发布或转发的文章以了解更多,您也可以参考官方的指南。
我将对以下脚本进行更改以适应测试的需求:
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
烟雾测试(Smoke Test)
验证您的API是否可以处理最小负载而没有任何问题。
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
vus: 1, // 单个虚拟用户
duration: '1m', // 测试时间为1分钟
thresholds: {
http_req_duration: ['p(99)<1500'], // 100之99的请求必须在1.5秒内完成
},
};
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
负载测试(Load Test)
访问API的性能(性能测试)。
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
stages: [
{ duration: '5m', target: 100 }, // 在5分钟内将虚拟用户从1增加到100
{ duration: '10m', target: 100 }, // 保留100虚拟用户用户10分钟
{ duration: '5m', target: 0 }, // 在5分钟内将虚拟用户从100降低到0
],
thresholds: {
http_req_duration: ['p(99)<1500'], // 100之99的请求必须在1.5秒内完成
},
};
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
压力测试(Stress Test)
评估API极限以及在极端条件下的稳定性。
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
stages: [
{ duration: '2m', target: 100 }, // 低于正常负载
{ duration: '5m', target: 100 },
{ duration: '2m', target: 200 }, // 正常负载
{ duration: '5m', target: 200 },
{ duration: '2m', target: 300 }, // 突破点
{ duration: '5m', target: 300 },
{ duration: '2m', target: 400 }, // 超于突破点
{ duration: '5m', target: 400 },
{ duration: '10m', target: 0 }, // 恢复阶段
};
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
浸泡测试(Soak Test)
长时间测试API的可靠性和性能。
import http from 'k6/http';
import { sleep } from 'k6';
export let options = {
stages: [
{ duration: '2m', target: 400 }, // 在2分钟内将虚拟用户从1增加到400
{ duration: '4h', target: 400 }, // 保留100虚拟用户用户4个小时
{ duration: '2m', target: 0 }, // 在2分钟内将虚拟用户从400降低到0
],
};
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
运行测试
保存脚本为script.js
并运行以下命令:
k6 run script.js
测试愉快!