admin管理员组文章数量:1595916
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
目录
一丶性能测试基础
1.什么是性能测试
2.性能测试分类
3.理发店模型图
4.性能测试指标
二丶性能测试流程
1.需求分析
2.测试计划
3.测试方案
三丶Loadrunner工具
1.loadrunner的安装
2.loadrunner的破解
3.loadrunner的组成
4.Virtual User Generator(loadrunner脚本录制)
5.LoadRunner Controller(loadrunner创建场景)
6.LoadRunner Analysis(loadrunner生成报告)
7.LoadRunner工作流程(脚本—运行—场景—报告)
8.Action脚本与Controller场景策略对应关系
一丶性能测试基础
1.什么是性能测试
本质:基于协议模拟用户发出请求(业务的模拟),对服务器形成一定的负载,来测试服务器的性能指标是否满足要求
之前在做Web自动化测试时使用的Selenium是模拟用户行为协议
关注点:时间性能(向目标服务器发送请求,服务器返回响应数据的时间);空间性能(如cpu占用,内存占用,磁盘消耗)
注意点:性能测试对于看到的页面的加载没有关系(因为前端的资源是由浏览器进行解析的,跟服务没有关系)
2.性能测试分类
性能测试(狭义)
性能测试方法是通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。通俗地说,这种方法就是要在特定的运行条件下验证系统的能力状态。
特点:
1、这种方法的主要目的是验证系统是否有系统宣称具有的能力。
2、这种方法要事先了解被测试系统经典场景,并具有确定的性能目标。
3、这种方法要求在已经确定的环境下运行。
也就是说,这种方法是对系统性能已经有了解的前提,并对需求有明确的目标,并在已经确定的环境下进行的。
负载测试
通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超过预定指标或都某种资源已经达到饱和状态。
特点:
1、这种性能测试方法的主要目的是找到系统处理能力的极限。
2、这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务上的意义。
3、这种性能测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。
也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。
压力测试(强度测试)
压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误
特点:
1、这种性能测试方法的主要目的是检查系统处于压力性能下时,应用的表现。
2、这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。
3、这种性能测试方法一般用于测试系统的稳定性。
也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
并发测试
并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。
特点:
1、这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。
2、这种性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
3、这种性能测试方法可以在开发的各个阶段使用需要相关的测试工具的配合和支持。
也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。
配置测试
配置测试方法通过对被测系统的软\硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
特点:
1、这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。
2、这种性能测试方法一般在对系统性能状况有初步了解后进行。
3、这种性能测试方法一般用于性能调优和规划能力。
也就是说,这种测试关注点是“微调”,通过对软硬件的不段调整,找出这他们的最佳状态,使系统达到一个最强的状态。
可靠性测试
在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
特点:
1、这种性能测试方法的主要目的是验证是否支持长期稳定的运行。
2、这种性能测试方法需要在压力下持续一段时间的运行。(2~3天)
3、测试过程中需要关注系统的运行状况。
也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。
3.理发店模型图
1.总结理发店就是服务器中的程序
顾客:从客户端发来的请求
由多个浏览器同时发送到服务器的任务:并发用户
服务程序处理一个浏览器请求的时间:平均事务响应时间,特点:随着并发用户的增加而增加
单位时间内服务程序完成客户端请求的数量-à单位事务数,随着并发用户的增加而增大,当并发用户数量达到一定量后不再增加
2.性能优化
1.增加理发师的数量
2.减少理发时间
3.扩展设备
3.通过理发店模型分析程序运行原理、过程、产生性能问题的原因、性能指标
4.性能测试指标
1.响应时间
a)图1
b)图2
c)公式
网络传输时间+服务器处理时间(N1+N2+N3+N4+N5+N6+WT+AT+DT)
不包含前端页面渲染时间,到浏览器收到请求后响应数据截止
d)原则
2-5-8(单位秒,描述服务器响应时间)
优秀-良好--较差
2.tps(吞吐量)
每秒处理的事务数(transaction per second)
3.资源利用率
a)在一定的负载情况下,服务器资源占用情况
b)CPU利用率(不允许超过70-80%,队列长度)
c)Mem(内存)利用率(80%以下,页交换频率)
d)带宽利用率(100Mbps=12.5MB/s,1Byte=8bit)
e)如果资源利用率太小,造成资源浪费
4.用户数
并发用户数(在同一时间向服务器发送请求的用户数量,与每秒的并发请求数不同,一定要确认需求的目的是并发用户数还是并发请求数)
二丶性能测试流程
1.需求分析
1.测试对象
a)常用的
b)核心的,重要的
c)数据量、并发量
d)例子:登录丶注册丶搜索丶添加购物车丶下单以及支付
2.确定性能指标
a)吞吐量、TPS:服务器每秒处理的请求数量
b)响应时间:从浏览器发出请求,服务器处理,到收到响应所需要的处理时间
c)用户数:并发用户数
d)资源利用率:Cpu丶Mem丶磁盘io丶network
e)例子1:要求每天完成交易额2亿,求每秒最大交易数?(采用28定律换算得出,以24小时计算)
需使用2/8原则:80%的用户请求,集中在20%的热点数据上,或时间段
客单价:一般在200-500之间,以中间300计算
计算方式如下:
200000000/300 = 666666.6666666666
666666.6666666666*80% = 533333.3333333334
533333.3333333334/(24*20%) = 111111.1111111111(每一个小时最大交易数)
111111.1111111111/3600 = 30.8641975309(每秒最大交易数)
求每秒平均交易数:
200000000/300 = 666666.6666666666
666666.6666666666/24 = 27777.7777777778
27777.7777777778/3600 = 7.7160493827
f)例子2:每天8小时系统支持500万用户访问
请每秒最大访问量:
5000000*80% = 4000000
4000000/(8*20%) = 2500000
2500000/3600 = 694.4444444444
请求每秒平均访问量:
5000000/8/3600 = 173.6111111111
3.测试场景
1.单一场景
a)登录
b)注册
c)搜索
d)添加购物车
e)下单、支付
2.混合场景
a)用户使用场景
b)系统使用场景
2.测试计划
1.测试目标
2.测试人员组织
3.压测进度安排
4.压力机
a)配置
b)要求
c)数量
5.风险
3.测试方案
1.测试工具
a)loadrunner(HP:ALM应用程序生命周期管理(如之前博客中的QC),QTP:自动测试工具(UFT最新版))
b)jmeter
2.测试环境
a)数据库
b)服务器
c)架构设计
d)有条件的情况下尽量和生产环境一致
3.测试策略
a)单一场景
b)混合场景
4.监控工具
1.Linux
a)nmon
b)rpc
c)jvisualVm
d)Spotlight
2.windows
a)Spotlight
b)perfmon.exe
5.用例设计
a)测试脚本:基于脚本的用例(内容不予展示,有需要的请加博主微信或者私聊博主)
b)场景设计:基于场景的用例(内容不予展示,有需要的请加博主微信或者私聊博主)
6.测试执行
a)脚本编写
b)场景监控设计
c)运行场景
d)监控场景
e)测试报告
7.定位分析问题
a)后端:代码丶软件(包括数据库和应用服务器)丶硬件
b)前端
c)网络
d)图
三丶Loadrunner工具
1.loadrunner的安装
1.OS
a)xp/win7/windows2003/windows2008
b)windows:家庭版--无管理员权限丶专业版丶旗舰版
c)支持浏览器:IE(8,9)
d)需要注意的是安装loadrunner的系统越干净越好
2.安装方式
a)直接解压
b)虚拟光驱
c)可以单独安装压力机
安装loadrunner(记得关闭防火墙以及360等杀毒软件,因为博主在windows server2003服务器上安装,所以不用管)
- 首先将loadrunner11.iso文件解压后文件以及破解文件拷贝到windows server2003服务器上
- 点击解压文件目录下的setup.exe安装程序,进行安装
- 选择完整安装
- 提示警告选择是(如果没有自动启动,则手工重启系统)
- 提示需要安装必要的软件,依次安装即可
- 勾选同意,点击安装
- 提示.NET Framework 3.5 SP1安装成功,点击退出
- 安装程序会自动安装下一个程序,点击是即可
- 同样出现如下重启系统提示,点击是即可
- 手工重启后,需要打开setup.exe安装程序,会自动进行上一步的安装,安装完成后到如下页面,点击下一步
- 勾选同意,点击下一步
- 输入信息(这个随意),点击下一步
- 选择安装文件夹,下一步
- 确认安装下一步
- 进行安装
- 问题:在安装过程中如出现某一步卡住半天不动的话,是因为在任务进程中存在多个名为msiexec.exe的进程,存在两个名为administrator的msiexec.exe进行则结束掉其中最小内存的;存在多个system的msiexec.exe进程,同理结束掉最小内存的
- 安装完成如下
- 在开始菜单中则可以看到loadrunner应用程序
2.loadrunner的破解
- 执行lr_Del_license(regedit).exe程序删除licence注册表数据
- 在loadrunner安装目录bin下替换组件
- 进入loadrunner,打开LoadRunner License
- 创建一个新的licence(博主这里输入的是100个并发的licence)
- 点击ok之后,显示出并发量为100,这样就破解完成了
3.loadrunner的组成
1.三大组件
Virtual User Generator —— 录制回放、开发维护脚本(虚拟用户产生器)
LoadRunner Controller —— 用于创建、运行和监控场景(控制器:设置需要使用的并发用户的数据,这些并发用户要向服务器请求什么功能(执行哪个脚本)对执行脚本的并发用户下发命令(调度器)load Generator压力机)
LoadRunner Analysis —— 用于生成测试报告,分析性能测试结果(分析器:分析控制器在一段时间内记录的性能数据(转化为直观的图))
- 以上三大组件对应loadrunner界面中的如下三个
2.新建脚本选择网络协议
- 点击create/edit script
- 即进入到Virtual User Generator虚拟用户生成器页面
- 点击新建脚本,默认为单协议脚本在弹出框的左侧栏中可以选择,然后选择协议,也就是你测试项目是基于什么协议的
,
- 选择Web(HTTP/HTML)协议点击创建单协议脚本,会显示到近期新建脚本协议列表中,如下
- 新创建脚本,选择多协议脚本
- 新创建脚本,选择最近采用的
- 在自动化接口实战(一)中博主搭建过一个webtours项目环境,当时是单独搭建的,其实这个项目是loadrunner自带的,所以现在我们在loadrunner中打开这个自带的项目,首先是开启web服务
- 开启之后,会出现如下服务管理器,表示开启服务成功
- 紧接着在浏览器中直接访问http://127.0.0.1:1080/WebTours/,或打开上上一步中的Web目录下的HP Web Tours Application
3.如何选择协议
第一种:协议探测工具
- 点击进入loadrunner自带的协议探测工具
- 选择浏览器,输入要探测的url地址,如下
- 点击ok之后,会自动打开ie浏览器并访问填写的url地址,输入用户名密码点击登录,然后在页面中多一些操作后,最后点击Stop Analyzing停止分析
- 出现分析报告,分析结果为红框中的协议都适用于探索的项目,有三种
第二种:询问开发
第三种:根据以往的经历自我分析
4.Virtual User Generator(loadrunner脚本录制)
1.创建单协议脚本
- 分析出哪种协议之后,则开始创建一个单协议脚本
- 到如下说明页面
- 点击上方script以脚本视图查看
- 点击Tree,以Tree视图查看
2.开始脚本录制
- 点击Start Record开始录制,在弹出框中进行填写录制的u人类地址选择action,点击ok
- 在打开的webtours登录页面,进行登录,登录成功后点击停止录制(录制框菜单栏对应的选项为停止、暂停、插入新的action、开始事务,结束事务、插入集合点、插入注释)
- 停止录制后,回到script视图下,如下所示
- 遇到的问题:IE不能启动
- 解决:检查IE是否是默认浏览器丶检查IE版本是否是9以下丶更换火狐浏览器丶检查杀毒软件是否关闭
- 如果始终解决不了,放弃录制,选择手写脚本
3.脚本查看模式
a)script view:可以查看全部录制的脚本代码
b)tree view:可以查看每个url获取来的页面
c)注意:
每行脚本都是一个函数调用
函数中的参数记录了客户端发送给服务器(request请求)的数据
web_url:直接请求下载一个网页
web_link:通过单机文本链接请求打开一个网页
web_image:通过单机图片链接请求打开一个网页
web_submit_form:代表在请求打开一个网页时需要将一定的数据上传到服务器
4.脚本的组成
- 在script视图左侧显示出又哪些脚本
- 可以创建多个Action脚本
总结:Virtual User Generator的脚本分为三部分:Vuser_init,Action,Vuser_end其中Vuser_init和Vuser_end都只能存在一个,而Action可分成无数多个部分,可以通过点击旁边的[new]按钮来创建Action。在迭代执行脚本测试时,Vuser_init和
Vuser_end中的内容只会执行一次,迭代的是Action部分
每个脚本默认包含三个Action:vuser_init,vuser_end,action
5.脚本的运行
- 点击如下的运行按钮,即可运行脚本
- 脚本运行完成后,查看Replay Log日志查看脚本运行详情
- 点击Recording Log查看录制脚本的日志
- 点击Generation Log查看发送请求协议的日志
6.回放结果查看
- 在菜单栏选择View——Test Result查看测试结果
- 详细介绍如下
- 最后保存脚本在菜单栏File中sava as....另存即可(切记保存在路径不能带中文,不然在导入创建场景会提示找不到)
5.LoadRunner Controller(loadrunner创建场景)
1.创建和运行监控场景
- 在tools菜单栏中点击如下创建
- 创建信息如下
- 出现如下提示,请点击切换到即可
- 创建成功后,到如下页面,先另存Scenario场景
- 将持续运行时间调至2分钟
- 切换到Run运行界面,选中脚本,点击start
- 运行页面如下
- 运行完成后如下
- 查看保存的场景文件res_01
6.LoadRunner Analysis(loadrunner生成报告)
1.打开Analysis分析器
- 如下所示在所有程序中打开
- 打开Analysis之后选择之前保存的res_01场景,文件类型要选择loadrunner results
- 打开之后如下显示
- 可以在graphs下查看各种图表报告
7.LoadRunner工作流程(脚本—运行—场景—报告)
1.脚本
- 退出loadrunner后,再次打开,页面如下
- 打开菜单栏File—Open打开之前录制的webtours_login脚本
- 继续打开菜单栏File—Save As进行另存
- 在C:\Performance_test目录下则存在两个脚本
2.场景
- 在所有程序中打开Controller
- 在如下页面选中webtours_login2将该脚本添加到场景中
- 在场景中也可以更换我们的脚本
- 在下方全局计划中配置详解
- 将我们配置的场景进行另存
- 指定生成结果的目录
- 将其保存在Performance_test目录下
- 运行场景
- 博主运行场景结果发现报错了,原因是博主之前是在公司进行测试,现在是在家里,所以脚本中的url地址是不对的,所以,这里博主需要重新录制webtours_login脚本了
- 录制完成,中间步骤省略
- 将webtours脚本添加到场景中后,配置全局计划后,进行另存
- 接着出错的步骤,开始运行场景
- 场景运行过程
- 运行完毕
- 查看场景运行结果文件夹res,因为博主新创建了脚本以及场景所以忘记将res结果保存到C:\Performance_test目录下,而是默认保存到了C:\Documents and Settings\Administrator\Local Settings\Temp\res目录下
3.报告
- 打开Analysis分析器
- 打开Controller生成的结果,分析出测试报告
- 报告详情如下
8.Action脚本与Controller场景策略对应关系
脚本中的action Controller中的运行策略
Vuser_init————>initialize(初始化)提供所有虚拟用户初始化时使用,只在初始化阶段执行,每个虚拟用户只执行一次
Action ————>Start Vuser:当Controller下命令开始执行脚本时,虚拟用户从Action的第一步开始运行脚本;Duration持续时间:可以设定虚拟用户如果执行Action中的所有脚本以后,(完成即结束丶继续重复执行)
Vuser_end ————>Stop Vuser:当controller下命令停止时,Vuser把未执行完的脚本执行完成后,开始执行Vuser_end中的脚本,只执行一次后将停止脚本的执行
案例1:如果性能测试只测试订票的过程响应时间,如果开发脚本?
分析:webtours订票系统,需要用户登录后才能进行订票,那么在整个操作中用户登录的过程以及退出的过程这些操作肯定不能放在Action中,登录只需要1次,所以将登录操作放到脚本中的Vuser_init中,将订票过程放在Action中,退出放在Vuser_end中
具体脚本录制演示:
- 点击Start Record进行录制,选择vuser_init
- 随即打开登录页面,输入用户名密码点击登录,登录成功后,切换成功action,进行订票操作
- 当订票操作完成后,切换到vuser_end这个action,点击Sign Off退出,最后停止脚本录制
- 查看录制的脚本,vuser_init完成登录操作丶action完成订票操作丶vuser_end则是退出操作
版权声明:本文标题:性能测试实战(一) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728243395a1150808.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论