提高性能测试结果的可信程度,各个环节搞不好都会影响整个结果
前言
为了给出准确的性能测试结论,必须依靠准确的性能测试数据。有很多因素都会对性能测试产生影响,进而导致性能结果的不准确。为了提高性能数据的可信程度,测试过程中应尽量避免这些因素。
影响评估测试结果可信度的因素
测试环境
硬件环境
主要指我们的测试机的配置,应该和线上机器采用相同配置。除了cpu,内存大小要一致外,硬盘的大小、swap等也要一致。如果有大量io的话,work分区的硬盘剩余空间也会影响性能。因为如果剩余空间不一致,会造成磁头开始写硬盘时的位置不一样,那么靠内圈的性能会差。同时,频繁的拷贝删除会造成磁盘碎片,也会影响性能。
软件环境
在启动被测程序时,还要清楚线上有哪些程序是同时启动的,需要在测试时也一并起起来。保证资源配比的真实性。
测试机的一些软件配置也要和线上相同,比如内核版本,系统参数等等。
测试时间
程序从启动到稳定服务都需要一定的时间,各模块长短不同。那么在监控数据时,如果在服务还没达到稳定时就取数据,会不准确。同样,如果在服务达到稳定很久后取数据,不会造成数据的不准确,但是会造成测试时间太长而影响效率。
这是一个预热的问题
测试规模
有些模块在线上服务时,要连接多个下游进行调度。这样的模块,因为在测试时不能完全模拟线上的情况,就存在测试规模的模拟问题。此时需要和rd确认规模,尽可能的靠近线上情况。
测试方法
测试方法决定了测试采样点的数量,而采样点的数量决定了测试结果的准确性。当采样点数量较少时,测试结果的偶然性会较大,测试结果的可信度不高;当采样点数量足够多时,评估测试结果的可信度较高。
统计方法
采用如何的监控方式:插桩还是采样。插桩方式会占用系统资源;采样方式会漏掉峰值点。采用linux自带的监控方式时,也会有数据统计方式和资源占用的问题。
提高评估测试结果可信度的建议
综上所述,多方面的因素都能够不同程度地影响测试结果的可信度,尤其是在多方面因素影响效果累加时,更有可能大幅度降低测试结果的可信度。如果充分考虑影响测试结果的各项因素,采取有效措施来控制测试过程中的不规范行为,制订完善的测试方案并严格执行,那么将有助于提高测试结果的可信度。
根据前面对影响测试结果可信度因素的分析,从以下几个方面提出提高测试结果可信度的建议:
做好充足的准备工作,保证统一的测试条件
测试结果通常是通过对比的方法来得出结论的。要得到准确的比较结果,就要求进行比较的测试指标是在相同的前提条件下测量到的,即要求在进行测试前必须满足以下要求:
1.采用相同测试机器
2.采用相同的测试方法
3.取监控数据的时间段一致
4.采用相同命令和方式进行监控
采样点的选择
采用灵活,占用系统资源小的监控方式。推荐linux自带的监控命令,细节可见数据监控小组的结论。
改进统计分析方法
算术平均的统计方法并不适合所有的情况。针对模块特点可以采用基于时间点的,或者基于峰值的,或者基于变化拐点的一些统计方法。
监控和统计的方法最好在开始测试前和rd进行确认。