《LoadRunner 12七天速成宝典》—第1章 1.6节第一个性能测试案例

简介:

本节书摘来自异步社区《LoadRunner 12七天速成宝典》一书中的第1章,第1.6节第一个性能测试案例,作者陈霁,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.6 第一个性能测试案例
云云:接着我们来做个简单的性能测试,测试50个用户在论坛上发帖,平均每个用户发帖的响应时间和对应的服务器资源占用率。

恋恋:听起来好酷哦!

云云:首先需要搭建一个测试环境,这里使用新版的DiscuzX 1.5论坛作为案例(由于版本较旧,下载地址参考本书网盘),这里选择简体UTF-8版本。只下载了论坛还不够,这个论坛是基于PHP开发的,所以我们还需要配置一个简单的PHP+MySQL的平台,为了方便讲解,这里使用WAMP 2.2(Windows+Apache+MySQL+PHP)整合平台。双击安装包启动安装。

弹出版本说明,单击“Next”,如图1-39所示。


468f9970d518fe27bdece36917ab83603534c39c

选择“I accept the agreement”,单击“Next”,如图1-40所示。

19ffa73d11c708e0a7cd2724c106ae2ff9bc57be

使用默认目录,单击“Next”,如图1-41所示。

4f1c5f23310b9259e3e44df99e069ecf61c1928c

不添加快捷菜单,单击“Next”,如图1-42所示。

ce86082ef5cafe37f3fc7775cd1cb59484f00ef9

单击“Install”开始安装,如图1-43所示。

ab75042516328210ca35f8c1548380f3b45dabb1

安装结束时会询问默认启动的浏览器应用,这里就默认使用IE浏览器,如图1-44所示。

683159b848e94282f5debb82794b0934054797b9

由于Apache服务器需要占用80端口,所以Windows 10的防火墙会提示是否允许该进程访问网络,单击“允许访问”,如图1-45所示。

46d257f192c3720265a4496b361d3373a9026f03

默认SMTP邮件服务设置,单击“Next”进行下一步,如图1-46所示。

2c2bc1af9f897d23c95615d0fd54d67b71cd258e

完成安装,并且启动WampServer 2服务,如图1-47所示。

如果服务正常启动就会在通知区域中看到一个绿色的W图标,如图1-48所示。


dd3a9f04c77a280585263ebc456d3862480e9d74


0fdcc460efe714392c035adb0c1780de6cb11fae

接着就可以在浏览器的地址栏中输入 http://127.0.0.1,就可以看到Wamp的主页面了,如图1-49所示。

39586ae056e5aa65a981fca0c6e7f7590dca1cfc

WAMP安装完成了,接着把下载好的DiscuzX 1.5压缩包中的upload目录内容解压到WAMP安装目录下的www目录下(默认为C:wampwww),这里改名为discuz目录,然后就可以在浏览器中输入 http://127.0.0.1/discuz开始安装了,如图1-50所示。

275fe982b0ce0859c4003f088454f838590cbccd

安装时提醒需要修改文件,这个时候打开WAMP安装目录下的binapacheApache2.2.21 bin目录修改其中的PHP文件;或者在通知区域中单击WAMP的图标,单击PHP菜单下的php.ini打开该文件,找到short_open_tag = OFF这段,修改为short_open_tag = ON保存。接着单击通知区域的WAMP图标选择Restart All Service重启所有服务,如图1-51所示。

e34523d11407fb546456f7d3f3d8953739bf37d8

再次访问就可以正常访问了。

单击“我同意”,如图1-52所示。


c1963a87506c0cf76b89f238d331d30d34cda6b8

环境和函数正常,单击“下一步”,如图1-53所示。

a788c2f2193efb609bfbb745e1447eff04d9727a

选择“全新安装Discuz!X(含UCenter Server)”,单击“下一步”,如图1-54所示。

01fac5e118afaa8bfb49fcbf9ff0425b979f05bd

默认的MySQL数据库密码为空,所以这里需要将数据库密码清除,填写管理员密码,单击“下一步”,如图1-55所示。

bb152fc73b4937c9c550efcf79e6d7e56d4338cf

稍等片刻安装,跳过最后的客户信息填写就完成了论坛的安装,如图1-56所示。

4c43f93cc203e602276adff9407de4b0196e14dc

恋恋:装个论坛网站也这么麻烦,接着可以做性能测试了吧?

云云:嗯,我要先问你一个问题。在论坛上发一个帖子,用户需要做几步操作?

恋恋:一般是这几个步骤:

(1)登录。

(2)选择所要发帖的版块。

(3)单击新建主题。

(4)书写帖子正文,然后单击“确定”。

云云:那么接着我们来录制这个操作吧。在电脑桌面上打开“Virtual User Generator”,单击“开始”菜单中“File”下的“New Script and Solution”,新建脚本,如图1-57所示。


df318416cd7561d450a37dca7ab2cb6b4775b6cb

在“Create a New Script”中选择“Web-HTTP/HTML”,单击“Create”,如图1-58所示。

c0c3873d89aa73d1a28e66f53e116d26c3e2df80

接着出现代码的编辑界面,如图1-59所示。

584bea19bb90605834e136ab458a91fb44fcf1b1

单击“Start Recording”录制按钮,如图1-60所示。

19698612e42da2a4c3f207cb4c8cbbe23318bee5

弹出的Start Recording窗口中,在URL address中输入discuz论坛地址(注意避免使用Localhost,有些时候会出现录制不到脚本的问题),录制前还需要调整下默认的录制选项,单击“Recording Options”。

为了保证代码能够生成合理的脚本,确保回放的正确性,这里需要修改Recording中的录制模式。找到“HTML-based script”单击右侧的“HTML Advanced”,在弹出的选项中将默认的“A script describing user actions”修改为下面的“A script containing explicit URLs only”,如图1-61所示。


737d0ed0eb74c6c6622ea35de578997d83acd40d

从LoadRunner 12开始,录制的模式通过证书代理的模式了,录制开始时会弹出CA证书提示,要求安装该证书,如图1-62所示。

bd052e640ac7dd0d1072bd0ce82af9e0d1376b9a

单击“是”,确认证书,并且同意Windows 10的防火墙访问提示。

这个时候会看到有一个Recording工具条,并且一个IE 11会被启动,自动访问论坛,接着我们在这个论坛中进行发帖的操作,如图1-63所示。


e6124a103fc2ccb55924bad5fd3805d76319c276

这里我们使用admin身份用户登录后在默认版块发了一个帖子,如图1-64所示。

e3a33c48fa87d461b68be0ce6453551aa5f7b682

单击录制条的停止录制按钮,结束这次脚本的录制,如图1-65所示。

ef908579f10c3dd977638caa2c3e9977cbc3c505

单击停止录制后会看到有提示删除证书的说明,如图1-66所示。

9d7e59a515feded2f5ac92e7bac0913ab1c706ca

单击“是”确定,稍等片刻代码生成弹出Design Studio设计中心。

设计中心提供了对脚本关联处理的支持,但是个人并不太推荐使用这样自动的体系,所以直接单击“Close”,如图1-67和图1-68所示。


1f805e7da1911ffc7f4deb3b57c780f268d7e4f9


abfac69b62279d185c2ec3a82299a45354429772

这里我们完成了脚本的录制工作,保存脚本后,接着我们单击工具栏上的Run按钮或者快捷键F5运行一下这个代码,如图1-69所示。
360_20170531161631577

回放完成后,你会在论坛上看到多了一个新的帖子,也就是说通过录制,我们得到了发帖用户的行为,这个行为用一个脚本来说明(虽然你看不懂怎么回事,但是这个在现在不关键),而回放这个脚本可以实现对前面行为操作的重复,那么可以基本认为该脚本录制是成功的。

恋恋:原来简单几步就能完成用户行为模拟了啊!

云云:你又骄傲了是吧!这个例子简单么,换一个系统你就不能简单地录制回放了,别翘尾巴!

恋恋:翘尾巴不是你的特长么,看我怎么把它压下去!

云云:Stop!接着来说怎么添加监控。监控其实包括两部分,一部分是我们需要的操作的响应时间,另外一部分是在这个操作下的资源利用率。先到脚本中找到发帖的操作。

恋恋:发帖应该是在最后吧,我来看看代码。是不是这一段呢?
360_20170531161711577


202dfa51695daa49112fe0f7295cb56f958393df

云云:不错哦,那么快就找到了,介绍一下经验。

恋恋(得意状):当初的HTML不是白学的,填写表单不就是个submit操作么,代码上面有Action和Method,这不就是表单处理么,而且还有好多个属性和一堆乱码,只有这段了。只是为什么是乱码但回放后帖子显示还是正常的中文啊?

云云:这个问题是编码的问题,英文的软件对中文的识别总归是不好的,这里先不和你纠结这个问题,我们是做性能测试不是做功能测试,哪怕回放是乱码也无所谓的。

恋恋:哦,也是,反正操作成功了,显示不正确也没有关系。

云云:接着我们需要知道发帖所需要消耗的时间,这里需要添加一个叫做事务的函数。把光标切到发帖函数的前面,单击工具栏上的“Start Transaction”或者组合键Ctrl+T,如图1-71所示。


7c970edf6adab131a0ae7c0664a7f8ad6b907db3

接着在代码中直接就会添加一段代码lr_ start_transaction(“”),在双引号中添加事务名称,如图1-72所示。

6c4c57ca95586aa1e40e262ab3b1c4df634b74cc

接着我们将光标移动到发帖函数的后面,单击“End Transaction”或者组合键Ctrl+Shift+T。

同样在代码中添加了一句lr_end_transaction(“”,LR_AUTO”),这里需要和前面的事务名填写一样的内容,如图1-73所示。


0d9ba569e87430cf453fe41111d33729ef20c0aa

恋恋:是不是两个函数要成对,然后他们会计算函数间的时间差?

云云:哎哟,不错哦。

恋恋:那是,也不看看我是谁。

云云:好了,我们完成了脚本的开发工作,接着我们要把这个脚本变成50个用户来运行,并且还要监控在这个负载下资源利用率的情况。

恋恋(期待的眼神)。

云云:打开菜单“Tools”,单击“Create Controller Scenario”创建一个新的场景,如图1-74所示。

弹出创建场景的窗口,我们这里把“Number of Vusers”值从1改为50,单击“OK”启动场景,如图1-75所示。


ed2f7786270d58ca4305eea37c4e4fda20025d2b


bfc2a37a33a22b752d3f43ce95094015fcbfdaff

稍等片刻Controller就会弹出来。

这里就是Controller场景界面了,接着将界面底部的标签切换到Run上,如图1-76所示。


888b8040a7a057f8bb3095cd30d44ffaf6ab9658

接着在右侧的Windows Resources窗口中单击鼠标右键,在弹出的菜单中单击“Add Measurements”项,如图1-77所示。

e3ac792f41d0e92a65b672f6806569f4f4e73c07

单击“Add”按钮,如图1-78所示。

这里输入“localhost”监控本机的Windows 资源信息(使用IP地址可能会被防火墙拦截),单击“OK”按钮,如图1-79所示。


vhttps://yqfile.alicdn.com/973f355550a52b17bd79376a00e28f08c1dc802c.jpeg


76682a0929651822fde10b2205fef5cdbb83ad13

这里可以在下面看到有很多内容,其中“%Processor Time”是我们的CPU占用率,如果达到100%就说明CPU很忙,被完全使用了,单击“OK”按钮完成资源监控添加,如图1-80所示。

f85f7336a4a00c44a61f906fdc8a0c04b49ebce1

稍等片刻可以看到Windows Resources中出现线条,而相关数据会显示在底部(会看到有4个Errors信息,主要是因为Windows 10有些计数器已经取消了,导致无法读取)。这样我们就完成了资源的监控,如图1-81所示。

3d4b5aa7ad6b3a4c5a992b0d0b47d2375ea66385

恋恋:有点像心跳仪,是不是一边运行LR(LoadRunner简写)就会一边监控。

云云:嗯,是这样的。完成了场景中的监控和50个人负载的设置后,就可以运行了,单击F5键等结果吧,这个要运行接近16分钟呢,坐了那么久起来活动活动吧,场景运行如图1-82所示。


f4827cfd651b98e6591976bfd856233b26d0660c

恋恋:好累啊!

**小结
了解如何使用Vugen录制脚本,回放确认脚本录制是否成功,掌握在脚本中添加事务函数及生成场景添加资源监控。**
20分钟过去。

云云:场景运行完成,我们可以来看结果并且生成性能测试报告了。

恋恋:等我再去吃个水果,晚饭后吃水果对身体好。

云云:场景执行完毕后,所有的用户会处在Stop状态,现在我们完成了50个用户在论坛上不停发帖的负载,接着我们来看看论坛上多了多少帖子,如图1-83所示。


63314525cd1ec7ca66d0636c50b7238eae475a16

看看吧,多了400多个帖子哦,这是50个人按照某种策略在上面发帖的结果,如图1-84所示。

fa983056234054802c123cfe1849b5c9510d0502

恋恋:好多帖子啊,用这个来灌水岂不是很方便,我可以成为“灌水女王”了。

云云:基本上这个是可行的,我已经承认你是女王了。

云云:最后我们要生成性能测试报告了,来对这次测试进行一个说明,单击“Results”菜单下的“Analyze Results”,调用Analysis对这次性能测试中的数据进行分析,如图1-85所示。


7c3558022c74997ddf79c2f81f29501e133a3aaf

单击以后Analysis启动,等待数据收集以后会看到以下界面,如图1-86所示。

e72fe890417b099cd6e15bd51e7b4551b9caa12c

这是Analysis给我们提供的一份报告总结。

恋恋:我看不懂,都是数据怎么办。

云云:别急,抓住重点就行了。首先看我们关注的发帖的响应时间,在这个Summary里面显示了posttopic事务的Average时间是10.574秒,你觉得速度快吗?

恋恋:我觉得有些慢。

云云:通常我们使用2/5/8的原则来说明用户体验。即如果事务时间在2秒以内是很快,5秒以内是还不错,8秒以上用户就受不了了。

恋恋:那么现在就是说速度完全不行喽。

云云:这里先卖个小关子,这个时间并不是发帖操作的时间哦,不过你就先当整体看好了,以后谈时间细分的时候再给你详细介绍。

恋恋:那么我们知道时间是10秒多点,又怎么样呢?

云云:单击左边的“Average Transaction Response Time”,会出来一个图,这个图是随着时间的推移事务时间的变化规律,如图1-87所示。

注意,posttopic中的数据就是比较低的那根线,在这个图里面你可以看到负载的过程中响应时间是如何变化的。

恋恋:4分钟以前的时间都不长,4分钟以后的时间波动却很大。


8b95b59473853b0a8d81bc6eaa17d35bd045ce7c

云云:这个问题要分析了,你现在是做入门性能测试,所以知道结果就行了。然后我们单击一下“Running Vuser”,如图1-88所示。接着可以看到用户负载的趋势,并不是50个人都一直在运行,而是一个递增趋势,逐渐到达50个用户稳定一段时间后再下降,想到什么了吗?为什么要这样做?

108d41329d07d1574f5cb2a2651c41b62dd2018e

恋恋:让我想想,好像一开始就在说负载应该是逐渐递增的,这样才能找到拐点。

云云:还算记得不错,用户运行的趋势是在场景中设置的,这里我们使用了系统的默认值而已。最后我们可以看一下资源情况图,这个图要手工添加。

在Graph上单击鼠标右键,在“Add New Item”下选择“Add New Graph”,如图1-89所示。

弹出的窗口中选择“Windows Resource”,单击“Open Graph”,如图1-90所示。


13d8827a6c3650090d9af90c313a233032594ed7


31ffa635b163f39ddc6c7595ae2798ceb0bbca21

这图看的头晕吧(如图1-91所示)。
360_20170531162746883

恋恋:这怎么看啊?

云云:你先别管,直接看Processer Time,是不是发现平均值是63.5%,最大值是100,说明CPU有一定的占用率。

恋恋:是不是就能说有CPU瓶颈了?

云云:CPU是常见瓶颈的一种,但是这里并不能完全说是CPU一定是导致响应时间慢的关键。接着我们编写一份性能测试报告,下面是模板,你照着填一下。

恋恋开始认真填写,最后生成了这样一份性能测试报告。

Discuz性能测试报告
目的:

测试Discuz发帖的性能。

环境:

红太羊的笔记本

Windows 10操作系统+Wamp+Discusx 1.5

负载方式:用户逐渐增加,持续,然后下降的方式,如图1-92所示。


b28232c8e63e28fc9b14f252d805f18e7b7d14b5

响应时间:开始平稳,3分钟44秒以后响应时间迅速上升,超出用户能够接受的8秒时间上限,如图1-93所示。

e7140f1d281beeeb4b6b86975ef830a7af6071eb

资源情况:从一开始CPU占用率就非常高,然后逐渐下降稳定,响应时间变慢和CPU有一定的关系,具体瓶颈原因不详,如图1-94所示。

(<a href=https://yqfile.alicdn.com/a2a4b4b823c4289ca84353089a2c3a7d665b4ee7.jpeg" >

综上所述,在50个用户负载发帖的情况下,系统的CPU资源有明显的瓶颈,响应时间后期波动较大,超出用户能够接受的8秒最大时间,性能测试不通过。

**小结
了解如何使用Analysis整合数据,通过对用户执行,平均响应时间和资源利用率3张图对系统性能进行简单分析,掌握最简单的性能测试报告编写方法。**
云云:第一天就到这里吧,辛苦啦。

恋恋:晚安。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
24天前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
20 1
|
24天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
24 1
|
4月前
|
Java 编译器
Java注解案例-简单测试框架
Java注解案例-简单测试框架
25 0
|
7月前
|
SQL 安全 网络安全
交易所开发测试版丨交易所系统开发规则玩法/架构设计/项目步骤/方案逻辑/案例解析/源码部署
The development process of the exchange system involves multiple steps and links. The following is the detailed process and steps for the development of the exchange system:
|
29天前
|
Java 数据库连接 mybatis
mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)
mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)
9 0
|
2月前
|
人工智能 安全
外汇MT5/MT4交易所平台系统开发测试版/案例设计/策略步骤/功能需求/源码程序
When developing the MT5/MT4 foreign exchange documentary trading system, the following functions and intelligence can also be considered:
|
7月前
|
测试技术
软件测试高频面试题“黑盒测试之正交试验法”案例剖析与实践应用
软件测试高频面试题“黑盒测试之正交试验法”案例剖析与实践应用
342 0
|
6月前
24Redis - 事务测试案例
24Redis - 事务测试案例
34 0
|
6月前
|
Java 测试技术 数据库连接
MyBatis基本用法 && 什么是自动化测试 && Spring事务和事务传播机制 && 性能测试概念和术语 && Loadrunner安装
MyBatis基本用法 && 什么是自动化测试 && Spring事务和事务传播机制 && 性能测试概念和术语 && Loadrunner安装
48 0
|
6月前
|
运维 测试技术 区块链
链动2+1模式系统开发指南流程丨成熟案例丨功能设计丨测试部署丨方案项目丨逻辑需求丨源码出售
链动2+1模式系统开发方案是指一个较为复杂的系统开发模式,其中包含两个公链和一个私链的组合。