一、需求分析以及需求确定
如果是新上线的项目,指标需要以目的为导向,比如验证容量、稳定性验证、有特定的预期指标、基准性能把控等等,如果是已上线的项目,一定要根据历史数据分析性能,对于性能测试的需求,一定合理。
比如:客户的OA系统,只有一万员工,要求一万并发数,这样是不合理的,产品经理要求单台阿里服务器,支撑一万并发数,这样也不合理,或项目组领导要求使用三年后达到什么性能。
二、性能测试计划和方案的确定
确定需求后,需要开始编写测试计划,计划包括背景、要求、人员、时间等等。
性能测试方案最常用都有以下几种:
【基准测试】:基准是用于衡量产品或服务的特定衡量标准。简而言之,它是访问特定产品或服务质量的指标或参考点。同样,基准测试是测试人员将应用程序或系统的软件和硬件方面与规定标准进行比较的过程。除了测试性能,基准测试还可以测试系统或应用程序的安全特性。基准测试是软件开发生命周期 (SDLC) 的一部分,其中开发人员和数据库管理员 (DBA) 确定软件的安全性和性能,并在必要时采取适当措施进行改进
【负载测试】:负载测试方法在被测系统上不断增加压力,直到性能指标超过预定指标或者某种资源使用已经达到饱和状态。负载测试方法可以找到系统的处理极限,为系统调优提供数据,有时也被称为可置性测试。该方法具有一下特点:
1.这种性能测试方法的主要目的是找到系统处理能力的极限。
2.这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景,使得测试结果具有业务上的意义。
3.这种性能测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。
【压力测试】:压力测试方法测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。压力测试方法的特点:
1.这种性能测试方法的主要目的是检查系统处于压力情况下时应用的性能表现。
2.一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。
3.一般用于测试系统的稳定性。
【稳定性测试】:稳定性测试是一种非功能性软件测试方法,旨在测试软件应用程序在长时间内连续运行的效率和能力。
进行稳定性测试是为了检查已开发产品的效率(通常超过瓶颈点)、超出正常运行能力。负载下产品的错误处理,软件可靠性、可伸缩性具有更大的意义,而不是通常情况下检查系统行为。稳定性测试评估稳定性问题。
三、性能测试准备阶段
准备生产环境,硬件、软件均需要准备,关于性能测试的压测环境,需要保持赶紧,尽量跟生产环境一样,这样才能压测出来准确的数据。还需要准备测压所需要的脚本、数据,测试脚本是对业务操作的程序化体现,一个脚本一般为一项业务的过程描述。本活动主要为脚本的录制(编写)、修改和调试工作,从而保证在测试实施之前每个测试用例的脚本都能够在单笔和少量迭代次数的条件下能够正确执行。
四、性能测试执行阶段和报告阶段
1、测试执行和监控
测试执行过程有相应的优先级策略,依据测试案例的优先级别,优先执行级别较高的测试案例。测试过程中,通过对每个测试结果的分析来决定是重复执行当前案例还是执行新的测试案例;通常发现瓶颈问题会立即进行调整并重新执行测试用例,直到当前的案例通过。
在执行阶段,测试的执行、分析调优、回归测试工作较为反复,须认真记录全部执行过程和执行结果,执行结果数据是分析瓶颈的主要依据。
测试的监控工作与执行工作同步进行,场景或脚本开始执行时,同时启动监控程序(可以用nmon或者系统命令top/vmstat/iostat 等),当然也可以用云智慧的监控宝和透视宝协同工作,监控宝可以监控网站/网页性能/Ping/DNS/FTP/UDP/TCP/SMTP等IT基础设施的性能指标,透视宝可以发现主机资源、Web应用、浏览器、APP等应用的性能瓶颈。
2、测试报告
测试执行工作结束后开始撰写性能测试报告。性能测试报告在发布前需要进行评审。
性能测试报告要内容包括:
测试目的、范围及方法、环境描述、测试结果描述、结果分析、结论和建议等。