3.1性能测试流程
3.1.1性能测试基本流程
性能测试从实际执行层面来看,测试的过程一般分为:
3.1.2性能需求分析
性能需求分析是整个性能测试工作开展的基础,性能需求分析做的好不好直接硬性到性能测试的结果。
在需求分析阶段,测试人员需要与项目相关的人员进行沟通,收集各种项目资料,对系统进行分析,建立性能测试数据模型,并将其转化为可衡量的具体性能指标,确认测试的目标。
3.1.3性能需求分析的目标
①明确到底要不要做性能测试?性能测试的目的是什么?
②明确被测系统是什么?被测试系统的相关技术信息如:架构、平台、协议等。
③明确被测系统的基本业务、关键业务,用户行为。
④明确性能测试点是什么?哪些需要测,为什么?哪些不需要测,又是为什么?
⑤明确被测系统未来的业务拓展规划以及性能需求?
⑥明确性能测试策略,即应该怎么测试?
⑦明确性能测试的指标,知道测试出来的结果怎么算通过?
3.1.4性能需求分析方法
①系统信息调研
指对被测系统进行分析,需要对其有全面的了解和认识,这是做好性能测试的前提,而且在后续进行性能分析和调优时将会大有用处,试想如果连系统的架构、协议都不了解,我们如何进行准确的性能测试?如果进行西鞥呢分析与调优?
②业务信息调研
指对被测试的业务进行分析,通过对业务的分析和了解,方便我们后续进行性能测试场景的确定以及性能测试指标的确定。
③性能需求评估
在实施性能测试之前,我们需要对被测系统做相应的评估,主要目的是明确是否需要做性能测试。
如果确定需要做性能测试,需要进一步确立性能测试点和指标,明确该测什么、性能指标是多少,测试通过or不通过的标准?
性能指标也会根据情况评估,要求被测系统能满足将来一定时间段的业务压力。
3.1.5性能需求评估
eg:判断是否进行性能测试
①业务角度
系统时公司内部or对外?系统使用的人数的多少?如果一个系统上线后基本没几个人使用,无论系统多大,设计多么复杂,并发的性能测试都是没必要的,前期可以否决。
②系统角度
如果一个系统采用的架构是老的系统架构(通常大公司都有自己的统一架构),只是在此框架上增加一些应用,其实是没有必要做性能测试,因为老框架的使用肯定是经过了验证的。如果一个系统采用的是一种新的框架,可以考虑做性能测试。
③数据库要求
很多情况下,性能测试是大数据量的并发访问、修改数据库,而瓶颈在于连接数据库池的数量,而非数据库本身的负载、吞吐能力。这时,可以结合DBA的建议,来决定是否来做性能测试。
④系统特殊要求
从实时性能角度来分析,某些系统对响应时间要求比较,比如餐饮系统,系统的快慢直接影响客户的感受,这种情况就有作并发测试的必要,在大并发量的场景下,查看这个功能的响应时间。
3.2性能测试准备
3.2.1性能需求分析方法
确定性能测试点:
①关键业务:确定被测项目是否属于关键业务,有哪些主要的业务逻辑点,特别是跟交易相关的功能点。例如:结算,扣款等接口。
②日请求量:确定被测项目各功能点的日请求量(可以统计不同时间力度下的请求量如:小时、日、周、月)。如果日请求量很高,系统压力很大,而且又是关键业务,该项目需要做性能测试,而且关键业务点,可以被确定为性能点。
③逻辑复杂度:判定被测项目各功能点的逻辑复杂度。如果一个主要业务的日请求量不高,但是逻辑很复杂,则也需要通过性能测试。原因是,在分布式方式的调用中,当某一个环节响应较慢,就会影响到其他环节,造成雪崩效应。
④运营推广活动:根据运营的推广计划来判定待测系统未来的压力。未雨绸缪、防患于未然、降低运营风险是性能测试的主要目标。
⑤被测系统的性能不仅能满足当前压力,更需要满足未来一定时间段内的压力。因此,事先了解运营推广计划,对性能点的制定有很大的作用。
3.2.2性能测试准备
①测试环境准备
系统运行环境:测试环境,有些时候需求比较多,做性能测试担心把环境搞垮影响其他的功能测试,可能需要重新搭建一套专门用来做性能测试的环境。
执行机环境:这个就是用来生成负载的执行机,有时候甚至需要一套执行机集群。
②测试场景设计
根据性能需求分析来设计符合用户使用习惯的场景,场景设计的好不好直接影响到性能测试的效果。
③性能工具准备
负载工具:根据需求分析和系统特点选择合适的负载工具,比如LoadRunner、Jmeter等。
监控工具:准备性能测试时的服务器资源、JVM、数据库监控工具,以便进行后续的性能测试分析与调优。
④测试脚本准备
如果性能测试工具不能满足被测系统的要求或只能满足部分要求时,需要我们自己开发脚本配合工具进行性能测试。
⑤测试数据准备
负载测试数据:并发测试时需要多少数据?
DB数据量大小:为了尽量符合生产场景,需要模拟线上大量数据情况,那么要往数据库里提前插入一定的数据量。这可能需要花费一些时间,特点是关联系统较多,逻辑复杂的业务可能同时设计多张表。
3.2.3性能测试执行
①人工边执行边分析
通常我们做性能测试都是人工执行并随时观察系统运行的情况、资源的使用率等指标。这个过程可能会很漫长,需要不断的调整系统配置或程序代码来定位问题。
②无人值守执行性能测试
无人值守值最理想化的目标,无人值守不是说没有人力介入,而是把人为的分析和执行过程分离,执行过程只是机器服从指令的运行而已。
通常测试环境在白天比较繁忙,出现性能问题及定位难度较大且影响功能测试。
所以一般性能测试最好在晚上或周末进行,在相对较安静的条件下有利于测试结果的稳定性。
3.2.4测试报告与总结
①性能测试报告是性能测试的里程碑,通过报告能展示出性能测试的最终结果,展示系统性能是否符合需求,是否有性能隐患。
② 性能测试报告中需要阐明性能测试目标、性能测试环境、性能测试数据构造规则、性能测试策略、性能测试结果、性能测试调优说明、性能测试过程中遇到的问题和解决方法等。
③性能测试工程师完成该次性能测试后,需要将测试结果进行备案,并作为下次性能测试的极限标准,具体包括性能测试结果数据、性能测试瓶颈和调优方案等。
④同时需要将测试过程中遇到的问题,包括代码瓶颈、配置项问题、数据问题和沟通问题,以及解决办法或解决方案,进行知识沉淀。