三.测试环境
这里的测试环境主要指的软件硬件环境和网络环境。
笔者认为性能测试最好在一个独立的环境内进行,这样不会受到外界的干扰,能够保证测试的数据是独立有效的。如果现你对某个已经上线的网站进行压力测试,那么你得到的数据不是独立的,因为你在做压力测试的时候,其它散户也在访问系统。
软件环境:
这里的软件环境主要指项目运行的环境,比如采用什么样的操作系统、中间件、和数据库。
硬件环境:
这里的硬件环境除了主要包括主机内部部件,cpu、内存、磁盘以及主板、网卡等,传输介质和路由器也应该考虑在内,
网络环境:
网络环境除了考虑测试机与被系统服务器在一个局域网中进行,还应该保证这个网络的独立性。如果在在性能测试的过程中,其它机子也在消耗着路由器资源。那么路由器也会影响到数据库的传输速度。
四.数据准备
在很多时候,我们是要准备测试数据的,例如系统不允许相同用户的重复登录,那么必须要生成合法的用户数据。有时要对系统进行查询测试,只有在系统有一定数据量进才能验证出系统的真实性能。一个数据库中有两条数据和有两千万条数据,同相一条查询操作,对系统造成的压力是完全不一样的。
系统所需数据的分析可以参考以下方式:
历史数据分析有助于数据量级的确定。从历史数据入手,找出高峰期数据量。
从其他相似或者相同系统入手,进行数据分析,找出高峰期数据量。
无历史或者相关系统可以参考的时候,就要对系统的性能数据进行估算,包含系统容量,并发数等数据,估算以后给相关人员进行评审或者修订以后,按照大家同意的性能指标进行测试。
…………
测试数据最好和真实数据相同,如果能够获得真实系统运行3个月的数据,我们就可以在此基础上进行性能测试。
关于数据的生成,我们可以祝一个工具完成,如数据库数据生成工具,大小文件生成工具等。
五.测试工具
前面已经介绍如何分析需求,需求确定下来之后,我们可以考虑引入什么样的工具适合性能需求。
当然,在引入工具的时候除了考虑可以是否满足需求,还应该考虑工具的成本,这不单指工具的购买成本,还有测试人员对工具的学习成本。
关于测试工具的选择,后面会单独有一章节介绍,这里就不细说了。
如果你选择的性能测试工具不是足够的强大的话,你可能还需要其它的辅助的工具。如果jmeter利用badboy来录制脚本,更能提高脚本开发效率。在压力测试的过程中也可能需要性能计数器来记录软硬件的性能。如监控服务器cpu、内存的计数器,记录中间件日志的监控中工具,监控数据库性能的监控工具等。
六.测试策略
对于一个特定的业务系统,用户一般会分散在一天的各个时间段进行访问。在不同的时间段中,用户使用业务系统的频率不同,而系统的繁忙程度不同。在一些特定的条件下,可能出现短时间内用户集中访问某个业务系统的情况。例如对于公文处理子系统而言,可能就存在短时间内大量用户查看并办理某条公文的情况。 在进行性能测试时,应当使用“考虑最坏情况的原则”。也就是应当在用户使用业务系统最频繁、对系统造成最大压力的情况下对系统的功能进行测试,判断各功能和页面是否能够满足性能的要求,系统的响应时间是否过长。
另一方面,系统性能的验证必须做到“覆盖全面”。虽然系统中各个功能的使用频率并不相同,一些功能的使用频率相对于其他功能来说比较低,但是在进行性能测试和优化时,不能忽略这些功能,编制测试用例时也不能仅仅选择最常用功能。例如可能所有的用户都会访问我的通知列表,但是一般只有5%的用户会使用通过系统设置模块查找某个用户的信息;但是在测试时,我们并不能因为查看用户信息功能的使用频率相对较少,而忽略掉这项功能的测试。所以,这里进行系统性能测试时,对于不同业务,用户的访问比例应该做一个合理分配。
在测试策略上,我们还应该考虑,同一个系统在不同硬件环境下的性能表现。从而让系统满足需求的情况下,硬件配置也能达到一个最佳的状态。过份的增加硬件来满足需求也是一种浪费。再说增加硬件设备不是能解决所有性能问题的。
七.人力与时间安排
最后一条,就是要根据项目的进度要求以及规模,来进行人力与时间的安排。对于大型的性能测试,项目前期的需求调研,环境的部署,工具的选购或开发,人员对测试工具的学习与使用,性能测试的后进行,后期数据的分析与调优。都需要人员安排的。有可以需要专业的,系统工程师、数据库工程师、软件开发工程师、网络工程师以及性能测试工程师的共同参与配合完成。不是一个性能测试人员就可以全部搞定的。
笔者听说,最牛x的性能测试,需要几个国家的十几个城市的性能测试团队同步时行。前期的准备工作就需要几个月的时间。如何把控性能测试的同步进行。后期测试数据的汇总与分析。是一个非常复杂的过程。这个例子有待考证,我想说明的是,对于大项目的性能测试,人员与时间安排也至关重要。
----------------------
根据项目的不同,我们在做性能测试计划椒考虑的问题不仅仅上面这些内容,这一节所罗列的内容是基本需要考虑的因素。