工作中遇到一个问题,管理端有个接口 (get 请求),去获取服务器的数据。线上环境由于数据量过大,会经常请求失败。而测试环境数据量小就不会出现这个问题。
从接口测试的角度,如何在测试环境去模拟这种数据量较大的情况测试,测试标准怎么定呢?
这不就是性能测试(压力测试)?
如果是数据总量大,那就分页处理就好了。
如果是单条数据的数据量大,那就评估下这个接口返回的数据是否是必要的,是否可以拆分。
这个和性能没什么关系,主要还是设计层面的问题
容量测试可以
“小”、“过大”、“较大”,都是定性描述。
对要测的数据量 “较大” 场景进行定量 (比如 300 万) 描述,然后测试环境定量创建或导入数据即可
我们现在只有一个测试环境是开发搭建和维护的,在这个环境就去制造大量数据去测试的方法可以用但是会造成测试环境大量废弃的数据,而且当时接口也没有性能测试,能不能大批量创建成功也是个问题。我突然发现我提的这个问题不太对,这个是服务器性能的问题,从接口请求上去验证不可行是吧
这个问题开发在查询数据的方式上做了优化处理,但是测试环境无法直接验证。看大家的回复都是在测试环境去制造数据测试,不知道除此之外还有没有更好的方法
由于第一段话和第二段话的逻辑看起来很奇怪,没有能完全理解,上面已经有人说了,你的问题其实不是测试问题,而是本身服务端实现就存在已知的性能问题,和你做性能测试没有关系,问题在线上已经验证出来了,接下来应该是排查修改。
下面尝试回答你的两个问题。
问题 1:如何在测试环境去模拟这种数据量较大的情况测试
问题 2:测试标准怎么定
我假设你说的是性能测试标准,一般主要关注以下维度:
思路是,在一定时长范围内,满足 xx% 响应率,能压到多少 QPS,这个 QPS 是否达到预定目标,在压测过程中有没有发现资源问题……具体数值,要从线上历史数据去分析预测,与研发和产品商讨确定。具体可以看看服务端压测怎么做。
不知道楼主除了从怎么做场景模拟的角度外,有没有考虑过分析这类故障出现的原因?
我们以前类似这种测试环境没问题,一到线上大数据量就扛不住的情况,大多是 sql 本身写得不好,没命中索引引起全表查询导致。测试环境数据量少,所以全表查也没多慢。线上有些大表是千万级数据的,全表查一下就 gg 了,不仅接口响应超时,还可能由于占住了连接数,导致数据库很快连接数资源就被用尽,引起所有查库操作卡住的大问题。
如果楼主是类似情况,可以考虑在测试环境做一下所有实际执行 sql 的监控及检测。现在有一些 sql 检测工具是可以直接自动分析出 sql 的执行是不是会引起全表查询的(或者简单点,拿到线上库里分析下执行计划,也可以看出查询数据量情况),只要查询量达到一定量级,有性能风险的,都直接做预警,要求优化后才能上线。印象中 mtsc 大会上唯品会、微众银行也有类似这样的 sql 性能检测实践经验分享。