一、虚拟用户迭代一次的时间对整个压力场景的影响。

1、虚拟用户迭代一次的时间大于等于压力场景的上行周期。

  此种情况,在压力场景的上行周期中,所有虚拟用户根据压力场景设置的策略全部依次运行。压力场景的上行周期过后,进入虚拟用户运行的稳定期,因为此时第一个运行的虚拟用户尚未退出迭代。当第一个运行的虚拟用户退出迭代时,即进入运动期。在运动期中,会不断的有虚拟用户上线和下线,此起彼伏,但当前运行的总虚拟用户数与总虚拟用户数接近,实际中会有所偏差,偏差的数量与压力场景步长的设定以及脚本的睡眠时间有关。当场景设置的步长为0时,运动期的时间等于压力场景的上行周期,因为当步长设置为0时,意味着虚拟用户一上线便下线,这与他们上行的速率相等。运动期后,便又进入稳定期,因为运动其第一个运行的虚拟用户尚未退出迭代。如果结束时间点落在稳定期时,虚拟用户不会立即停止迭代,而是等到下一次的运动期时才会陆续退出运行。如果结束时间点落在运动期,当有虚拟用户退出迭代时,便将该用户下线,不会再进入下一次的迭代,因为运动期时刻都有用户上线下线,所以虚拟用户会按照压力场景设置的退出策略全部退出迭代。

2、虚拟用户迭代一次的时间小于压力场景的上行周期。

  此种情况是没有稳定期的,虚拟用户的上线下线贯穿于整个压力测试始末。假设有100个虚拟用户,每秒钟上一个虚拟用户,如上图所示。在虚拟用户第一次迭代的时间里,前50个用户依次上线。在虚拟用户第二次迭代的时间里,第51个用户到第100个用户依次上线,同时,因为虚拟用户第一次迭代时间里的1到50个用户陆续下线和上线,所以当第51个用户上线时,第1个用户也上线,第2个用户下线;当第52个用户上线时,第2个用户上线,第3个用户下线。按照此种规律,在压力场景的上行周期中,后一次迭代时间里的虚拟用户上下线是前几次迭代时间里的虚拟用户的同步上下线。当进入压力场景的运行周期时,虚拟用户上下线是上行周期所有迭代时间里的虚拟用户的同步上下线,所以当进入运行周期时,第1个和第51个虚拟用户上线,同时因为第2个和第52个虚拟用户上一次迭代时间的结束,所以第2个和第52个虚拟用户下线。在下一秒时,第2个和第52个虚拟用户上线,第3个和第53个虚拟用户下线,以此类推。因为此种情况没有稳定期,时刻都有虚拟用户上线下线,所以当到达结束时间点时,虚拟用户会按照压力场景设置的退出策略全部退出迭代。值得注意的是,当进入压力场景的运行周期时,实际正在运行的虚拟用户总数接近与所有虚拟用户总数。他们的偏差与压力周期的上行周期与虚拟用户一次迭代的时间的商值有关,微观看来,在压力场景运行周期的某个时间点上,商值个数的虚拟用户正在上线,同时商值个数的虚拟用户正在下线,其余的虚拟用户正在执行迭代,当然这是理论状况,实际运行情况将会复杂得多,与脚本的逻辑和场景的设置有关系。

二、File参数化的设置。

  上图中,将参数选择策略设定为Unique、Each iteration、Continue in a cyclic manner,意思是每次迭代时从File中选择参数(同一迭代内的相同参数取值一样),每次都取不一样的参数,如果备选的参数全部选完,以循环的方式从头继续选择参数。我们更深入的挖掘一下,LoadRunner是如何做到上述策略的呢?做法是这样的,假设有10个虚拟用户,备选的参数有1000个,为了保证10个虚拟用户每次的取值不一样,将备选的1000个参数平均分为10等份,每一份分给一个虚拟用户。每个虚拟用户来取值时,都顺序取自己分得的Block,当达到Block的末尾时,再重头取值。注意,上述策略只有在迭代有效的情况下有效,即必须要选择下图中的第二个选项,否则当1000个参数被全部取光时,LoadRunner将会报错。

  有时我们需要将两个参数一一对应,例如每个用户都有自己的用户名,即UserID参数和TrueName参数是一一对应的,如何实现参数的一一对应呢?做法是这样的,将这两个参数的数据源记录到一个参数表中,并将选择参数的策略设置为一样。

注意,上图中的记事本的最后一行必须为空行,否则LoadRunner会报“Missing Line”的异常。

三、场景设置。

1、步长的设置:

步长的设置会影响虚拟用户一次迭代中的Action之间的等待时间和该虚拟用户上次迭代和下次迭代的等待时间,不同虚拟用户之间的迭代等待时间是不受影响的。

2、压力场景上行策略设置:

上图设置的策略是每隔3秒上10个用户,不是3秒内陆续上10个用户。

3、其他设置。

停用日志:

设置思考时间:

错误处理策略和虚拟用户的运行策略:

网络速度控制策略:

LoadRunner压力测试心得总结的更多相关文章

  1. SoupUI 结合loadrunner压力测试

    SoupUI 结合loadrunner压力测试 上一篇介绍了SoupUI接口测试,因为工作需要,需要在loadrunner进行websocket的压力测试,当然,SoupUI本身也是可以做性能测试的 ...

  2. LoadRunner压力测试实例

    1 LoadRunner 概要介绍... 2 .项目背景介绍... 5 .使用LoadRunner进行负载/ 实施测试... 16 6.1 Memory相关... 22 6.2 Processor相关 ...

  3. LoadRunner压力测试实际运用的使用方法

    LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具.通过以模拟上 千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个 企业架构进行测试. 方 ...

  4. 韦大仙--LoadRunner压力测试:详细操作流程

    一. 录制脚本 1.安装完毕后,创建脚本: 点击OK之后,会弹出网址,之后创建Action,每进一个页面添加一个Action,录制结束后,终止录制. 二. 修改脚本 1.脚本参数化 将登录的用户名密码 ...

  5. LoadRunner 压力测试使用基础步骤

    一.新建脚本 二.新建脚本-选择协议,这里选择Web (HTTP/HTML) 三.开始录制(指定程序与URL) 四.场景设计(设计虚拟用户访问场景) 五.运行情况(可以看到运行结果) 六.分析报告(总 ...

  6. 【转】LoadRunner压力测试:测试报告结果分析

    见:https://blog.csdn.net/haoui123/article/details/62036723

  7. Nginx使用webbench进行压力测试

    在运维工作中,压力测试是一项非常重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验. 但是,在压力测试中存在一个共性,那就是压力测试的 ...

  8. Nginx下用webbench进行压力测试

    在运维工作中,压力测试是一项非常重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验. 但是,在压力测试中存在一个共性,那就是压力测试的 ...

  9. Nginx使用webbench进行压力测试(转载)

    在运维工作中,压力测试是一项非常重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验. 但是,在压力测试中存在一个共性,那就是压力测试的 ...

随机推荐

  1. 重要:Linux下IDE--KDevelop (用来跟踪调试C++) Ubuntu下QT4开发环境的搭建及初体验

    Linux下安装Qt4有两大问题,一是环境变量,二是IDE(集成开发环境).安装Qt4也有两种方法,一种是apt-get,一种是下载源码包,而后 一种方法已经人证实是最有可能不好使的方法.所以我最终采 ...

  2. python笔记-列表和元组

    列表和元组: -可以将列表和元组当成普通的数组 -列表和元组可以保存任意类型的python对象 -通过从0开始的数字索引访问元素 -列表和元组可以存储不同类型的对象 列表和元组的区别: -列表元素使用 ...

  3. USES_CONVERSION的使用和注意

    USES_CONVERSION是用来转换类型的,比如我们很常见的问题: 在Socket编程时候,我们的IP地址从界面上输进去一般都使用CString类型的,可是在SOCKADDR_IN中的inet_a ...

  4. C++多态有哪几种方式?

    C++多态方式: (1)静态多态(重载,模板) 是在编译的时候,就确定调用函数的类型. (2)动态多态(覆盖,虚函数实现) 在运行的时候,才确定调用的是哪个函数,动态绑定.运行基类指针指向派生类的对象 ...

  5. assert 函数

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( i ...

  6. 简单认识DataSet与DataTable

    DataSet 是放在内存中的,对DataSet中数据的修改并不直接反应到数据库,要通过 DataAdapter 的 Update 方法更新回数据库; DataSet相当你用的数据库: DataTab ...

  7. Python 实int型和list相互转换 现把float型列表转换为int型列表 把列表中的数字由float转换为int型

    第一种方法:使用map方法 >>> list = [, ] #带有float型的列表 >>> int_list = map(int,list) #使用map转换 & ...

  8. vue组件调用(全局调用和局部调用)

    当用vue-cli创建一个项目后, 创建项目的方法: https://www.cnblogs.com/fps2tao/p/9376847.html 编写了组件怎么,在其他组件中调用了? 组件listB ...

  9. CGROUP相关知识

    安装 CentOS 6 yum install libcgroup CentOS 7 yum install libcgroup-tools 使用 默认情况下有几个控制器可以进行限制,分别是 cpus ...

  10. Vmware linux 无法上网

    流程如下: 1)点击 VM->Settings Hardware选项卡下面 2)点击Network Adapter 设置如下图所示,首先我们在虚拟机中将网络配置设置成NAT, 3.进入Windo ...