在谈到怎么做性能测试之前,要先明确为什么要做性能测试。通常,性能测试的目标主要有以下几种:
1:卖点。和别的产品相比,性能指数有较大的提升。
2:和自己的老板本相比,无明显下降。
3:某些产品,性能指标是作为requirement,那么这类产品,性能测试用来确认满足用户需求。
系统的性能在低负载的情况下可能对用户没有什么影响,但是当负载提高后,性能会影响到用户的体验,甚至影响到用户的业务。所以无论以什么为目的,性能测试都是一种必须要做的系统测试类型。
第一讲:真实的环境
我想大家都知道测试环境要真实,越贴近用户的环境,测试结果就越可信。但是基于各种因素,通常测试环境和用户环境都会有所不同。关键是我们要认识到这些不同点,然后分析这些不同点会对我们的测试结果产生什么影响,测试环境下得到的结果是否有说服力。
第二点:真实的负载
即使测试的环境和用户一致,但是测试数据、测试负载和真实世界中的出入很大,那么测试结果也是没有任何意义的。简单的说,实际中,可能这个软件需要支持同时并发在线用户10000人,但实测始中使用并发用户1000人,这种负载下的系统测试是没有说服力的。
第三点:为测试建模
既然测试环境和测试负载对于我们的测试极为重要,那么我们如何确定我们对这些因素的考虑是正确的?通过对产品建模和评估,可以在设计的时候就有个直观的概念。同时可以在真正测试的时候根据建模的数据进行验证。结构良好的建模一方面可以为今后产品的性能做出评估,同时也可以通过分析得到可信度较高的在各种情况下的产品性能(如果什么,性能如何?如果什么什么,会如何?),避免度所有情况都去做effort很大的performance test。
第四点:投资工具,但不要过度
系统测试中使用工具是不可避免的。工具的种类可以分为以下三类:
1)商业工具:这类工具通常具有大而全的特点。但是费用较高,而且没有实现细节,不利于定制一些特别的需求。
2)开源:这类工具目前逐渐走向成熟,基本商业软件可以实现的功能都可以找到开源软件来替代。开源软件免费:),有源码,可以做部分的定制。
3)自主开发:不用说了,特点就是自由度最大,缺点就是effort较大,特别是工具开发初期。
不要一开始就定下来选择这种或者那种工具来进行测试。比较好的做法是:
1)Design system test:给出测试设计文档,测试策略,测试数据等。
2)了解对于测试工具的需求以及限制
3)列出候选的工具list,然后根据2)中的列表,逐一评价工具优劣
4)选择工具,并且Drill run(有可能的话)
虽然Open source 的工具没有购买费用,但是也不能滥用。主要有以下几个原因:
1)Open Source的工具种类繁多,很容易造成不同的Team是用不同的工具来实现类似的功能。一方面浪费了学习的时间,一方面增加了不同Team之间人员TOI的开销。
2)Open Souce不收费,自然也没有人来做Maintain。如果工具发生问题,只能自己解决。
3)Open Souce工具没有广告:),需要自己去寻找
第五点:尽早开始系统测试,并且持续Run
应该尽可能早的考虑性能、负载、可靠性等系统测试,而不是等到最后才开始。通常系统测试发现的问题对整个系统的影响比较大,修复这类问题的影响面也比较大。甚至可能是由系统架构等这类比较High Level的问题导致的,这样的话肯定会影响到项目的Release.如果早期开始系统测试,有问题及早发现,可以极大的降低在项目后期发现严重的系统问题,降低了项目整体的Risk。通常有两种方法在项目早期进行系统测试:
1)根据设计文档,为系统建模,分析可能存在的系统瓶颈
2)考虑对重要的module在模块级别进行系统测试。通过和RD合作,为关键模块开发专用的接口,实现模块级别的系统测试。
以上几点是系统测试中要注意的一些普遍问题,可以帮助大家少走些弯路!