软件测试

天天生鲜系统

更新时间:2020.08.30 视频教程
PROJECT LIBRARY

[ 性能测试 ]

性能测试工具实现方式

 

在客户端上安装loadrunner,实现模拟用户端向发送请求。

在客户端上安装jmeter,实现模拟用户端向发送请求。

性能测试的代码实现方式

 

利用loadrunner自带的类库录制请求脚本,或利用jmeter录制用户发送的请求,修改、调试和运行测试脚本,查看log和数据库内容等方式验证脚本的正确性。

性能测试范围定义

 

在天天生鲜项目中,被频繁使用的功能、调用的接口等,系统中涉及到大量数据库读、写的功能,大量读写系统缓存部分的功能。

性能测试分类

 

性能测试(Performance Testing):性能测试方法是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生成性能要求。即在特定的运行条件下验证系统的能力状况。

负载测试(Load Testing):在给定的测试环境下,通过在被测系统上不断增加压力,直到性能指标超过预定指标或某种资源使用已经达到饱和状态,目的是了解系统性能容量和处理能力极限。负载测试的主要用途是发现系统性能的拐点,寻找系统能够支持的用户、业务等处理能力的约束。也可以理解为扩展性测试(Scalability Testing),即在固定测试环境,在其它测试角度(负载方面)不变的情况下,变化一个测试角度并持续增加压力,查看系统的性能曲线和处理极限,以及是 否有性能瓶颈存在(拐点)。主要意义是从多个不同的测试角度去探测分析系统的性能变化情况,配合性能调优。测试角度可以是并发用户数、业务量、数据量等不 同方面的负载。

压力测试(Stress Testing):测试系统在一定饱和状态下系统能够处理的会话能力,以及是否出现错误,一般用于稳定性测试。可以理解为资源的极限测试。测试关注在资源处于饱和或超负荷的情况下,系统能否正常运行,是一种在极端压力下的稳定性测试。其主要意义是通过测试调优保证系统即使在极端的压力情况下也不会出错甚至系统崩溃。

配置测试(Configuration Testing):通过对被测系统的软硬件环境的调整,了解各种不同环境对性能影响的程度,从而找到系统各项资源的有分配原则。主要用于性能调优,在经过测试获得了基准测试数据后,进行环境调整(包括硬件配置、网络、操作系统、应用服务器、数据库等),再将测试结果与基准数据进行对比,判断调整是否达到状态。

并发测试(Concurrency Testing):模拟并发访问,测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题。测试目的并非为了获得性能指标,而是为了发现并发引起的问题。

可靠性测试(Reliability Testing):通过给系统加载一定的业务压力的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。需要和压力测试区分开,两者的测试环境和测试目的不一样。压力测试强调在资源极限情况下系统是否出错,可靠性测试强调在一定的业务压力下长时间(如24×7)运行系统,关注系统的运行情况(如资源使用率是否逐渐增加、响应是否是否越来越慢),是否有不稳定征兆。

性能测试完成目标

 

(1)没有明确的数字标准对比的情况下,被测系统已经被测试到了系统极限(系统的某些资源已经耗尽,cpu、句柄、内存,数据库出现大量的慢查询),并且系统证明是可以水平扩展的,则可以上线。

(2)有以往测试结果进行对比,只要证明类似的测试条件下,此次的结果比以往的测试结果更好即可(每秒处理个数更多,单次请求的处理速度更快)。

(3)没有可以比较的测试结果,但是产品 已经上线一段时间(至少3个月),有一些运营数据,则需要分析运营数据来作为比对的基准,只要被测系统达到3个月内系统并发峰值的4倍就可以认为是可以接受的。

(4)开发人员提供经验值作为比对的基准,则被测对象只要证明满足开发人员提出的经验值即可。

如果选择以上的某一种策略,则必须明确系统的每秒处理个数和每次请求的平均时间的具体数值,并出具最终的性能测试报告。

性能测试脚本的执行

 

(1)设计好特定的性能测试场景,

(2)逐步加压的策略,设置好参数化的取值方式,并发的策略,

(3)测试执行结束的条件

加压的负载机和被测试对象最好在一个局域网内。

性能测试的数据收集

 

测试时间、并发数,请求数,成功请求数,失败请求数,点击数,点击率,吞吐量,吞吐率,事务平均时间,最大事务时间,最小事务时间,90%事务时间,页面资源下载数据,服务器资源消耗数据(cpu、内存、磁盘、网络等)

性能测试数据分析

 

(1)分析系统性能瓶颈,

(2)验证是否数据满足性能测试完成条件,

(3)整理测试报告,汇总性能测试数据,整理性能测试结果,

(4)给出测试结论,和整个团队确认测试结果。