天天看点

性能测试周期和LOADRunner初步介绍

性能测试步骤:

           1.分析需求

           2.编写性能测试计划

          3.编写脚本(优化、增加)

          4.在不同场景下执行脚本

          5.收集数据并提交给项目经理

          6.项目经理对中间件、代码框架、数据库进行优化

          7.复测

          8.当不达到需求是,再次提交复测数据给服务器人员

          9.进行硬件优化

LR的三大模块

   1.Virtual User Generator LR8(虚拟用户生成器)

   Create/Edit Scripts    LR11

          创建/编辑脚本

          LR进行操作的第一步,制造基本性能脚本

          性能测试前的准备

   2.Gontroller(控制器)

          运行负载测试

          在脚本写完的基础下,对其设置不同的场景吗,进行测试性能测试执行

   3.Analysis(分析)

          分析测试结果

          查看性能测试的结果数据,并且进行适当的分析

          预期结果和实际结果的对比,并查找问题根源

模块间的关系

        Virtual User Generator-Gontroller-Analysis

    创建脚本—运行测试(创建场景并执行脚本)—分析结果得到报告

录制流程

1.选择协议:web类型网址:协议HTTP/HTML、WebService协议

            FTP服务器:选择FTP

            邮箱服务器:协议选择IMAP(同步邮件电子邮箱)、POP3(接收电子邮件)、SMTP(发送电子邮件)

           ADO、OLEDB方法连接后台数据库的C/S客户端:协议选择MS SQL Servier、Oracle、Sybase、DB2

           以ODBC方法连接后台数据库的C/S客户端:协议选用ODBC

           没有后台数据库的C/S客户端:协议选择Socket

            B/S网络  客户端---服务器端(中间件,数据库,缓存) 客户端作用显示

            C/S单价  客户端(中间件,数据库,缓存)

            LR11支持浏览器: IE6 IE9 IE8自带火狐新版火狐谷歌

            要录制的程序:浏览器

           工作目录:浏览器所在目录

            录制的操作:初始 中间  结束      

2.录制前的设置

        应用程序类型:Internet—网页

                              Win32—Window下运行的程序

       要录制的路径:自动打开的软件路径和程序

       URL地址:自动连接的网站接口地址

       工作目录:浏览器/被测试软件的路径

       录制到操作:init——脚本开始

                           action——脚本的运行主体

                           end——脚本的结束 

3.脚本的调试

           1)回放:确认之前的脚本能够正常运行

          2)保存/另存为:保存当前脚本

          3)树:可以看到页面的截图

          4)设置事务:

                    事务函数:lr_start_transaction(“事务的名字”);

                    lr_end_transaction(“事务的名字”,”事务的状态”);

                    解释:事务状态:AUTO:自动,一般为默认

                                              PASS:不管事务怎样都算通过

                                              FALL:不管事务怎样都算不通过

                                              STOP:不管事务怎样都停止

                    注意:1》一个脚本起码要有一个事务,不然毫无意义

                          2》事务只能出现在Action部分

                          3》事务有起始必须有结束,且名字必须对应

                          4》事务开始必须在接口方法前

5、集合点:让虚拟用户在指定的地址集合,先到的人在这边进行等待,直到最后一个人到达在一起执行,通过集合点可以模拟一定意义上的用户并发。

                  设置集合点函数:lr rendezvous(“集合点的名字”);

                 注意:1》集合点必须在事务开始之前进行,从而保证事务在之后的性能测试中能并发一起执行。

                           2》设置集合点将增加对服务器的压力

                            3》只应在action部分出现

          集合点≈并发的前提 集合点相当于起跑线,但会受到cpu、网络、硬盘、缓存等等限制,不能真正意义上完全并发

6、思考时间

          思考时间函数:lr_think_time(秒);

          注意:LR初次使用对于思考时间是默认不参考,需要进行一定的设置更改。

          方法:Vuser-运行时设置(F4) -思考时间(按照设置要求,定值,给予百分比,范围值)

          思考时间越大,对服务器的压力会变向的越小。

7、迭代(往往和参数化一起进行)

          注意:只有Action部分才能进行迭代操作

          方法:Vuser—运行时设置(F4)—运行逻辑—迭代次数(修改)

          迭代越多对服务器的压力越大

8、参数化:LR中的参数化有两种以充实俗称文件形式的参数化,一种是数据库形式的参数化。

          一般参数化应用场景如下几种:

                    (1)真是模拟用户操作

                    (2)系统不允许同一个用户频繁的进行相同操作

                     (3)系统对数据的唯一性有要求

           设置参数化的步骤一般为:分析需要参数化的数据——设计数据分配方法——查找替换对象》

          1,文件参数化:1)依次点参数化中的Insert-  new-parameter命令点击new按钮并重命名为username

                                    2)点击creat table -edit with notepad在弹出文本输入参数化的值,每个值占据一行,保留一个空行,保存关闭                                                     

                                    3)回到脚本中找到参数化的用户名,选中,单击右键,选中 use existing parameter_username

                                    4)username被{}包围,这是LR中的规则

                                   5)点击惨淡VUSER -run- time setting-runlogic,设置迭代次数为3。这样才要脚本跑三次来验证是否正确

           2.多数列对应参数化

                                    1)新建参数PWD并选择file为usename.dat

                                 2)添加列,点击add colum按钮查看弹出框点击ok按钮

                                 3)添密码,点击edit with notepad 按钮,输入用户名对应的密码比如:name,mima

                                 4)回到脚本替换掉密码即可,方法于替换用户名相同

                                 2数据库参数化:使用数据库参数化首先要安装ODBC,数据库为MYsql的话下载Mysql ODBC安装到本地,配置即可

                                 1)在脚本里新建一个参数,名为usernamebd

                                 2)单击data wizar在弹出对话框中该选择specify sql statment manu 并单击下一步

                                 3)单击creat按钮,在弹出对话框中选中机器数据源后单击新建按钮

                                 4)选中系统数据源并单击下一步按钮

                                 5)选中mysql odbc x.xx driver 并单击下一步 

                         Data  source name 和 description可随意填写

                        TCP/IP server:是mysql 所在服务器的ip地址

                        Port:mysql的端口号

                        User:mysql的用户名

                        Password:mysql的账号密码如果空则不填

                        Database :可以链接的数据库列表

                        Test可以检测是否链接

                                6)完成上述填写并确定后在列表中看到新建的数据库源、               

                                7)双击参数化的值后,可以把此数据配置到Data wizard中

                              8)在sql中输入想要查询的sql语句完成书库的参数化

         3.参数化的设置:参数的时间或者一个随机值,可以在参数的对话框中parameter type 下拉列表选择

                                    File和table 类型:文本类型

                      data/time:可以在需要参数化日期的地方适用此类型

                     Group name :使用该虚拟用户所在的vuser group名称来替代参数化

                      Itertion number:使用脚本执行的当前次数来代替参数化

                     Load generator name :使用产生vusers 负载的机器名来代替参数化

                     Random number:使用他唯一随机数来代替参数化

                     Unique number:使用一个唯一的整数来代替参数化

                    Vuser id:使用虚拟用户的id来代替参数化

                      User defined functions: 扩展接口,可从用户发的dll中提取数据

                   XML:提供对XML格式数据的支持,可从XML中读取数据进行参数化

           4.参数化数据分配方式:分配值得方式,一共九种组合

                    1)select next row选择下一行策略

                     2)Sequential:顺序取行

                    3)Random:随机取行

                   4)Unique:使用唯一行

                    5)Update value on:更新值得策略

                      6)Each itertion:每次迭代后都要取新值

                    7)Each dccurrenle:只要发现该参数取过就重新取值

                   8)Once

                   9 )关联:关联其实就是动态的获取服务器的某些值,即使不动态的值,也完全可以用关联

                                    一般出现以下几种情况需要考虑是否使用关联

                                    1)服务器返回值中存在动态变化的值,一般就是类似session的无规则数据

                                    2)运行后没有报错,但也没有产生记录

                                    3)后续的操作要使用到之前的数据,例如:回帖操作。要知道之前发帖子的id才可以

                                    关联的函数:web_reg_save_param(“自定义名字“

                                                     ”lb=左边界值”

                                                    “Rb=右边界值”last)

                  关联分两种

                                    自动关联:ctrl+f8/录两次

                                    手动关联:web_reg_save_param(“名”,“LB”,”RB”LAST)(来源html)

                  举例:如果html标签如下

                                    <name=快递单号alue=wd12121212ld>

                                    <name=快递单号value=wd1125dsa2121212ld>

                  手动编写关联web_reg_save_param(“快递单号的关联“,

                                   ”LB=wd“

                                   “RB=LD”LAST);

                  将代码中的value={快递单号的关联}

                  自动关联的操作

                                    1)回访f5

                                    2)点击correation results

                                    3)Ctrl+f8

                                    4)选择需要关联的项点correlate

               10,检查点:

                                    前提:1)检查点一定要放在事物上面

                                    2)检查点检查的一定是系统的信息而不是自己输入的

                                    1)文本检查点:用于html页面检查是否用户指定的文字

                                                      //文本检查点,检查jixu

                                                      Web_reg_find(“text=jixu”,LAST);

                                    2)图片检查点用于在html页面检查是否有用户指定的图片

                                                      //图片检查点,检查退出按钮的图片src地址

                                    Web_image_check(“推出“,图片名称,随意”src=/webtours/images/signoff.gif”,//图片的src属-*性LAST)

二,设置场景并执行脚本

              1.选择场景

       手动场景(大多数选择的模式)

       设置场景-查看执行结果

       设置百分比-按照人数分配的百分比执行(往往只适合超大型项目)

       不是用百分比-按照虚拟用户数来执行(默认)

        自动场景(面向目标场景)

        设置执行结果-自动生成场景

             2.载入脚本:双击脚本,或者点击>,脚本在右侧显示即可

              3.设置场景

          1)确定场景组

           确定此次性能测试执行时用到的脚本的数量和运行方法

          2)全局计划

                 初始化:每一个虚拟用户的出事准备时间

              启动vuser:设置脚本的总计运行人数,以及启动时间

              持续时间:性能测试的执行时间

              完成前一直执行:遵循脚本的迭代设置(脚本在制作时的要求,迭代几次就运行几次)

              运行时间:根据运行时间来进行n次迭代,直到时间结束

              停止Vuser:停止脚本所用的时间和方法

             4集合点策咯

       前提:脚本必须先有集合点:lr_rendezvous(“名称“)

        在场景中,菜单栏scenario-rendezvous打开集合点设置界面

        设置:

              1)rendezvous:集合点的列表,可通过下面disabale rendezvous按钮启动或关闭

              2)scripts:当前脚本名

              3)Vusers:当前设置的并发数,可通过下方的disable vuser按钮来启动或者关闭虚拟用户

              4)Policy(集合点策咯):单击后进入策略设置对话框

                      策略的设置1》当所有用户的x%达到集合点时释放

                            2》当所用正在运行的用户的x%到达集合点时释放

                            3》当x个用户到达集合点时释放

                            4》超时设置:表示等待用户超过规定的,如果x秒内没有满足到达用户要求,则释放集合点

     5.IP欺骗

         对一般系统而言,是否使用IP欺骗并不会影响性能测试,只有在特殊要求下才会使用。

         如:1.某系统限制同一个ip用户在短时间内对系统进行恶意或者大量请求访问

           2.负载均衡策略根据ip规则分配

           前提:本地ip地址不能设置为‘自动获取’必须制定一个静态ip否则报错

添加步骤

1开始》程序》hp lr_tools_ip wizard

    选项:新增》选择保存文件,释放还原

2.选create new setting点击下一步

3.输入服务器的ip地址,或者留空也可以

4.点击add按钮,弹出添加ip的对话框

5.修改from ip为XXXXXXXX或者number to add直接加上,要模拟的人数 点击ok

6.点击完成

7.保存,点击save as 按钮,可以降本次文件保存为.ips文件,点击ok

8.进入LR场景设置contorller中,菜单选择Scenario-Enable ip spoofer完成

9.释放还原:

1.重复上述第一步,选择释放还原

2.移除,点击完成

3.重启计算机

  6.压力机(添加windows压力机)

    1.保证要添加的压力机安装了loadrunner agent(小卫星)

    2.添加的压力机与controller所在的机子要在同一个网段,并且要关闭所有的防火墙

    3.本地系统中的rpc服务要开启(控制面板——管理工具——服务中开启)

    4.之后的controller所在的人机器上登陆到压力机(远程连接),验证是否可以连通。单击windows系统中的开始——运行,在弹出对话框中输入//机器名,不报错即成功

    5.进入controller,依次点击scenario_load generators菜单项,默认会有一台压力机

    6.点击add

        Name:这里填写的是ip地址

        Platfrom:默认为机子系统

    7.点击ok点击connet,可以测试通不通过通过为rendy

    8.最后可以把压力机分到对应的脚本中

       7.监控服务器的设置(windows)

              1.右键点选系统资源图-添加度量-设置服务器监控的名称-最基本的监控

                         %processor time(cpu的占用率)

                        Avaliable mbytes(memory占用的内存)

        8.:执行:点击执行模块中的开始即可

三,分析结果

        方法1.运行后直接点击粉嫩系模块的图标

                2.保存执行文件,点击分析模块(analysis)导入文件

                3.直接点击分析图标

       添加新项1.右键点击报告——添加新项——windows资源图

                    2.新建右侧图框中点击右键设置颗粒度

四,分析

        1.实物摘要描述(transaction sammary)

            显示事物的通过数量和失败数量

            成功率=成功数/(成功数+失败数)

            失败率=(成功数+失败数)

        2.平均事物响应时间(average transaction response time)

                     显示所有场景中出现的事物在执行时的响应时间情况

                       随着时间的加长,系统处理事物的能力就会开始逐渐下降,总体的事物时间情况应该是主不惊醒变更的,如果出现大起大落的情况则为缺陷,说明该事物不稳定

           3.每秒点击次数(hist per second)

                      每秒发送服务器的请求数

                         这个数值反应出服务器承受压力的能力

         5吞吐率(throuhput)

                          服务器每秒处理事物的数据量

                           这个数据直接反映出服务器的处理能力

           5.每秒通过事物数(time suction per second)

                        反应出不同的事务在执行时竞争服务器资源的情况

五.初步判定

             1.当服务器处理能力远大于服务器受压情况时这种性能测试无意义

           2.当服务器处理能力小于 服务器受压情况时,能容忍一定事物数的报错

           3.随着压力增大。事物报错数在逐渐的增减

           4.在压力一定的情况下,查看失败率和需求做对比确认已验证此次性能测试通过与否

           一般性能测试结束基本通过以下内容判定

                 1.成功率

                 2.事物平均时间

                   3.并发用户数

 六。收集数据

            Average:事物的平均响应时间

             Min:事物最小响应时间

             Max:事物最大响应时间

            90%line:90%的响应时间

           Std.deviatipn:标准差

           Fail:错误的事物

            Pass:通过

           Error:错误

            Throuhput:吞吐量或者吞吐率

         聚合网站:标准接口文档

             vpn:设置新的连接或网络,免费网址,半小时换一次

                        连接到工作区,可以使用excle表格,列出用户数阶梯递增,数据的变化,做出表格,也可用load runner图

            (描述:本图表示服务器处理的平均响应时间,最佳性能随着并发用户数的增加,平均事务响应时间比较缓慢,本图可以看到,随着并发用户数的增加事务的响应时间不平缓)

七:编写性能测试报告

          报告概述:目的

          目标,概述,测试事件

          参考资料:相关性能个测试资料

           术语解释:性能测试(英文解释,概念解释)

          并发测试(英文解释,概念解释)

         LR(英文解释,概念解释)

         系统介绍:

         测试环境:(硬件环境和软件环境)

        测试指标:比如Average,Throughput、kb

        硬件指标:

                    %processor time:CPU使用率(平均低于75%,低于50%更佳)

                    system:processor queue

                    length:cpu队列中的线程数(每个处理器平均低于2)

                   memory:pages/sec:内存错误页数(平均低于20,低于15更佳)

                    physical disk-%disk time:磁盘使用率(平均低于50%)

                    SQL Server:Buffer Manager Buffer Cache HitRatio:(在缓冲区找到不需要从磁盘中读取的页的百分比,正常情况次比率超过90%,理想状态下接近99%)

                    测试工具或测试策略:测试工具、测试策略、测试数据、测试说明

                     测试数据手机:复制黏贴Excel

                    测试结果数据以及截图:复制黏贴Excel

          测试结论: