扫码阅读
手机扫码阅读
当我遇到10亿参数组合

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。


FunTester
扫码关注公众号
接口测试案例摘要
在进行接口测试时,面临的一个挑战是测试一个参数范围广泛的接口,其参数组合可能达到10亿级别。目标是遍历所有参数组合以进行测试。
初版方案
起初采用了多层循环嵌套并发发起请求的简单方法。这个方案虽简单,但存在明显缺陷:由于组合数量太大,导致线程池拒绝执行过多的异步任务,且无法控制QPS和并发数。为解决第一个问题,虽然增加了异步线程池的等待队列长度,但这带来了内存压力过大的新问题。
升级版
为了解决无法控制QPS和并发数的问题,转而利用性能测试框架动态调整QPS的功能,通过将所有参数遍历存入列表,再通过动态QPS模型发送请求。这种方法解决了之前的问题,但新问题随之出现:大量数据存储导致的内存不足问题,反映在CPU使用率急剧上升,主要由GC活动导致。
终版
最终解决方案采用了线程安全队列LinkedBlockingQueue
和异步生成请求参数的方法,通过休眠和队列长度控制,保证了内存和CPU的有效利用,满足了遍历10亿参数组合的测试需求。作者还计划基于队列的学习经验,开发10亿级别的日志回放功能,并与现有的chronicle性能测试工具进行效能对比。
FunTester原创专题推荐
- 接口功能测试专题
- 性能测试专题
- Groovy专题
- Java、Groovy、Go、Python
- 单测&白盒
- FunTester社群风采
- 测试理论鸡汤
- FunTester视频专题
- 案例分享:方案、BUG、爬虫
- UI自动化专题
- 测试工具专题
想要了解更多内容?


FunTester
扫码关注公众号
FunTester的其他文章
Groovy def关键字妙用
在之前的文章和视频中,我分享过Groovy语法中def关键?
Selenium等待:sleep、隐式、显式和Fluent
Selenium等待页面加载在Selenium自动化测试中起着重要的作用。它们有助于使测试用例更加稳定,增强健壮性。
通用池化框架commons-pool2功能拓展
最近真真实实用到了通用池化框架commons-pool2,又学到
物联网测试
在现在以及不远的未来家里的空调、冰箱房门可能有一个共同点:互联网连接。这种新现象被称为物联网。所有这些连接的硬件也由软件驱动的,这些软件应该经过软件测试。
Java 序列化10倍性能优化对比测试
今天分享 Java 对象序列化的不同方法,并对不同序列化方式的性能进行基准测试。
加入社区微信群
与行业大咖零距离交流学习


PMO实践白皮书
白皮书上线
白皮书上线