性能

完整的性能测试实施流程

我们在进行性能测试工作的过程中,需要借助工具的辅助来帮我们完成一些工作,但loadrunner≠性能测试!或者说,性能测试工具≠性能测试,工具永远是一种辅助的工具,而不能认为会用工具就会性能测试了!

性能测试流程分为五个阶段,分别是【需求调研阶段】→【测试准备阶段】→【测试执行阶段】→【测试报告阶段】→【测试总结阶段】。

确定测试需求、测试范围--------完成测试方案------搭建环境 测试准备------测试执行------数据分析  缺陷定位------测试报告

一、需求调研

调研阶段的主要工作为:组建工作小组、需求调研、需求分析、模型构建、定制性能测试计划。

重点关注:需求调研、需要分析、模型构建

需求调研分为两个步骤进行:需求调研、需求分析。该阶段工作产出文件为《XX项目性能测试需求表》,如:《云智慧_XXX系统_XXX模块性能测试需求表》。

 

1、需求调研

需求调研工作由性能测试实施人员牵头负责,产品经理、开发工程师、运维工程师配合完成:

●识别被测试系统: ①软件架构:了解软件的工作过程,比如这个是提供页面访问功能的还是提供API接口服务的,或者是其他的一些原创调用服务。②通信协议:了解通信协议,才能根据通信协议选择合适的工具,选择对的协议进行后期的脚步编写、执行等工作。③逻辑功能:了解逻辑功能,才能对需求有进一步理解:如需求说要满足1000人在线,但是这1000人都在做什么,每种功能事务的人数是多少?

●系统线上环境的性能需求,例如性能需求、可靠性需求、可维护性需求等;

●与系统性能需求相关的其它信息,包括系统信息(如线上环境硬件、参数配置、系统架构与部署方式、关联系统部署等)、业务信息(关键业务逻辑与处理流程、交易列表、交易量信息、业务分布规律等)、生产问题、文档资料等方面,并对收集到的信息进行汇总整理,实现对待测系统业务与技术的整体了解;

●开发项目组、需求部门、运维部门等测试任务提出方应填写《云智慧_XXX系统_XXX模块性能测试需求表》中的“任务信息”和“测试背景”等信息;

●性能测试小组的实施人员将调研获取的内容填入《云智慧_XXX系统_XXX模块性能测试需求表》;

●对于新立项系统或系统新开发版本,《云智慧_XXX系统_XXX模块性能测试需求表》应与《需求规格说明书》中的性能需求相一致。

2、需求分析

需求分析就是对需求进行分解、分解到各个功能的需求,需求分析的基本流程是:

●首先,根据需求调研所获取的信息进行分析,将性能测试需求表中的性能需求转换为具体的性能需求指标值;

●其次,针对分解的需求在根据其他的需求或者行业规则,制定出每种事务、单一功能具体的性能指标:如响应时间、每秒事务数等数据

●再次,准确描述性能测试需求指标值所依托的测试环境信息,根据测试环境与线上环境的差异分析,将线上环境条件下的性能需求指标值转换为本次测试环境条件下的性能需求指标值;

常见性能指标

web系统:响应时间、并发用户数、每秒实物数

客户端系统:启动时间、响应时间、渲染时间

网络系统:响应时间、吞吐量

例如:TPS(Transaction per Second):系统每秒处理交易数,推导过程如下:
当前线上APP1.0试用系统主要为查询类交易,交易占比40%,系统生产交易量统计为1个月约20W笔,假设APP2.0系统上线后业务量激增到每日查询类20W,则每日总交易量T达到:

T = 20W/40%=500000笔/日。系统处理能力TPS推导:APP2.0上线后交易量最大500000笔/日,系统晚间几乎无交易量,按2:8原则推算,则(500000*80%)/(8*20%*3600)=69.4笔/秒,取整为70笔/秒,每年按业务量增长50%计算,则一年后系统处理能力指标约等于70+70*50%=105笔/秒。稳定性交易量推导: 取系统处理能力的60%*时长=105笔/秒*60%*8*3600=1814400笔。经过分析后汇总成测试指标值:

 

3、业务模型构建(场景提取)
根据200X年XX月XX日~200X年XX月XX日期间的业务高峰日200X年XX月XX日的业务量统计,经过略微调整得出以下业务模型,要求业务模型交易至少占线上交易量的90%以上:

获取最常用场景

已有面向广大用户的系统,只要使用就能提取到性能测试点。

最直接的方式:自己可以去操作下。如:视频网站,首页(访问量占总访问量的50-70),内容详情页,各子导航等。

已有面向少数客户的系统,最快速的方式看下数据库表量,找出数据量大的表去问项目经理 数据是怎么产生的,也能获取到性能测试点。

如果是未上线的,就更好办啦,找项目经理/产品经理/技术负责人聊聊呗,听听他们对系统的规划、设想和设计。

4、获取最终性能目标

方式一:客户有明确要求。注意,需判断客户预期是否合理。

方式二:现有资源限制,想知道最大承载量。

方式三:啥都没有的。这个最常见来着,这样的情况,只要自己用客户提供环境/公司环境,自己搭建一套最小系统,看最小系统的承载量啦。

最终我们需要达到的响应时间和系统资源使用率等目标;比如:

①登录请求到登录成功的页面响应时间不能超过2秒;

②报表审核提交的页面响应时间不能超过5秒;

③文件的上传、下载页面响应时间不超过8秒;

④服务器的CPU平均使用率小于70%,内存使用率小于75%;

⑤各个业务系统的响应时间和服务器资源使用情况在不同测试环境下,各指标随负载变化的情况等;

 

二、测试准备

在测试准备阶段,需要完成业务模型到测试模型的构建、性能测试实施方案编写、测试环境的准备、性能测试方案、案例设计、性能测试监控方案设计、性能测试脚本、相关测试数据的准备,并在上述相关准备活动结束后按照测试计划进行准入检查。

重点关注:测试模型构建、方案设计、用例设计、数据准备等

 

1、系统基础功能验证

性能测试在什么阶段适合实施?一般而言,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行性能测试,否则性能测试是无意义的。

根据对项目背景,业务的了解,确定本次性能测试要解决的问题点;是测试系统能否满足实际运行时的需要,还是目前的系统在哪些方面制约系统性能的表现,或者,哪些系统因素导致系统无法跟上业务发展?确定测试领域,然后具体问题具体分析。

2测试模型构建(测试场景设计)

在需求分析的基础上,对调研收集到的相关资料与信息进行分析梳理,重点分析跨系统的交易路径、交易关联关系、数据的处理与流转、业务量、交易比例、典型交易,以及系统的处理能力等性能测试点,针对性地确定多个业务场景,并为每个场景选择一套具体的业务交易集,按照业务量比例构建相应的测试模型。

本阶段的产出物为,各个测试场景,以及场景中典型交易及所占比率。

例如:从业务模型到测试模型推导

依据业务模型,通过与项目组及产品经理沟通,确定本次测试模型还需着重考虑以下内容:

(1)考虑到后期证券系统数据库升级,历史查询可能会影响,所以本次测试单独增加一个场景:历史委托和历史成交查询各50%(即0456和0457)。同时,考虑到线上环境绝大部分该交易是由总中心前置发起,所以本次测试“历史委托和历史成交查询”交易均采用从总中心发起;

(2)增加国债发行交易场景,国债发行认购日一般在柜台营业前进行,此场景只选择国债发行认购一支交易;

(3)同时,证券系统交易高峰时段柜员签到、柜员签退交易占比较小。

通过以上分析得出本次测试模型有3个:一般交易日日间模型、国债发行日模型、以及历史查询交易模型。
一般交易日日间模型:

 

储蓄国债交易模型:

历史查询交易模型:

3测试计划和方案

所谓的测试计划,无非就是某人用多久时间用什么资源什么方法完成什么事情。
测试方案,就是测试计划的补充和扩展。
比如这次性能测试,我预计用一周时间完成这些测试工作,设计用例、场景建模、准备测试数据、测试脚本开发、环境搭建等各需要多久时间,在哪一天甚至是上午还是下午完成这些工作。
性能测试实施方案编制是性能测试工作中必须的工作环节,其产出为《性能测试方案》,如:《云智慧XXX项目_XXX功能模块性能能测试方案V1.0.xlsb》。
在方案中需要描述:测试需求、启停准则、测试模型设计、测试策略、测试内容、测试环境、工具需求、参与人员、性能测试各子模块的起止时间、预期的风险与风险规避方法,以及各个阶段的输出文档。测试模型设计内容来自本阶段的测试场景,以及场景中典型交易及所占比率。

4、环境搭建

测试环境由于之前会员系统也进行过性能测试,测试环境搭建这一步工作量不大,开发很快就配置完成,所以这里不赘述。

性能测试环境与功能测试环境的区别

  那么性能测试环境与功能测试环境有什么不同呢?性能测试对测试环境的干净、独立性要求更高,更为严格。那么性能测试为什么对系统的环境要求干净、独立呢?性能测试是要对整个系统运行的软件硬件环境进行测试的,如果某环境下运行多个系统,就很难判断其中的某个环境对资源的占用情况。

性能测试环境包含内容

一般web应用系统分为3层架构(在系统架构一章中有介绍)

* 表现层(web服务器)

* 业务逻辑层(应用服务器)

* 数据层(数据库服务器) 

 

如何保证测试环境与真实生产的一致性

保证性能测试与真实生产环境的一致性,具体从以下三个方面来看:

1、硬件环境,包括服务器环境、与网络环境

如服务器的型号以及是否和其它应用程序共享此服务器,是否在集群环境下,是否通过BIGIP进行负载均衡,客户使用的硬件配置情况,使用的交换机型号,网络传输速率。

2、软件环境

版本一致性包括包括操作系统、数据库、中间件的版本,被测系统的版本。

配置一致性系统(操作系统/数据库/中间件/被测试系统)参数的配置一致,这些系统参数的配置有可能对系统造成巨大的影响。所以,除了保证测试环境与真实环境所使用的软件版本一致,也要关注其参数的配置是否一致。

3、使用场景的一致性

基础数据的一致性包括预测的业务数据量,以及数据类型的分配。很简单的一个列子,一个系统的数据库只有10条数据和一条数据库里几千万条数据,我们在对其进行性能测试时,得到的性能指标可能会有非常大的差别。为了保证每次测试环境的更加一致性,磁盘的使用情况以及磁盘的碎片情况也会或多或少的影响的性能。

使用模式的一致性尽量模拟真实场景下用户的使用情况,其实,我们在做性能测试前期的需求分析,其主要目的也就是为了更真实的模拟用户的使用情况。

5、用例设计

在案例设计中,包括案例的描述、测试环境描述(硬件、软件、应用版本、测试数据)、延迟设置、压力场景、执行描述、预期结果、监控要点。

案例设计是性能测试工作的必须工作环节,案例设计的产出文件是《性能测试案例》。

6、数据准备

环境准备工作中涉及到基础数据的准备。测试数据的数量、逻辑关系要求十分严格,测试基础数据的准备一般采用自造模拟数据或者使用脱敏后的线上数据。

测试环境测试数据,可以根据系统的运行预期来确定,比如需要测试的业务场景,数据多久执行一次备份转移,该业务场景涉及哪些表,每次操作数据怎样写入,写入几条,需要多少的测试数据来使得测试环境的数据保持一致性等等。可以在首次测试数据生成时,将其导出到本地保存,在每次测试开始前导入数据,保持一致性。

7、测试脚本开发

性能测试中,测试脚本设计与开发占据了很大的时间比重。测试脚本开发工作就是发挥LR的时候。一个脚本一般为一项业务的过程描述。该阶段主要为脚本的录制、编写、修改、调试工作,从而保证在测试实施之前每个测试用例的脚本都能够在单笔和少量迭代次数的条件下能够正确执行。

测试脚本开发的一般步骤如下:

●通过录制,或者编写,完成脚本代码生成。代码生成时,主要根据需求插入事务,作为测试过程中统计交易响应时间的单位;

●根据测试需求,进行参数化设置;

●设定检查点,根据报文内容字段判断交易是否正确执行,即检查点的设置在应用层面;

●根据测试要求确定是否设置集合点;

 

三、测试执行

测试执行阶段是执行测试案例,获得系统处理能力指标数据,发现性能测试缺陷的阶段。测试执行期间借助测试工具执行测试场景或测试脚本,同时配合各类监控工具。执行结束后统一收集各种结果数据进行分析。根据需要,执行阶段可进行系统的调优和回归测试。

重点关注:测试执行与结果记录、测试监控、结果分析

1、测试执行与结果记录

测试执行过程有相应的优先级策略,依据测试案例的优先级别,优先执行级别较高的测试案例。

测试过程中,通过对每个测试结果的分析来决定是重复执行当前案例还是执行新的测试案例;通常发现瓶颈问题会立即进行调整并重新执行测试用例,直到当前的案例通过。

在执行阶段,测试的执行、分析调优、回归测试工作较为反复,须认真记录全部执行过程和执行结果,执行结果数据是分析瓶颈的主要依据。

2、测试监控

测试的监控工作与执行工作同步进行,场景或脚本开始执行时,同时启动监控程序(可以用nmon或者系统命令top/vmstat/iostat 等),在执行结束后,停止测试监控,并提取监控结果数据。

四、测试报告阶段

测试执行工作结束后开始撰写性能测试报告。性能测试报告在发布前需要进行评审。

 

1、报告撰写

性能测试报告要内容包括:测试目的、范围及方法、环境描述、测试结果描述、结果分析、结论和建议等。

2、测试结果描述

测试结果的描述,应体现性能测试的执行过程,如:混合场景的容量测试结果展示中,需要描述各个并发梯度下测试结果及监控结果;在数字形式的结果记录中,要求小数点后精确3位有效数字。

3、测试缺陷与问题

在性能测试分析报告中须描述测试过程发现的缺陷与问题,对于确认是测试缺陷的项进行风险评估,并给出风险提示。

4、最终结果分析

根据前端性能测试工具显示结果、监控结果综合分析,该部分内容应该全面、透彻、易理解且通过图表方式表达更直观。例如:

 

(1)测试环境的系统性能分析

根据我们之前记录得到的测试结果(图表、曲线等),经过计算,与预定的性能指标进行对比,确定是否达到了我们需要的结果;如未达到,查看具体的瓶颈点,然后根据瓶颈点的具体数据,进行具体情况具体分析(影响性能的因素很多,这一点,可以根据经验和数据表现来判断分析)。

(2)硬件设备对系统性能表现的影响分析

由于之前设计了几个不同的测试环境,故可以根据不同测试环境的硬件资源使用状况图进行分析,确定瓶颈是再数据库服务器、应用服务器抑或其他方面,然后针对性的进行优化等操作。

(3)其他影响因素分析

影响系统性能的因素很多,可以从用户能感受到的场景分析,哪里比较慢,哪里速度尚可,这里可以根据2\5\8原则对其进行分析;

至于其他诸如网络带宽、操作动作、存储池、线程实现、服务器处理机制等一系列的影响因素,具体问题具体分析等。

(4)测试中发现的问题

在性能测试执行过程中,可能会发现某些功能上的不足或存在的缺陷,以及需要优化的地方,这也是执行多次测试的优点。

5、测试结论

测试结论是性能测试分析报告必须包括的内容。测试的结论须清晰、准确回答性能测试需求中描述的各项指标,需全面覆盖测试需求。

五、测试总结阶段

性能测试的总结工作,主要对该任务的测试过程和测试技术进行总结。性能测试工作进入总结阶段,也意味着性能测试工作临近结束。在这个阶段,时间允许的情况下应将所有的重要测试资产进行归档保存。

六、性能测试思维导图

 

猜你喜欢

转载自www.cnblogs.com/tester-l/p/8632066.html