扫码阅读
手机扫码阅读

当我遇到10亿参数组合

383 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自动化专题
  • 测试工具专题
这个摘要概述了文章中提到的接口测试的一个案例,从初版方案的问题,升级版的尝试,到最终解决方案的实现,以及作者对未来工作的规划。同时,也提供了FunTester原创专题的推荐列表。

想要了解更多内容?

查看原文:当我遇到10亿参数组合
文章来源:
FunTester
扫码关注公众号