扫码阅读
手机扫码阅读
当我遇到10亿参数组合
388 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的其他文章
Go语言协程池实现
对于性能测试来讲,使用编程语言实现性能测试用例?
Groovy as关键字性能测试
之前写了文章介绍Groovy关键字as,我个人是十分推荐??
连续测试策略
尽管这些公司花费大量时间和金钱来改变他们的开发流程(敏捷开发),但是仅仅通过选择一些自动化工具,写一些自动化项目,根本无法实现「PPT」上描述的的「没好愿景」。
Selenium自动化的JUnit参数化实践
作为自动化测试人员,经常会遇到这样Selenium测试自动化场景:需要一次又一次地执行相同的测试用例,只是使用不同的输入和环境配置,从而使工作变得冗长且多余。
Kafka性能测试初探
Kafka是一种高性能的分布式消息系统。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线