性能测试方案
- 调研测试需求
1、测试业务范围:关键的、常用的、压力较大的、有代表性的、不宜过多;
2、测试环境:硬件环境(主机型号、配置)、软件环境(操作系统、数据库)、网络环境(带宽、交换机、防火墙);
3、测试目的:上线前调优,查找缺陷;
4、性能指标:业务性能指标(首先从需求和设计中分析出性能测试需求)、系统性能指标(CPU使用率、内存使用率) - 测试策略和测试资源需求
测试工具、测试方式、测试执行
人力资源:明确所需的人员类型、由何方提供、明确职责分工;
loadrunner使用
进行性能测试的流程一般是:
(1)制定性能测试计划;
(2)开发测试脚本(loadrunner使用虚拟用户的活动来模拟真实用户操作web应用程序,虚拟用户的活动包含在测试脚本中)
(3)设计运行场景
(4)运行监视场景
(5)分析测试结果(使用Analysis软件)
- 安装
首先我们安装loadrunner,安装完成之后,桌面就会出现一下三个图标,如图:
这三个软件用来实现性能测试,使用Virtual User Generator进行脚本录制,对用户名和密码进行参数化,即让多个虚拟用户运行同一个脚本,在本地修改用户名密码,使用Controller设计场景,监控运行场景,将数据收集到Analysis,进行分析数据,生成报告或者图表。如图:
loadrunner是一种自动化负载测试工具,从用户关注的响应时间、吞吐量、并发用户和性能计数器等方面衡量系统的性能表现,辅助用户进行系统性能的优化。
在使用loadrunner之前,我们了解几个概念:
Scenario:场景,即在每一个测试过程中发生的事件;
Vusers:虚拟用户;
Vusers Script:脚本;
Transactions:事务;
rendezvous:集合,当我们测试多个用户并发时,每个用户执行到该事务脚本的先后顺序是不确定的,所以得到的测试结果也并不是一个完全并发的极限测试结果,在开始事务之前,插入一个“集合点”,在多用户执行时,就可以将用户请求停下来,直到用户数量达到满足的条件(默认是100%的用户都到达集合点),那么,所有的用户都将同时发出接下来的请求。
如图:
开发测试脚本
开发测试脚本要使用VuGen组件
- 录制基本的用户脚本
1、首先我们在loadrunner安装目录下启动WebTours中的StartServer.bat,(注意一定要在打开Visual User Generator之前启动它,否则在运行脚本时就会出现错误)如图:
虚拟用户和密码管理如图:
这里我又额外建立了两个虚拟用户yb1和yb2,建立方法就是创建一个txt文档,全部命名为yb1或者yb2,输入:
2、打开Visual User Generator后,选择新建脚本,我要测试的是web项目,协议为:Web-HTTP/HTML,点击创建,进入主窗体,如图所示:
2、在解决方案资源管理器中可以看到创建的脚本的组成部分,分为vuser_init、Action、vuser_end,vuser_init用于用户初始化,vuser_end用户清理,Action用于需要测试的操作,有点类似unittest测试框架,如图所示:
3、开始录制脚本
点击Record按钮开始录制,如图:
弹出开始录制窗体,将脚本录制到Action中,如图:
这里Application设置的是IE浏览器,当然也可以设置为Firefox浏览器,他在loadrunner安装目录中的bin文件夹中的firefox中,如图:
点击开始录制,得到如图:
此时输入用户名和密码,这里我输入的用户名是jojo,密码是bean,如图:
4、插入事务,如图点击Insert Start Transaction,将其命名为login_transaction,如图:
5、插入集合点,点击Insert Rendezvous,如图:
将其命名为login_2020623,如图:
6、点击login进行登录,然后点击Insert End Transaction结束事务,如图:
7、点击结束录制,如图:
8、得到脚本,如图:
9、当然也可以在录制的脚本中插入事务(如果我们忘记执行上面插入事务过程),有三种方法,如图:
- 快照
如图:
如上图可以看到的确进行了快照。 - 文本检查
我们刚刚已经进行了快照,此时可以在想要检查的文处右击,如图:
点击弹出:
点击OK,就可以进行文本检查,脚本中就会自动增加:
给"Text=“welcome.pl?page=search”,后面加上"SaveCount=reservation_Count", 最终得到的脚本为:
Action()
{
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(403);
lr_start_transaction("login_transaction");
lr_rendezvous("login_2020623");
web_reg_find("Search=Body",
"Text=\"welcome.pl?page=search","SaveCount=reservation_Count",
LAST);
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=login.x", "Value=64", ENDITEM,
"Name=login.y", "Value=7", ENDITEM,
LAST);
lr_end_transaction("login_transaction",LR_AUTO);
return 0;
}
- 参数化
如图创建关联:
点击之后弹出:
点击Correlate,如图:
此时体现在脚本中为:
加上"NotFound=warning",得到
对jojo出现的地方进行参数替换,如图:
点击之后弹出:
此时就将jojo替换为{username},当然也可以将所有为jojo的地方都进行了替换,只需要弹出提示之后点击Yes即可,脚本为:
- 添加虚拟用户
在前面我已经在安装目录的users文件夹下添加了yb1和yb2两个用户,也就是确保虚拟用户在文件下存在,如图:
弹出:
可以通过Add Row来添加,但是当虚拟用户很多时,这样添加就比较麻烦,可以点击Edit with Notepad,就可以弹出如图:
输入用户名,如图输入yb1和yb2:
保存退出之后,可以看到:
更改运行时逻辑,否则还是只运行一次,如图:
弹出:
因为我们有3个虚拟用户,因此改为3,以日志输出,如图添加脚本:
编译运行,得到:
其中对于参数的Update value on栏中如图:
- 插入函数
这里的控制流程都是使用C语言的控制流程的语句,例如我们此时在脚本中输出用户名时改成如图:
也就是判断当前的username是否是jojo,使用C语言中的字符串函数strcmp来比较,其中lr_output_message表示输出一条消息,lr_eval_string表示得到参数当前的值,此时我们编译脚本,要确认一下此时{username}宏要运行三个参数,所以此时我们的update value on必须是顺序取值,如图所示:
然后更改运行时逻辑,让它保证是3个虚拟用户,如图:
然后运行脚本,得到:
- 一些重点选项
1、首先就是我们更改运行时逻辑时,默认是他的选项即可,不用改动,如图:
2、对于Record options,如图:
点击之后,如图:
将如图所指的地方勾选上,这样可以解决有些时候不能录制脚本或者可以让脚本的录制速度变快。
3、快照只有在脚本中页面加载的地方点击才有效;
4、如图点击Tools中的Options,如图:
弹出之后,在Scripting下的Replay中选中下图中箭头所指:
此时运行脚本就可以出现浏览器运行情况(浏览器运行比较快,看不清,所以这个可以不勾选):
- 创建运行场景
1、首先将用户参数重新设为仅一个,如图:
之后更改运行时配置,用户数改为1,如图:
2、然后在Virtual user Generator组件中选择Tools,点击create Controller Scenario,创建场景,如图:
选择并发的虚拟用户数,我这里是3个,如图:
点击OK之后自动进入Controller,如图:
3、如果我们要测试其他系统(前提是其他系统安装Loadrunner),要进行配置,首先,点击Load Generators,如图:
点击Add,如图:
弹出之后我们选择是什么系统,我这里选择的是Windows系统,如图:
点击OK之后,就会出现要测试的其他系统服务器,然后要连接这个服务器,点击Connect进行测试连接,如图:
当然也可以如图双击所指的区域:
双击之后弹出如图:
这里也可以添加其他系统,即将如图箭头所指改为Add即可,如图:
点击之后弹出
点击View Script也可以进入Virtual User Generator,
点击Run-Time Settings,可以弹出
它和Virtual User Generator中的一样. - 设置场景
如图,由于我们这里只有一个组2020623,所以我们在Scenario SSchedule栏中选择的是Scenario,如果不止一个组,则选择Group:
蓝色框中从上到下依次为:初始化用户、虚拟用户开始运行的方式、运行时间,虚拟用户停止运行方式。
1、我们可以双击Initialize栏,弹出如图,将箭头所指设为3秒(原来为15秒,这里我将时间缩短):
2、双击Start Vusers栏,开始运行,弹出如图,将箭头所指处改为每5秒启动一个用户(本来是每15动2个用户):
3、双击Duration栏,设置其运行时间,如图设置为5分钟:
4、双击Stop Vusers栏,停止运行,如图设置为每5秒退出一个用户:
- 开始运行场景
先看一下Run,如图:
双击箭头所指这一组Group,如图可以看到有三个虚拟用户:
Run中分为了四部分,如图分别为:
此时开始运行场景,如图箭头所指开始运行:
得到如图:
到达集合点时,点击率是最高的。
此时我们可以查看测试报告,如图:
错误的用户数为0,计算错误率
按理来说可以自动跳转到Analysis中,如果没有自动跳转可以手动跳转,如图:
跳转到Analysis中,生成测试报告,如图:
也可以增加条目,如图: