影响性能测试结果的因素有很多,硬件环境、软件环境都会影响性能测试结果。今天我要分享的是场景对性能测试的影响。
在做性能测试时一定要调研实际的用户场景。模拟实际用户场景进行性能测试,也是性能测试中不容忽视的一点,下面举个我自己实际碰到的例子来说明这个问题。
我负责的一个机考项目,在上线前进行了性能测试,主要场景包括:登录、获取试题、答题、提交试卷这几个步骤。压测时各场景都没问题,在足够大的并发时,响应时间也很短。但是在系统上线七八个月的时候,有两家机考(共一百多家)反应,考试答题点击下一题时很慢,要等两分多才能跳到下一题。出现这个问题,一开始也是摸不着头脑,一百多家怎么偏偏就两家反应这个问题,并且之前也都是好好的,完全不慢。再次进行压测发现单单看答题这个请求,响应并不慢。但是在对比之前的压测报告后发现,取题这个请求响应时间明显比之前长很多。跟开发一起讨论后得出结论:题库数量庞大,导致取题变慢。原来我做压测时并没有考虑到题库试题数量这一块,实际场景是每考一次试都要从国家局下载试题到机考系统,这样随着考试次数的增加,题库数量也会增加。
发现上面这一点也还是解释不了,为什么点击下一题会等那么久。难道是获取试题影响了答题?可是获取试题怎么会影响到答题呢,难道答题时有人还在获取试题?经询问,实际场景是:学员是陆陆续续进入考场考试的,入场完一个进一个,没个人入场操作差不多1-2分钟。按照用户的实际场景调整压测脚本后,果然出现了答题请求响应时间很长,差不多两分钟的现象。
由上面的例子,我是亲身体会到压测要考虑实际场景,不按实际场景测,谁也不知道会出现什么样的幺蛾子。