独立性能环境的重要性
有些同学担心,由于性能测试环境和线上环境配置不一致,会导致线下环境得到的性能结果无法发现足够多的性能问题,无法对线上环境的容量评估/稳定性保障带来足够的参考。其中担心的重点有如下几点:
配置不一致,服务的容量无法很好的换算;
配置不一致,导致压测时候无法模拟太高的并发;
数据量不一致,导致有些性能问题上量后会暴露出来;
其实这些担心不无道理,从技术的角度出发,只有尽可能的和生产保持一致,才能确保测试的结果对生产的稳定性有足够的参考价值,也是保障性能测试交付质量的一个重要因素。
但,性能测试环境和生产保持一致,就真的能避免生产环境不出现性能问题吗?未必!
环境配置高低是决定性能结果的一个影响因素,但不是全部因素。提前测试、提前暴露问题,修复的成本也就越低。
我们常见的性能问题,比如JVM GC/慢SQL/死锁/for 循环/缓存未命中等,都可以在线下的性能环境提前发现。
这些问题的发现和修复与服务器配置并没有直接联系,能够在线下提早用更低的成本解决是一种更优的选择。
大家可以思考下,功能测试的测试环境作用,就能理解独立性能测试环境的作用了。
我们搭建独立的功能测试环境,是为了在项目上线前进行充分的各种维度的验证,尽量保障线上的交付质量。
但绝不是功能测试环境没问题,线上就不会有问题。测试环境我们可以通过功能测试验证/自动化测试回归等手段尽可能发现问题,生产环境同样需要进行回归测试/自动化测试去进行日常的巡检,做到早发现早修复。
原则上bug只要没影响到用户,是不会造成直接的影响和损失的。对于线上的bug,需要的是更完善的监控告警机制和oncall修复流程,在造成更大影响之前修复。
同理,性能测试环境的作用也是这样:在服务线上发布前,尽可能暴露一些存在的性能问题并进行修复验证。线上通过全链路压测/日常巡检/容灾演练/监控告警等手段来保障线上服务的稳定性。
如果没有做线下性能测试的情况下直接在生产上测试,对性能中的异常测试、高可用测试可能无法充分执行;同时,修复性能 bug 也需要功能上的回归,这些都增加了过程管理的复杂度。因此,搭建独立性能测试环境的重要性主要有如下几点:
提前进行性能验证,发现并修复问题;
独立的性能测试环境可以避免其他测试动作的影响;
提前进行各种手段的性能测试,降低线上出现问题的修复成本;
如需了解更多测试技术信息请关注:深圳多测师软件与技术服务有限公司