历史上,软件的性能是在主要功能部分之后进行检查的——开发人员要么手动运行脚本,要么使用类似于 JMeter 的工具收集指标。在大规模转向 DevOps 和 CI/CD 时,自动化这些过程并在每个交付阶段获得指标的需求产生了。
问题在于,负载自动化不仅仅是运行现有的测试,而是对负载场景的微调、用户配置文件的可重复性、真实网络的模拟、延迟的考虑以及测试设备的限制。
现代解决方案是引入专业工具(例如,Gatling、Locust、k6),创建参数化用户配置文件的场景,将性能测试集成到 CI 流水线中,自动化指标的收集和分析,性能下降时的警报。
关键特性:
自动化“负载测试”是否仅限于生产环境?
不对。性能和压力的自动化测试可以在专用的阶段应用/测试环境中进行,以避免违反 SLA。相反,自动化在进入生产环境之前是更可取的。
如果负载自动化测试通过,是否可以确定真实的用户体验?
不行——自动化测试只能提供平均情况。真实用户的行为可能因网络条件、使用的平台和其他难以一一模拟的因素而有所不同。
是否只应关注响应时间的平均值?
不。考虑百分位数(例如,第95和第99百分位数)极为重要,因为平均值可能由于异常值而偏离,而尾部值往往对用户体验影响最大。
某公司仅在系统登录时实施了性能自动化测试:脚本运行了1000次登录,分析了平均响应,认为问题已经解决。在第一次真实启动时,发生了大量超时——发现并行的“重”业务操作没有考虑,API在负载下崩溃。
优点:
缺点:
在另一个团队中,整个负载配置文件是基于生产环境的监控构建的,单独的脚本模拟了来自不同设备和网络的高峰活动。所有结果自动与基准比较,超过5%的偏差会触发警报并暂停发布。
优点:
缺点: