性能测试之loadrunner

一、性能测试

1、

  • WHY: 为什么要进行性能测试
    应用程序是否能够很快的响应用户的要求?
    应用程序是否能处理预期的用户负载并有盈余能力?
    应用程序是否能处理业务所需要的事务数量?
    在预期和非预期的用户负载下,应用程序是否稳定?
    是否能确保用户在真正使用软件时获得舒服的体验?
    问题的根源是什么?
    在多种平台上的数百个服务器
    异构系统、多种应用
    数千个工作站
    局域网、广域网和其他分类型的分布式网络体系结构
    交错的故障点
  • WHAT: 关注的性能测试内容
    并发用户数/吞吐量
    平均响应时间
    服务器资源占用情况
    可靠性、可扩展性 发现引起系统问题的原因,关注采用何种技术提高系统性能 软、硬件配置是否合适(容量规划/硬件选型)
  • WHO: 哪些人员关注性能
    开发、系统管理人员、用户、业务人员、测试人员
  • WHERE: 性能测试的关注领域
    能力验证、规划验证、性能调优、发现缺陷
  • WHEN: 何时进行性能测试
    功能验证中后期

2、概念和术语介绍

  • 并发数:
    系统用户数:简单地说就是该系统的注册用户数。
    在线用户数:即登录系统的用户。
    并发用户数:是对服务器产生压力的用户。
    严格意义的并发用户数:同一时间进行同一操作的用户数
  • 响应时间
    又叫请求响应时间:TTLB(time to last byte)
    对请求作出响应所需要的时间 网络传输(请求)时间+服务器处理(一层或多层)时间+网络传输(响应)时间。
  • 事务响应时间(该数值对用户的意义更直观)
    事务是指一组密切相关的操作组合
  • 每秒事务通过数
    TPS 是指每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标
  • 点击率
    每秒向服务器发送的http请求的个数
  • 吞吐量
    单位时间内服务器处理的信息量
  • 思考时间
    用户两个操作之间停留的时间
  • 资源利用率
    不同系统资源的使用情况。CPU,Memory,磁盘,网络。

2、性能测试模型

  • 曲线拐点模型
  • 地铁模型

3、性能测试分类介绍
性能测试之loadrunner_第1张图片

  • 压力测试
    压力测试是测试系统在一定饱和状态下,例如cpu、内存等在饱和使用状态下,系统能够处理的会话能力,以及系 统能否会出现错误。压力测试与负载测试有些类似,经常把负载测试描述成压力测试的一种场景-例如增加用户数 对系统进行压力测试。压力测试的目的是为了揭露高负载下的问题,例如资源竞争、同步问题、内存泄漏等。
    性能测试之loadrunner_第2张图片

  • 基准测试:
    有基础的标准,这样能通过对比发现系统的不同点与变化。

  • 狭义性能测试
    是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能能否满足生产系统要求。Performance Testing是一种常见的测试方法,就是在特定的运行条件下验证系统的能力情况。该测试是一种正常的测试,主要 是测试系统正常使用时是否满足要求。

  • 负载测试
    负载测试是在被测系统上不断增加压力,直到各项指标达到饱和,例如“响应时间”超过预定指标或者某种资源使用
    已经达到饱和状态。这种测试方法可以找到系统的处理极限,为系统调优提供数据。

 负载测试和压力测试两者可以结合进行。
负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
  • 配置测试
    配置测试方法是通过被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到各项资源的最优分配原则
  • 可靠性测试
    可靠性测试是通过给系统加载一定的业务压力(例如资源在70%-90%的使用率)的情况下,让应用系统持续运行一段时间,测试系统在这种条件下能否稳定运行
  • 失效恢复测试
    1.失效恢复测试方法是针对有备份和负载均衡的系统设计的,这种测试方法可以用来检验如果系统局部发生故障, 用户能否继续使用系统,以及如果这种情况发生,用户将受到多大程度的影响。
    2.一般的关键业务系统都会采用热备份或是负载均衡的方式来实现。这种业务系统一般要求有一台或几台服务器出 现问题,应用系统仍然可以正常执行业务。该方法就是在测试中模拟设备故障,验证预期的恢复技术是否可以正常 发挥作用
    3.不是所有的系统都需要进行这种类型的测试,尤其是并没有明确给出系统需要持续运行指标的系统
  • 大数据量测试
    大数据量测试的两种类型:
    1.独立的数据量测试
    针对某些系统存储、传输、统计、查询等业务进行大数据量测试
    2.综合数据量测试 和压力测试、负载测试、并发测试、可靠性测试相结合的综合测试方案

二、loadrunner

1、安装
点这里

2、基础概念

  • 功能:LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量,并发用户和 性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。
  • 原理:LR启动以后,在任务栏会有一个Agent进程,通过Agent进程,监视各种协议的Client与Server端的通讯,用LR的一套C语言函数来录制脚本,所以只要LR支持的协议,就不会存在录制不到的,然后LR调用这些脚本向服务器端发出请 求,接受服务器的响应。至于服务器内部如何处理,它不关心。
    LoadRunner通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,优化性能和加速应用系统的 发布周期
  • 组成:LoadRunner主要包括三个前台功能组件,分别为VuGen(虚拟用户脚本生成器)、Controller(测试控制器)和 Analysis(结果分析器)。系统会自动调用后台功能组件LG(负载生成器)和Proxy(用户代理)来完成性能测试工 作。
    VuGen 是录制与便携脚本的地方。通过录制或编写脚本来模拟用户的行为。
    Controller是执行负载测试管理和监控的中心。在这里指定具体的性能测试方案,执行性能测试,收集测试数据,监控 测试指标。监控工具将测试过程中收集到的客户机、服务器和网络性能指标数据显示在监控页面上,便于测试人员对系 统表现进行随时掌握。
    LG是模拟多用户并发访问被测试系统的组件。模拟多用户访问系统的前提是已经具备了虚拟用户脚本,VuGen是录制和编 辑虚拟用户脚本的工具,录制好的脚本是不同语言表达的文本文件,在LG执行时被解析和执行。脚本录制和回放过程是 在Proxy支持下完成的。
    Analysis在测试完成后,对测试过程中收集到的各种性能数据进行计算、汇总和处理,生成各种图表和报告,为系统性能测试结果分析提供支持。

3、

  • Scenario:场景。所谓场景,是指在每一个测试过程中发生的事件。
  • Vusers:虚拟用户。LoadRunner使用多线程或多进程来模拟用户对应用程序操作时产生的压力。一个场景可 能包括多个虚拟用户,甚至成千上万个虚拟用户。
  • Vuser Script:脚本。用脚本来描述Vuser在场景中执行的动作。
  • Transactions:事务。事务代表了用户的某个业务过程,需要衡量这些业务过程的性能。
  • rendezvous :集合。当我们测试多个用户并发时,每个用户执行到该事务脚本的先后顺序是不确定的,所以 得到的测试结果也并不是一个完全 并发的极限测试结果。在开始事务之前 ,插入一个“集合点”,那么在多用 户执行时,就可以将用户请求停下来,直到用户数量达到满足的条件(默认是100%的用户都到达集合点)。 那么,所有的用户都将同时发出接下来的请求。

4、Loadrunner的性能测试过程:
性能测试之loadrunner_第3张图片
启动:

找到loadrunner的文件夹,点击webtours,进入后找到startserver运行即可

5、安装完成的三大组件
性能测试之loadrunner_第4张图片
脚本用户脚本(Virtual user generator):录制、调试脚本
控制台(controller):设置场景参数,管理虚拟用户
结果分析器(analysis):生成测试报告

6、编写测试脚本

  • 录制脚本
    启动 Visual User Generator 后,选择新建脚本,因为要测试的是web项目,所以选择协议为Web- HTTP/HTML,点击创建后,进入主窗体,选择自己需要的配置进行录制
  • 插入事务
    当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。
    事务(Transaction):为了衡量服务器的性能,我们需要定义事务。比如:我们在脚本中有一个数据查询操作, 为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner 运 行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时 间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 可以在脚本 中插入不限数量的事务。
    通过菜单设计—在脚本中插入—开始事务、结束事务来进行事务的添加。
    事务的状态默认情况下是 LR_AUTO。一般情况下,我们也不需要修改,除非在手工编写代码时,有可能需要手动设置事务的状态。可以通过步骤导航器来查看步骤的参数选项。
 lr_start_transaction("register");
 关注的事务
lr_end_transaction("register", LR_AUTO);
  • 插入集合点
    插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会要求系统能够承受1000 人 同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集 合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到 集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而 达到测试计划中的需求。
    注意:集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合 点。
    具体的操作方法如下:在需要插入集合点的前面,通过菜单操作:菜单设计—在脚本中插入—集合
lr_rendezvous("index");
  • 参数化输入
  • 插入函数
  • 插入检查点
  • 关联
  • 运行时设置

7、创建运行场景
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列 表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
创建运行场景使用 Controller。
8、利用Analysis 分析结果
在场景执行完毕后,可以进行分析,在Controller选择菜单结果–分析结果,会调用Analysis 进行结果分析。

9、其他操作
在这里插入图片描述
性能测试之loadrunner_第5张图片
10、实践(自己之前的小项目)
性能测试的流程
目的:并发测试,多用户上传,查看服务器在各个用户量级别下的性能表现
计划:先测2个用户并发上传,在测5个用户并发上传图片,依次—知道找出系统的性能达到瓶颈
时的用户量
录制脚本(上传图片)- 设计性能测试场景(controller)- 分析在该场景下系统的性能

流程截图如下:
性能测试之loadrunner_第6张图片
性能测试之loadrunner_第7张图片
性能测试之loadrunner_第8张图片

性能测试之loadrunner_第9张图片
性能测试之loadrunner_第10张图片
性能测试之loadrunner_第11张图片
性能测试之loadrunner_第12张图片
性能测试之loadrunner_第13张图片
性能测试之loadrunner_第14张图片性能测试之loadrunner_第15张图片
性能测试之loadrunner_第16张图片
性能测试之loadrunner_第17张图片
性能测试之loadrunner_第18张图片
有测试结果可见,2个用户并发上传性能正常

但是这个loadrunner真的好考验电脑的内存了,5都不能继续测了,‘死机警告⚠️‘,测得时候注意自己的电脑性能,别搞崩了哈!!!

你可能感兴趣的:(性能测试之loadrunner)