性能常识 性能测试-关于怎么造更合理的压测数据疑问。

黑山老妖 · February 15, 2019 · Last by 王_test replied at April 21, 2020 · 2338 hits

1.比如要测登录用户访问某个接口的场景,此时压测数据,假设1000并发,跑3min,共有60000个请求,那是否意味着我们要造6w个用户?按照我的理解,如果只造500个用户或者更少,那么后续的请求中就有重复的用户发出的请求了,如果程序会对相同用户段时间内发出的请求有个缓存处理,那么就会导致压测结果不准确?
2.类似领优惠券的接口压测,假设1000并发,跑3min,共有60000个请求,是否要准备6w个优惠券id的数据,因为这个优惠券id重复,肯定会领取失败的。真实压测都要这么玩嘛,那以后数据量更大了怎么办😂

共收到 8 条回复 时间 点赞

生成压测数据,最好是要符合线上的业务场景,否则测试出来的结果意义并不;
比如正常的业务流程:登录-多次查询-多次下单-多次支付-确认收货等,查询缓存实际上不会造成压测结果的不准确,因为线上就是这样的;如果每次都注册新账号来测试,每次查询都不经过缓存,测出来的结果反而会不准确;

如果确实是要测试某些极端场景,比如缓存击穿,所有请求同时去访问数据库,DB是否能承受得住,这种情况可以通过业务开关,临时关闭缓存功能来测试。

测试数据可以通过脚本模拟生成,也可以直接COPY生产流量,脱敏后使用;
对于第三方服务,比如短信、支付、推送等,因为不是压测的重点,所以可以使用Mock来代替。

arrow 回复

比如支付,有时候有类似秒杀活动,肯定要有支付的,这时候支付也mock?

条件具备的话,肯定需要构造不同的数据
制造的数据,通常比你设定的需要要高些,我一般是高20%左右,确保数据可用
数据造完后,备份下数据库

黑山老妖 回复

一般是这样的。如果真实支付的话,成本会比较大。

arrow 回复

测试环境不是真实支付,不需要成本吧.

黑山老妖 回复

如果不是真实支付的话,就可以了不用Mock了。
但是压测在测试环境进行的话,除非机器配置、服务环境、基础设施这些能和生产环境保持一致,否则测出来的结果也没太大的意义。

arrow 回复

单台机器配置是一样的,不过就是线上搭了集群有好几台

黑山老妖 回复

老哥现在有对这两个问题的解答了吗。。。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up