一个优秀的软件系统不单单具有良好的功能,还需要有过硬的性能,一个只通过功能测试的系统,只能称之为“可用”,而不能算是“好用”。当然,性能测试需要基于功能测试,只有系统功能稳定了,性能测试才有意义。性能测试主要包含两个特性:时间和资源。时间指系统处理客户请求的时间,主用用响应时间和吞吐量来衡量,而资源则是指测试过程中系统资源消耗情况,最常受关注的资源包括CPU、内存、磁盘。

性能测试方法主要包括:性能测试、配置测试、并发测试、负载测试、压力测试、稳定性测试。

  • 性能测试:测试环境和测试目标确定的情况下,测试系统是否达到宣称的能力;
  • 配置测试:系统具有一定的测试基础时,通过修改环境配置,例如服务器参数等,对比之前的测试结果进行优化;
  • 并发测试:模拟多个用户并发使用系统,测试系统是否存在死锁、内存泄漏等问题。
  • 负载测试:逐渐向系统添加压力,观察系统资源消耗情况,知道某一项资源达到极限。一般用于度量系统的性能容量,寻找系统瓶颈为系统调优提供数据;
  • 压力测试:系统承受一定的压力的情况下,测试系统是否会出现错误。系统压力包括CPU、内存、磁盘、网络等方面的压力,施加压力的方法包括利用工具占用系统资源、增加并发量等;
  • 稳定性测试:系统承受一定压力的情况下,运行一段时间,测试系统是否平稳运行;

个人以为,这几种测试方法是相辅相成的, 一种测试方法中可能借助另一种测试方法,例如在进行负载测试、压力测试或稳定性测试时,会使用并发测试方法。另外,几种测试方法之间的界定也比较模糊,当负载测试的压力较大时,可以看作是压力测试,当压力测试的时间较长时,可以看作是稳定性测试。性能测试的主要目标是测试、评估软件系统的性能,获取软件系统的参数指标,并协助开发进行调优。不管哪种测试方法,最终目的都是为了提高系统质量,那么根据测试目标和系统特性选用适合的测试方法即可。

性能测试需要借助测试工具,毕竟完全依靠手工进行性能测试需要付出很大的代价,不仅是人力成本和经济成本,还有时间成本。测试工具的使用不仅能够提高测试效率,还可以弥补手动测试难以捕获的一些问题。

Loadrunner简介

Loadrunner是HP公司提供的一款性能测试工具,通过模拟成千上万个用户实施并发操作,测试系统的性能,并且提供详细的测试结果分析,协助用户查找问题。Loadrunner的优势在于节约了人力成本和时间成功,纯人工进行并发测试,不仅需要大量的人手和机器,还需要测试人员进行充分的沟通,默契的进行操作。使用Loadrunner就可以一个人模拟上万个用户,压缩了成本,也提高了效率。

Loadrunner的主要组件包括:

  • Virtual User Generator:捕捉用户业务流程,并且自动生成脚本;
  • Controller:设计场景,主要包括设置不同脚本的虚拟用户数量、迭代次数、执行时间等;
  • Load Generator:模拟用户向服务器发送请求;
  • Analysis:分析测试结果,辅助测试人员进行测试分析;

Loadrunner11安装

初次接触的是Loadrunner12版本,相对而言比11版本的界面更美观,可用性更强,对高版本浏览器的兼容性也更好。奈何目前还没有破解版,vuser最大支持50,于并发测试而言是绝对的硬伤。于是转战Loadrunner11。网上Loadrunner11安装破解教程很齐全,以下便是参照网上的教程安装的记录。

1、下载安装软件

https://pan.baidu.com/s/1i51a3HV

2、解压下载好的ios文件

3、双击setup.exe,按照提示一步一步安装

4、下载破解文件

http://pan.baidu.com/s/1eS7SmD8

5、将“lm70.dll”和“mlr5lprg.dll”文件复制到loadrunner安装目录下的bin目录下

6、点击“CONFUGURATION—>loadrunner license”,点击“New License”,输入“AEAMAUIK-YAFEKEKJJKEEA-BCJGI”,可能会遇到报错“License security violation,operation is not allowed..”。

需要点击破解文件中的deletelicense.exe,随后重新执行上述步骤

7、添加new license,输入AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB,完成!

Loadrunner11录制脚本

1、打开loadrunner11,点击“Create/Edit Script”启动Virtual User Generator。点击File--new,创建脚本文件,选择Web(HTTP/HTML)协议。

[图片上传失败...(image-991c3e-1523440883813)]

2、Loadrunner默认使用IE浏览器,在此我选用火狐浏览器,但是由于Loadrunner11对浏览器版本的要求较为严苛,因此需要下载安装火狐24版本。(下载链接:http://ftp.mozilla.org/pub/firefox/releases/)

3、以loadrunner自带的订票系统为例,Program to record填写火狐浏览器的路径,Program arguments填测试系统的URL,working direction为文件保存路径,自定义即可。填写完成后点击OK,火狐浏览器自动启动并打开订票系统。

 
 

4、首先录制注册用户,按照正常的注册流程,填写用户信息后,登出,并关闭浏览器。点击stop按钮,脚本生成后保存。

 
 

5、生成的脚本只能注册某个用户,不具备通用性,为了使脚本更具通用性,我们需要将某些变量参数化。

参数

1、每个用户的用户名是不一样的,且不能重复的。首先用参数替换用户名,右击用户名value--点击Replace with a parameter,输入参数名称“username”--点击properties。

 
 

2、参数类型有很多种,在此用户名参数选择File类型,点击Create Table创建文件。

 
 

3、文件创建好了,点击Edit with Notepad,使用excel下拉创建20个用户复制到username.dat中,保存后可以看见这20个用户。File数据库文件默认只看到100个值,如果想使用更多值,请修改“安装目录/config/vugen.ini”中的[ParamTable]属性下的MaxVisibleLines。

 
 

Select column的方式默认选择“By number”,并且number为1,即选择第一列参数。当然也可以选择By name,选择变量参数名称即可。“Select next row ”设置参数取值方式,由于用户名不能重复在此取值方式选择Unique。

  • Sequence:按照顺序依次取值;
  • Random:随机取值;
  • Unique:唯一取值,为每个虚拟用户分配一条唯一的数据;
  • Same line as ***: 当多个参数时,取某一个参数的同一行;

"Update value on"设置参数更新周期,主要有以下三种更新周期,在此选择每次迭代更新。

  • Each iteration :每次迭代时更新参数的值 ;
  • Each occurrence :每次使用该参数时更新参数的值;
  • Once :执行脚本只取一次值,中途不更新参数的值;

当选择取值方式为Unique时,需要额外设置“When out of value”和“Allocate vuser values in the controller”。其中“When out of value”设置dat文件中的值个数不够时的处理方式,主要有以下几种方式,我们选择“”

  • Abort Vuser:放弃剩下虚拟用户,不再取值;
  • Continue in a cyclic manner: 以循环的方式,重新从开头取值;
  • Continue with last value:当dat文件中的值取完后,持续取最后一个值 ;

“Allocate vuser values in the controller”:设置在controller中并发迭代执行脚本时,为每个vuser分配的参数块大小,选择“Automatically allocate block size”,系统会以迭代次数作为参数块大小,为每个vuser分配参数。例如dat文件中有50个username,当迭代次数为5,vuser个数为8时,会将Test1Test5分配给vuser1,Test6Test10分配给vuser2,以此类推。当dat文件中的值不足时,例如迭代次数为6,vuser个数为9时,最后一个vuser只分配到了2个值,值不足时会根据“When out of value”设置的方式处理,但是仅在块内取值,即只能循环取这两个值。“Allocate ** values for each Vuser”顾名思义就是手动设置参数块大小。

“Automatically allocate block size”方式的优点是方便,不需要根据场景反复编辑脚脚本,缺点就是dat文件中的值个数不够时,vuser分配不到值会报错。而手动设置的优点就是人为控制出错较少,但是每次都需要修改脚本,比较麻烦。

4、双击password的value,点击Replace with a parameter,输入参数名称“passwd”--点击properties,依旧选择File类型参数,点击Browse选择之前创建的文件username.dat,点击“Add column”添加列“passwd”。与之前方式一致,输入50个password值,取值方式设置为“Same line as username”,确保用户名与密码一一对应。

 
image.png

5、密码确认这一栏输入的值需要与密码保持一致,双击passwordConfirm的value,选择“use existing parameter”--passwd。

 
 

6、firstname、lastname等其他变量安照类似的方式设置即可。执行脚本,在loadrunner11安装目录\WebTours\MercuryWebTours\users目录下可以看见生成的用户信息。下面利用controller批量注册这20个用户。

插入事物

1、插入事物是为了更好的衡量服务器的性能,可以在录制脚本的时候,在某个操作前插入事务开始点,该操作完成后插入事务结束点。当然,录制好的脚本也可以插入事务,以本脚本为例,将注册请求定义为一个事务。在“web_submit_data("login.pl_2" ”函数前插入事务开始点,右击鼠标——Insert——Start Transaction,输入事务名称register。

 
 

采用相同方式在函数下方插入事务结束点,右击鼠标——Insert——End Transaction,输入事务名称register。

2、点击“Run Load Tests”启动controller,设置新场景,选择需要使用的脚本,可以是一个或者多个,然后点击ok。

 
 

3、点击”场景“——Load Generators,添加Load Generators,在此输入localhost表明连接本地的Load Generators。点击connect,连接Load Generators,如果连接不上则需要进一步定位原因。

 
 

也可以直接在脚本列表中直接下拉添加Load Generators。因为当前只有一个脚本,vuser比例默认为100%,当同时执行多个脚本时,可以设置每个脚本分配的vuser比例。

 
 

4、脚本设置好后开始设置运行场景,双击Initialize设置初始化用户的方式。

 
 

双击”Start Vusers“设置vuser个数和启动方式。

 
 

双击Duration设置场景运行周期,选择”Run until completion“则当场景运行完成后同时停止所有vuser。如果选择运行一段时间,则需要设置停止vuser的方式,与设置启动vuser方式类似。

 
 

5、点击”start scenario“运行场景,在Run可以看见vuser的状态,以及场景运行过程中的报错信息。场景运行结束后,可以在下方看见一些数据,以便了解被测系统的性能。如下图所示,可以看见事务“register”的响应时间。

 
 

6、点击Result——Analyze Results,将会启动Analysis自动生成本次场景执行相关的测试报告。

 
 

参考链接:

http://www.jb51.net/softjc/71256.html

https://www.jianshu.com/p/2f417febd39c

作者:糯米藕
链接:https://www.jianshu.com/p/1b2874243eca
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Loadrunner学习(一)的更多相关文章

  1. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  2. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  3. Loadrunner学习---脚本编写(1)

    Loadrunner学习---脚本编写(1) 中午看了两集<奋斗>发现越看越想看,但是想到好不容易没上班,在家还是赶紧学习下LR的知识吧.下面这个网页的文章原来也是看过的,但发现没几天就忘 ...

  4. loadrunner学习系列---脚本编写(2)

    loadrunner学习系列---脚本编写(2) 今天接着翻译http://www.wilsonmar.com/1lrscrīpt.htm上面关于LR脚本编写部分. VUser_Init部分 这里是V ...

  5. Loadrunner学习资料

    辅导书籍(书的价值主要在学习的人,而不在书本身) 于涌 | 精通软件性能测试与LoadRunner实战京东 点击查看 柳胜 | 性能测试从零开始京东 点击查看适合零基础的同学学习 柳胜 | LoadR ...

  6. loadrunner学习笔记之参数设置

    一.关于参数的定义 在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本.函数中参数的值就是在录制过程中输入的实际值. 例如,你录制了一个Web应用程序的脚本.脚本生成器生成了一个声明,该 ...

  7. loadrunner 学习笔记--AJAX(转)

    用loadrunner测试WEB程序的时候总是会碰到AJAX或者ActiveX实现的功能,而通常这些功能会包含很多客户端函数(一般为JavaScript).我们该如何处理?如果从功能实现的角度去考虑这 ...

  8. LoadRunner 学习笔记(3)基础

    LoadRunner包含的组件: Virtual User Generator 录制最终用户业务流程并创建自动化性能测试脚本,即 Vuser 脚本 Controller 组织.驱动.管理并监控负载测试 ...

  9. LoadRunner 学习笔记(2)VuGen运行时设置Run-Time Setting

    定义:在Vugen中Run-Time Setting是用来设置脚本运行时所需要的相关选项

  10. LoadRunner学习知多少--IP欺骗使用

    使用IP欺骗功能时,需要将系统防火墙,杀毒软件关闭(如果有影响的话) 一.为什么要设置IP欺骗 1. 当某个IP的访问过于频繁,或者访问量过大时,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频 ...

随机推荐

  1. 多层级makefile

    多层级makefile 当项目变大之后,需要多层级的makefile来编译,每个makefile的具体功能实现参考单源文件目录makefile.然后再在顶层目录写一个总的makefile来实现编译逻辑 ...

  2. 扫描仪扫描文件处理-富士通ix500参数

    纸张太薄不要扫,非常容易卡纸 当纸张薄的时候,每次不要放入太多,很容易因为层叠纸张压力导致滚动拉动单张力度过大,从而卡纸 卡纸第一时间叩开"滚轮盖" 去掉"自动跳过空白页 ...

  3. Linux关联文件扩展名和打开程序

    手动为Linux关联文件扩展名与打开程序. 当Linux不认识某种扩展名的时候,需要为此扩展名创建一个MIME类型.Linux是依据MIME类型而不是扩展名来决定打开程序的. 再将此种MIME类型与某 ...

  4. 【Luogu】P3369 【模板】普通平衡树(树状数组)

    P3369 [模板]普通平衡树(树状数组) 一.树状数组 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构. ...

  5. spring boot:redis+lua实现顺序自增的唯一id发号器(spring boot 2.3.1)

    一,为什么需要生成唯一id(发号器)? 1,在分布式和微服务系统中, 生成唯一id相对困难, 常用的方式: uuid不具备可读性,作为主键存储时性能也不够好, mysql的主键,在分库时使用不够方便, ...

  6. Drone 安装教程

    Drone 安装教程 一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/ ...

  7. 深入理解Java的抽象类和接口

    对于面向对象来说,抽象是其重要特征之一.对于之中的抽象类和接口,两者有很多相似的地方,又有两者之间区别的地方. 用几个简单的例子让你快速的理解两者之间的概念和区别 鸣谢 一.抽象类 在了解抽象类之前, ...

  8. 浅谈1——用Eclipse调试JAVA程序

    本篇博客主要介绍如何用Eclipse调试简单的JAVA程序. 1.如下图,一个简单的JAVA程序  2.设置断点. 方法:选中需设置断点的行代码,按快捷键Ctrl+Shift+B,设置断点: 断点设置 ...

  9. revel run报错 undefined: sys call.SIGUSR2"

    revel run报错,报错信息为 o Compilation Error (in ..\\..\\revel\\server_adapter_go.go:135): undefined: sysca ...

  10. JDK源码阅读-------自学笔记(二十五)(java.util.Vector 自定义讲解)

    Vector 向量 Vector简述 1).Vector底层是用数组实现的List 2).虽然线程安全,但是效率低,所以并不是安全就是好的 3).底层大量方法添加synchronized同步标记,sy ...