扫码阅读
手机扫码阅读
当我遇到10亿参数组合
366 2024-04-03
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:当我遇到10亿参数组合
文章来源:
FunTester
扫码关注公众号
接口测试案例摘要
在进行接口测试时,面临的一个挑战是测试一个参数范围广泛的接口,其参数组合可能达到10亿级别。目标是遍历所有参数组合以进行测试。
初版方案
起初采用了多层循环嵌套并发发起请求的简单方法。这个方案虽简单,但存在明显缺陷:由于组合数量太大,导致线程池拒绝执行过多的异步任务,且无法控制QPS和并发数。为解决第一个问题,虽然增加了异步线程池的等待队列长度,但这带来了内存压力过大的新问题。
升级版
为了解决无法控制QPS和并发数的问题,转而利用性能测试框架动态调整QPS的功能,通过将所有参数遍历存入列表,再通过动态QPS模型发送请求。这种方法解决了之前的问题,但新问题随之出现:大量数据存储导致的内存不足问题,反映在CPU使用率急剧上升,主要由GC活动导致。
终版
最终解决方案采用了线程安全队列LinkedBlockingQueue
和异步生成请求参数的方法,通过休眠和队列长度控制,保证了内存和CPU的有效利用,满足了遍历10亿参数组合的测试需求。作者还计划基于队列的学习经验,开发10亿级别的日志回放功能,并与现有的chronicle性能测试工具进行效能对比。
FunTester原创专题推荐
- 接口功能测试专题
- 性能测试专题
- Groovy专题
- Java、Groovy、Go、Python
- 单测&白盒
- FunTester社群风采
- 测试理论鸡汤
- FunTester视频专题
- 案例分享:方案、BUG、爬虫
- UI自动化专题
- 测试工具专题
想要了解更多内容?
查看原文:当我遇到10亿参数组合
文章来源:
FunTester
扫码关注公众号
FunTester的其他文章
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线