测试:如何保证测试结果可靠而且可重复

性能测试的一个关键是保证测试结果可靠、可重复,那应该怎么做到这一点呢?

在这里插入图片描述

测试规划

详细记录测试环境和测试过程

这些测试环境信息包括什么呢?大体上是操作系统和程序的版本号,以及各种软件参数的设置等等。

记录测试环境的目的是为了以后的各种分析。比如我们如果发现两次测试结果不匹配,需要找到不匹配的原因,那么这些测试环境就是相当关键的信息。如果两次测试结果的不同是因为软件配置不同导致的,根据记录的测试环境信息,我们就很容易根因出来。

至于如何记录,我们可以去手工去记录,但最好是自动记录

快速的复位测试环境

有时候性能测试需要重复进行多次,那么就需要在每一次测试后,能够有快速“复位”到初始测试环境的机制。这个复位机制越简单有效越好,最好能达到所谓“一键复位”的程度,从而最大限度地降低手工复位的工作量。

足够的负载请求和数据

性能测试需要流量负载以及相关的数据,我们需要特别注意保证它们的多样化和代表性。否则测试结果会严重失真。

当使用相同的测试数据进行重复测试时,如果负载请求不够大,那么各种缓存可能会影响结果。

那么如何识别缓存的影响呢?

各级缓存系统都有响应的统计指标和命令,比如文件系统缓存和SAN缓存中的缓存命中率,就可以根据统计信息报告中的延迟,并且结合经验来识别。举个例子,如果一个随机8KB或者16KB数据对硬盘的读写,测量出来的延迟不到1ms,那就实在是“太快”了,快得让人不敢相信;可以肯定它是命中某种缓存了。

那么如何清空缓存呢?

一个现代计算机系统中往往有很多种缓存,比如数据库缓存、文件系统缓存、存储缓存(比如 SAN)等。不同种类的缓存自然有不同的清空方式

  • 对于数据库缓存,在每个测试之前可以用命令行来刷新数据库缓存;如果数据库不提供这样的命令,则需要重新启动数据库。
  • 对于文件系统缓存,一般需要重新启动服务器。
  • 对于 SAN 缓存,可以考虑在测试期间减少甚至关闭缓存,或者用大量的随机数据来“污染”缓存。

除了合理清空缓存外,更有效的方式是保证测试时间足够长,测试的负载请求足够多和数据足够多样化,从而最大限度的减少或者掩盖缓存等其他因素的影响。

测试进行

测试规划之后,我们就要关注测试中的变化了。

性能数据日志要适当输出

性能测试的过程中,也需要实时输出有关的性能数据和日志,比如CPU使用率数据。这些数据对于测试完成后的分析极为重要。

输出的数据和日志最好保存起来,以方便后期处理 / 重新处理

输出数据的多少也需要注意,虽然我们希望尽量多地输出,但是也要意识到,太多的输出有时候会起反作用。

  • 存储的开销:可以用压缩存储来解决
  • 数据处理时间的开销:注意压缩和解压缩也需要时间
  • 可能影响性能测试的结果:有时候因为某些原因,日志输出会影响被测系统的性能,比如往一个文件写入日志,可能会导致系统的暂停,从而影响测试的结果

测试环境要稳定

性能测试的环境在测试进行过程中,以及重复测试时一定要保持稳定和一致,否则测试结果就不可靠或者不能重复。

一般的解决方案,是尽量在一个独立无干扰的环境中进行测试,加上每次测试都准确地恢复测试环境,就能最大限度地保证测试环境的稳定。

一次调一个参数的利弊

在性能调优测试中,就是通过实验来找出系统的最优配置。

对这种测试,我们经常听到的经验是,“一次只调一个参数,通过对比实验,就能知道这个参数的最佳值“。你觉得这个经验对吗?

我们先看这个经验的出发点。性能调优过程中有很多可调参数和配置,互相之间的影响不清楚,因此不宜对系统的各种参数进行随意的改动。应该以基本参考设置为基础,逐次根据实际测试结果进行优化,一次只对某个领域进行性能调优,并且每次只改动一个设置和参数,避免其他参数和相关因素的干扰。

这个经验有它的道理,但我觉得这样做既对也不对,你不能盲从,否则就会错过最优配置的机会。

结果分析

根因分析要从易到难

从最明显的性能瓶颈来开始,往往可以事半功倍。

  • 首先从最常用的几种资源和几个指标查,比如CPU使用率、存储IO繁忙度、内存大小、网络发送和接收速度等
  • 进一步的分析就可以针对不太明显的资源,比如内存带宽、缓存命中率、线程加锁解锁等;从而过渡到应用程序和系统的一些配置参数。这些配置参数包括应用服务器以及中间件,操作系统瓶颈、数据库、web服务器的配置;还有应用业务瓶颈,比如 SQL 语句、数据库设计、业务逻辑、算法、数据等。

几种测试最好互相验证

各种性能测试工具和测试手段都有自己的局限性或缺陷,从而可能会造成测试结果出现偏差。所以,如果条件和时间允许,最好使用几种不同测试工具或手段,分别进行独立的进行测试,并将结果相互比较和验证。

如果几种测试比较后结果相似,那么皆大欢喜。

否则就需要进行深入比较分析,弄明白造成结果不同的原因。分析以后,如果能够清楚地了解根因并作出合理解释,那么很多时候就够了,可以止于此。最后形成结论时,只要稍加有针对性地说明就可以。

测试结果和生产环境比较

如果性能测试是在非生产环境中进行的,那么得出的测试结果或许会和生产环境大相径庭。如果我们测试的目的是尽量和生产环境一致,就需要仔细审查每个测试的环节,包括测试环境和测试流程。

总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值