评估性能时常见错误和解决方法
2015-12-10 17:51
218 查看
性能测试常见错误:
性能测试时很多错误是无意中犯下的,如:小的疏忽、思想误区和缺乏性能评估技能。
1. 无目标:无论做何事包括性能评估,首先设定目标是做事的前提,没有目标很容易导致失败。无明确的目标就开始性能测试,这样的事情并不少见。如:在进行性能测试前,测试团队就开始搭建性能测试环境,并建模和准备仿真测试;谈到测试目标时,很可能碰到的回答就是,建模和仿真测试可以帮助检测并解决可能碰到的问题。那么根据这种情况,模型和仿真就需要设计的足够弹性,以适应和解决各种问题。实际上基本没有这样通用的模型,模型都是为某个特定目标而设计的。性能的指标(KPI),负载和测试方法都取决于所设定的目标。因此在开始准备性能测试之前,必须首先了解要测试的系统和要解决的问题,根据这些来设计正确的指标、负载和测试方法。在开始的时候,很多性能问题是很模糊的,因此明确目标并不是简单的活。
2. 有偏差的目标:另一个经常犯的错误,就是目标有偏差。比如,我们要证明“我们的系统比别人的系统好”,这时我们就是去寻找一些指标,来证明我们的系统比别人的好,而不是测量各种指标,然后比对两个系统的优劣。一个专业的测试人员,应该是中立的、不具有偏见的,我们不应该在刚开始就带进偏见,我们的结果都应该基于数据分析得出。
3. 测试方法凌乱、不系统:正确的测试要素(测试目标、参数配置、因素、指标和负载)才能得到准确的性能结果,要想得到正确的测试要素,需要掌握系统的测试方法,否则难以寻找到正确的测试要素,从而导致测试结果有偏差。
4. 错误的性能指标:性能的优劣是用指标进行量化的,常见的指标是响应时间和吞吐量。依据被测试的系统或者模块,性能指标亦不同。例如,一般衡量CPU的性能使用每秒执行命令数(MIPS),每秒执行的命令数越多,一般性能也就越好。但是如果两种架构不同的CPU如RISC何CISC,架构不同依然采用MIPS进行衡量,那么测到的结果没有意义。但是容易犯的错误就是,测试人员倾向于选择容易获得、自己熟悉的性能指标而忽视这些指标对结果的真正价值。
5. 工作负载无代表价值:选取测试的工作负载内容时,应根据真实环境的特点进行选取。如:真实环境上的数据包有大数据包 有小数据包,那么我们测试时应也采用大数据包+小数据包,只测试大数据包或小数据包,获得的性能结果就会不正确。 正确的负载内容对性能结果非常重要,错误的负载内容很难得到正确的性能结论。
6. 不正确的测试方法:有三种性能测试方法:度量、仿真、模型分析。一般测试人员会对自己常用的某种测试方法有偏爱,并倾向用这个方法应用到任何性能测试中。不同的测试目标,所合适的测试方法不同,使用不正确的测试方法,会影响最终结果。没有万能的方法,只有合适的方法。
7. 忽略重要参数项:建议大家先罗列出影响性能和工作负载的各项特征,这些特征就是影响性能的重要参数项。负载参数项一般包括:用户数、请求的增长方式、优先级等。每个参数都有一系列的参数值,各项参数项采用不同的参数,性能结果就会不同。忽略其中的重要参数项会造成性能测试结果产生偏差。
8. 参数项和值配置不合理:性能测试需要用到很多的参数项和对应的值,不合理的搭配会造成浪费大量的测试时间,获得大量的无意义性能数据,加重性能结果分析。
9. 数据粒度不合理:性能结果是从测试获得的数据分析得出,测试数据的粒度有粗细不同(细化到何种程度),合理的粒度有利于测试结果分析,过细的粒度会导致性能分析工作量过大,浪费大量时间,过粗的粒度会无法有效支撑性能分析。因此在测试开始之前,首先定义出良好的数据粒度。
10. 分析不合理或者没有分析:性能测试主要分为两大块:性能测试过程和数据分析。很多人很擅长各种测试技巧,但是缺乏分析经验,从而导致累计了大量测数据而无从下手,无法有效分析出测试结果,因此在测试报告中,罗列了一大堆性能数据,但是没有进行有效的分析,无法明确给出最终结果。
11. 忽略假设和限制条件:测试报告中,经常会疏忽忘记说明测试的假设和限制,从而导致其他人将这个测试报告用到一个限制之外的场景中,从而导致判断错误。
性能测试报告的检测点:
1. 目标是否正确且明确的定义?
2. 是否是以中立的态度设定的目标?
3. 是从系统性考虑,设置的性能测试步骤吗?
4. 在测试之前, 被测问题是否已经很明确?
5. 设置的各项性能指标是否和问题紧密相关?
6. 针对问题设计的负载是合理的吗?
7. 测试工具和方法是否恰当?
8. 影响性能的参数是否已经考虑完整?
9. 选择用来测试的参数是否能够全覆盖测试内容?
10. 设计的测试方法是高效的吗?
11. 数据粒度是否合适?
12. 是否分析了所有的测试数据?
13. 统计分析的结果是正确的吗?
14. 输入的错误数据,对测试结果影响大吗?
15. 分析的结果有偏差吗?
16. 分析的结果简单易懂吗?
17. 是不是尽可能图形化的展示了分析结果?
性能测试时很多错误是无意中犯下的,如:小的疏忽、思想误区和缺乏性能评估技能。
1. 无目标:无论做何事包括性能评估,首先设定目标是做事的前提,没有目标很容易导致失败。无明确的目标就开始性能测试,这样的事情并不少见。如:在进行性能测试前,测试团队就开始搭建性能测试环境,并建模和准备仿真测试;谈到测试目标时,很可能碰到的回答就是,建模和仿真测试可以帮助检测并解决可能碰到的问题。那么根据这种情况,模型和仿真就需要设计的足够弹性,以适应和解决各种问题。实际上基本没有这样通用的模型,模型都是为某个特定目标而设计的。性能的指标(KPI),负载和测试方法都取决于所设定的目标。因此在开始准备性能测试之前,必须首先了解要测试的系统和要解决的问题,根据这些来设计正确的指标、负载和测试方法。在开始的时候,很多性能问题是很模糊的,因此明确目标并不是简单的活。
2. 有偏差的目标:另一个经常犯的错误,就是目标有偏差。比如,我们要证明“我们的系统比别人的系统好”,这时我们就是去寻找一些指标,来证明我们的系统比别人的好,而不是测量各种指标,然后比对两个系统的优劣。一个专业的测试人员,应该是中立的、不具有偏见的,我们不应该在刚开始就带进偏见,我们的结果都应该基于数据分析得出。
3. 测试方法凌乱、不系统:正确的测试要素(测试目标、参数配置、因素、指标和负载)才能得到准确的性能结果,要想得到正确的测试要素,需要掌握系统的测试方法,否则难以寻找到正确的测试要素,从而导致测试结果有偏差。
4. 错误的性能指标:性能的优劣是用指标进行量化的,常见的指标是响应时间和吞吐量。依据被测试的系统或者模块,性能指标亦不同。例如,一般衡量CPU的性能使用每秒执行命令数(MIPS),每秒执行的命令数越多,一般性能也就越好。但是如果两种架构不同的CPU如RISC何CISC,架构不同依然采用MIPS进行衡量,那么测到的结果没有意义。但是容易犯的错误就是,测试人员倾向于选择容易获得、自己熟悉的性能指标而忽视这些指标对结果的真正价值。
5. 工作负载无代表价值:选取测试的工作负载内容时,应根据真实环境的特点进行选取。如:真实环境上的数据包有大数据包 有小数据包,那么我们测试时应也采用大数据包+小数据包,只测试大数据包或小数据包,获得的性能结果就会不正确。 正确的负载内容对性能结果非常重要,错误的负载内容很难得到正确的性能结论。
6. 不正确的测试方法:有三种性能测试方法:度量、仿真、模型分析。一般测试人员会对自己常用的某种测试方法有偏爱,并倾向用这个方法应用到任何性能测试中。不同的测试目标,所合适的测试方法不同,使用不正确的测试方法,会影响最终结果。没有万能的方法,只有合适的方法。
7. 忽略重要参数项:建议大家先罗列出影响性能和工作负载的各项特征,这些特征就是影响性能的重要参数项。负载参数项一般包括:用户数、请求的增长方式、优先级等。每个参数都有一系列的参数值,各项参数项采用不同的参数,性能结果就会不同。忽略其中的重要参数项会造成性能测试结果产生偏差。
8. 参数项和值配置不合理:性能测试需要用到很多的参数项和对应的值,不合理的搭配会造成浪费大量的测试时间,获得大量的无意义性能数据,加重性能结果分析。
9. 数据粒度不合理:性能结果是从测试获得的数据分析得出,测试数据的粒度有粗细不同(细化到何种程度),合理的粒度有利于测试结果分析,过细的粒度会导致性能分析工作量过大,浪费大量时间,过粗的粒度会无法有效支撑性能分析。因此在测试开始之前,首先定义出良好的数据粒度。
10. 分析不合理或者没有分析:性能测试主要分为两大块:性能测试过程和数据分析。很多人很擅长各种测试技巧,但是缺乏分析经验,从而导致累计了大量测数据而无从下手,无法有效分析出测试结果,因此在测试报告中,罗列了一大堆性能数据,但是没有进行有效的分析,无法明确给出最终结果。
11. 忽略假设和限制条件:测试报告中,经常会疏忽忘记说明测试的假设和限制,从而导致其他人将这个测试报告用到一个限制之外的场景中,从而导致判断错误。
性能测试报告的检测点:
1. 目标是否正确且明确的定义?
2. 是否是以中立的态度设定的目标?
3. 是从系统性考虑,设置的性能测试步骤吗?
4. 在测试之前, 被测问题是否已经很明确?
5. 设置的各项性能指标是否和问题紧密相关?
6. 针对问题设计的负载是合理的吗?
7. 测试工具和方法是否恰当?
8. 影响性能的参数是否已经考虑完整?
9. 选择用来测试的参数是否能够全覆盖测试内容?
10. 设计的测试方法是高效的吗?
11. 数据粒度是否合适?
12. 是否分析了所有的测试数据?
13. 统计分析的结果是正确的吗?
14. 输入的错误数据,对测试结果影响大吗?
15. 分析的结果有偏差吗?
16. 分析的结果简单易懂吗?
17. 是不是尽可能图形化的展示了分析结果?
相关文章推荐
- Java IO与NIO的一些文件拷贝测试
- 推荐六款WEB上传组件性能测试与比较第1/10页
- C#代码性能测试类(简单实用)
- asp 性能测试报告 学习asp朋友需要了解的东西
- 使用console进行性能测试
- 1亿条记录的MongoDB数据库随机查询性能测试
- eval的两组性能测试数据
- Java常用排序算法及性能测试集合
- Java中的StringBuilder性能测试
- Java中Map的遍历方法及性能测试
- python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
- nginx 和apache 性能测试对比
- 对性能测试的认识
- 有关性能测试结果的几点分析原则
- 性能测试工程师的面试题
- 转载:性能测试经验
- 测试过程控制----如何开展性能测试
- 性能测试, 压力测试 , 负载测试和 容量测试 的区别与联系
- 性能测试小Tips
- 软件测试LR通用性能分析流程