性能测试实战--《软件测试52讲》
1、性能测试工具常见5组件及作用:
模拟用户行为生成脚本:loadrunner有录制功能,转化为基于协议的请求。jmeter有badboy
压力产生器:可能由于压力产生器本身的性能瓶颈(设备本身也会存在较高的资源消耗,例如CPU、内存、网卡带宽吃满,磁盘IO读写频繁,处理器排队严重等;当出现这类情况后,测试设备本身就会出现瓶颈,无法产生预期的并发压力,从而我们测试得到的数据也就不具有可参考性了),无法产生预期并发-->解决:测试过程中增加对压力产生器的监控,以保证能达到预期的压力
由于网络延迟,可能产生的并发会低于预期-->解决:设定的并发数稍高于预期
压力控制器
监控器
结果记录及分析
2、服务器端性能测试流程:
1、需求分析(难):性能需求收集和负载计划制定。系统整体并发布数,高峰时期的时间,高峰操作的业务比例,达到最高峰花费的时间。分析现有的系统情况/预估未来情况/同类产品的情况建模
2、录制并增强性能测试脚本:录制脚本(封装为事务)->完善脚本(添加少量断言保证脚本按预期路径执行,事务时间添加思考时间一般粗略估计实际根据吞吐量调整,接口参数化,关联接口数据)-->调试(单用户并发有/无思考时间执行,多用户并发有/无思考时间执行)
3、性能测试场景设计:根据建模完善性能测试脚本
4、性能测试脚本执行
5、性能测试结果分析及问题定位(难)
3、传统企业软件和互联网软件性能测试区别:
1、并发量-->对应性能测试工具的选择(loadrunner按虚拟用户数收费,支持海量用户能力不好,工具操作简单方便,监控强大;jmeter开源不收费,支持海量用户能力强)
2、互联网软件性能测试增加一个全链路压测
4、性能测试分类:
性能基准测试:基于固定的软硬件环境,固件集群规模,相同数据库,相同网络环境执行性能测试,将测试结果和上一版本的性能基准测试结果対比,如果指标变差,需要根据具体指标排查(思路:比较单用户时间是否能复现-->采用基准测试中的并发和思考时间-->逐步加大测试负载,时间一定不能太长避免系统瓶颈问题-->可能和其他业务场景依赖或有资源竞争)
注意三个问题:1、负载不能过高 2、测试前保证环境一致(数据库数据量,网络传输状态)3、测试脚本贴近真实业务场景比例
稳定性测试:长时间(7*24)模拟测试系统负载,观察长时间运行过程中是否会有潜在问题。可能会发现资源非法占用,内存泄漏等问题。波浪式测试负载,逐渐加大测试负载到高峰,再逐渐降低,这样形成一个波浪,稳定性测试由多个这样的波浪组成。可压缩时间段模拟。
并发测试:高并发情况下验证单一业务的正确性和性能。一般思考时间为0。是功能测试的补充。常发现资源竞争,资源死锁等问题。一般在脚本中添加集合点完成并发测试。
容量规划测试:为满足目标负载而调整自身生产能力,解决的是当当前系统容量即将达到极限处理能力时 ,我们需要如何通过水平扩展(增强单服务器处理的能力),垂直扩展(加服务器)来增强系统负载处理能力。得到单台的处理能力,理论上集群的处理能力=单台*数量,但实际需要测试验证,理想情况就是呈线性增长,当数量达到一定数量后,能力不会线性增长,这个临界值是多少需要测试验证