在对企业内部性能测试现状调研的过程中,我们发现由于调研对接人员自身的经验不同,他们对性能测试的理解也不相同,特别是未深度参与过性能测试实施的人员往往会存在一定的理解偏差。
一、会用工具就会性能测试
关于“掌握性能测试工具就掌握了性能测试这个专项测试工作”的话题,企业和行业中很多测试人员一直存在理解上的偏差。在与企业的实际交流过程中,我们针对性地进行了调研,发现主要存在以下两种观点。
1.1、企业中部分IT管理人员(主要是对测试工作参与不多的人员)认为企业自研或者购买了好的工具平台,就能够解决企业IT系统在性能方面的质量问题。
1.2、部分行业及企业中从事功能测试的测试工程师,由于对性能测试不够了解,也会错误地认为只要掌握了性能测试工具就掌握了性能测试,并且能够成为一个专业的性能测试工程师。
以上误区的产生主要因为大部分管理者把性能测试归类于自动化测试,认为只需用工具即可实现,同时部分技术基础不全面的实施人员对性能测试本身的理解也不完整。
结合以上内容,对这个话题进行多方讨论,总结如下。
1)性能测试工具和平台是开展性能测试的必要的基础条件。
2)性能测试能否做好,除了好的工具平台外,还需要标准的流程规范以及优秀的人员能力。
3)性能测试做好是有一定的技术要求的,但是入门性能测试即可进行项目的压测实施,并不是普遍理解的“必须先做功能测试才能做性能测试”,在先后顺序上两者没有必然的关系。
二、调优是性能测试的唯一价值体现
性能调优一直是企业非常关注的内容之一,但是它根本讨论的是性能测试的价值不应仅限于调优结果。
在企业内部,不同角色的人员可能会对此存在一定的认知误区。
通过调研和分析,我们将企业的常见理解偏差现象归类总结为如下几个方面。
2.1、部分管理者、架构师及开发人员认为调优更为重要,因为性能缺陷是他们重点要解决的问题,更依赖于调优能力,并且对于工具平台来说智能化调优最为重要,能提供具体问题的定位和建议。
2.2、性能测试工程师,特别是资深性能测试工程师更关注性能调优的价值。
之所以存在这样的理解,主要原因还是角色不同,其所在的立场和知识面也不同,分析如下。
1)对管理者来说,解决问题才是关键,性能测试本身不能解决问题,只是发现问题。
但是当出现重大生产事故的时候,大家还是更关注如何解决问题,所以对管理者来说更看重调优的价值。
2)对架构师及开发人员来说,他们更多是站在开发的维度上来思考,对测试的理解并不专业,同时他们在整个过程中的主要职责仍是解决问题,所以他们看待性能测试也会更看重性能调优。
3)对资深性能测试工程师来说,其职业发展到一定阶段后,更多往深度发展,而性能调优是方向之一所以他们会更看重性能调优的价值。
结合以上内容,关于这一话题,我们做出总结。由于角色和立场的不同,不同人员对性能调优的理解可能存在一定的偏差,导致其只重视性能调优,忽略了性能测试本身。性能缺陷会经历一个发现、定位、解决的过程。
从整个过程来说,性能测试能否发现问题是基础,其重要性不可忽视。性能调优的目的是更好地解决问题,从而保障系统性能和生产上的稳定。
三、出了生产事故才需要性能测试
企业往往在生产出现性能事故后才开始采取各种补救措施,去了解性能测试,开始认识性能测试的重要性。
在这一点上,企业同样存在一定的误区,经过与企业交流,我们分析总结出以下几点理解上的偏差。
3.1、没有出现过生产事故,系统也比较稳定,所以不需要做性能测试。
3.2、一旦出现生产事故就快速扩容,认为通过堆服务器就能保证生产系统的稳定,不出性能事故。
3.3、当出现大的生产事故后,一部分企业只关注这次的问题,对单点问题进行跟踪和处理。
企业中相关人员存在以上理解偏差,主要是由于以下几个因素。
1)性能测试属于测试里面的一项内容,而测试本身在整个软件生命周期活动中还是以预防为主的工作所以在没有出现问题前,性能测试属于可有可无的活动。
2)性能测试本身属于专项测试,对其理解需要一定的基础,但是大部分从业人员的基础相对较差,思维模式相对单一。
3)最早的实践是在系统上线前准备更多的资源来保证系统稳定性,这种方式可以在一定程度上解决生产的性能问题,但是浪费了大量的资源。
4)工作人员对于质量的意识还不够强,当出现生产故障的时候会处于一个“头痛医头,脚痛医脚”的情况里,无法在全局上结合当前的问题进行整体规划。
生产出现故障的时候,系统除了在大负载情况下出现性能问题,其实在小负载情况下也会出现故障。
所以针对性能测试,需要按照事前、事中、事后3个阶段准备方案。
1)事前预防,通过性能测试获取系统的性能容量数据,做好事前预防工作。
2)事中应急,要准备好应急方案,当生产出现故障时能够快速恢复生产及定位问题。
3)事后复盘,针对生产事故进行事后复盘,通过下一轮迭代测试,持续优化,事前预防。
性能测试是软件开发过程中一个非常重要的环节,它帮助团队了解系统在不同负载条件下的表现。然而,在进行性能测试时,一些常见的误区可能会导致测试结果不准确或误导决策。
A:仅关注单一指标
有些团队可能只关心响应时间或者吞吐量等某一个性能指标,而忽略了其他同样重要的因素,比如资源利用率、并发用户数、错误率等。
B:使用过小的测试数据集
如果性能测试中使用的数据集太小,那么可能无法准确反映出实际应用环境中的行为模式。随着数据规模的增长,应用程序的表现可能会有很大差异。
C:忽视外部依赖性的影响
很多应用都会依赖于数据库、网络服务等外部组件。如果这些外部系统的性能没有被充分考虑进测试方案里,则可能导致测试结果偏离实际情况。
D:不考虑真实世界的使用场景
理想化的测试案例往往与现实中用户的操作习惯存在较大差距。因此,构建接近真实情况的工作负载模型对于获得有意义的结果至关重要。
E:一次性完成所有测试
将所有的性能测试集中在项目后期执行是一个很大的风险点。应该从开发早期开始就持续地进行性能测试,并根据反馈不断调整优化。
F:过度依赖自动化工具
虽然自动化工具能够提高效率并减少人为错误,但完全依赖它们而不结合手动分析和调试也是不可取的。有时候需要人工干预来识别某些深层次的问题。
G:忽略配置管理
不同的硬件/软件配置可以极大地影响到应用程序的性能表现。确保测试环境尽可能地模拟生产环境是非常必要的。
H:缺乏有效的监控机制
性能测试期间如果没有实施适当的监控措施,就很难快速定位问题所在。有效的监控可以帮助更早发现问题并采取相应行动。
I:对结果解释过于简单化
有时候人们倾向于基于初步观察做出结论,而没有深入探究背后的原因。正确的做法应该是综合多个维度的信息来进行全面分析。
J:忘记记录详细日志
良好的文档记录不仅有助于当前项目的回顾总结,也为未来可能出现类似问题提供了宝贵的参考资料。每次测试都应该有详尽的日志输出。