如何对N个接口按比例压测
随着微服务盛行,公司的服务端项目也越来越多。单一的接口性能测试并不能准确反映某个服务的总体处理能力,在服务功能划分比较清晰的架构下,对于某一服务的总体性能测试也相对变得简单。下面分享一个对于某个模块对应的服务的N个接口按照固定比例(来源于线上监控)进行性能测试,基于自己写的性能测试框架第二版。
场景:该服务3个接口,比例为1:2:3。
这里为了保证请求不被线程共享,我使用了自己的重写的request深度拷贝的方法拷贝HttpRequestBase对象,这里一定要去做处理,不然线程共享会导致mark请求标记失败,一定要多注意一下Serializable
接口的实现,不然会导致拷贝MarkRequest
对象拷贝失败,request标记会混乱,还有一种办法就是重写MarkRequest
的clone()
方法也行,如果是使用Groovy语言,建议选择后者。
public static void main(String[] args) {
def argsUtil = new ArgsUtil(args)
def thread = argsUtil.getIntOrdefault(0, 2)
def times = argsUtil.getIntOrdefault(1, 5)
def split = argsUtil.getStringOrdefault(3, "1:2:3").split(":")
def base = getBase()
def flow = new Flow(base)
flow.kSearch("测试")
def request1 = FanLibrary.getLastRequest()
flow.getPlatformK(12)
def request2 = FanLibrary.getLastRequest()
flow.getPaperType()
def request3 = FanLibrary.getLastRequest()
MarkRequest mark = new MarkRequest() {
private static final long serialVersionUID = -2751325651625435073L;
String m;
@Override
public String mark(HttpRequestBase request) {
request.removeHeaders("requestid");
m = m == null ? RString.getStringWithoutNum(4) : m
String value = "fun_" + m + CONNECTOR + Time.getTimeStamp();
request.addHeader("requestid", value);
return value;
}
};
def requests = []
split[0].times {
requests << new RequestThreadTime(request1, times)
}
split[1].times {
requests << new RequestThreadTime(request2, times)
}
split[2].times {
requests << new RequestThreadTime(request3, times)
}
List<HttpRequestBase> res = []
thread.times {
res << requests
}
new Concurrent(res, "对于模块**按照比例${split}压测线程数${thread}次数${times}").start()
allOver();
}
- 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 性能测试框架第二版
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 将swagger文档自动变成测试代码
- 基于java的直线型接口测试框架初探
- Selenium 4.0 Alpha更新日志
- Selenium 4.0 Alpha更新实践
- 如何统一接口测试的功能、自动化和性能测试用例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南