·什么时候需要做关联?
一般来说,在脚本运行出错的时候,我们就可能需要进行关联处理。
·脚本出错分为两种情况:
·直接回放出错(失败)。通常来说,如果录制成功,回放失败,排除数据的唯一性约束之后,那就必然是需要做关联的。

·参数化之后出错。这种时候排除数据本身的功能错误以外,通常也是要做关联处理的。

·什么是关联?
一般来说,关联是用来解决请求之间的依赖关系的。

什么叫请求之间的依赖关系呢?
所谓依赖,是指两个请求之间有数据的交互。如果请求B中所发送的数据,是来源于请求A所响应的数据。

脚本和真实的客户端有什么差异呢?
客户端是可以运行客户端脚本,是可以去实现一些业务逻辑的。可以去接收和处理服务器响应的数据并且封装到请求中。
性能脚本在没有做更多的处理之前(录制or抓包手写),是没有任何逻辑处理能力。
所谓的关联其实就是要去模拟客户端脚本的某些数据处理能力。

·关联的数据的特征。
一般来说,需要做关联处理的数据的特征有三个:
·数据一定是来源于服务器的响应。
·数据一定要在后续的请求中被用到。
·数据一定是动态变化。

·关联的方式:
在LR中,关联的方式有两大类三小类
·自动关联:
·录制关联:功能正确,但是无用。
·回放关联:采取的是对比法。即自动对比录制和回放的数据。
前提:最后一次回放必须是错误的。
建议:最好只是用来辅助定位数据,最终要解决关联问题还是要了解业务。

·手动关联:根据对依赖的理解,对关联的理解来实现关联操作。

·手动关联详解:
第一步:找到出错的请求。
·原理:通常来说,只有出错的请求才需要做关联处理。
·理解:出错并不是指脚本运行出现error,而是指脚本运行没有达到预期的功能目的。
·技巧:一般来说,重点关心使用post方法的请求。

第二步:找出可疑数据。
·原理:通常来说,脚本出错的原因都是因为脚本中所封装的数据有误导致的。
·了解:通常来说,请求中携带数据的地方有三个:
·URL地址参数:
·请求头:
·请求主体:

·技巧:对于可疑数据的甄别,我们一般建议从三个角度出发。
·业务角度:
·键的名称:
·值:一般来说,用来关联的数据都具备以下特征:
·随机
·长度比较长。

第三步:找到数据的来源。
·原理:录制的脚本的数据一定是来源于录制过程中服务器的响应数据。
·了解:在LR中,是有录制录制,叫generation log
在generation log中,日志是按时间先后,从上到下,分块排列的。

·注意事项:
·只要查找可疑数据本身
·从上向下,只要查找一次(位于cookie除外)。
找到之后,向上查找******,确认数据是否是服务器响应,如果是,则根据块的ID找到对应的请求头,获取请求路径。

第四步:建立关联。
·原理:所谓的建立关联,其实就是要去通过一定的方式保存服务器响应的关联数据。

·操作:不同工具提供的关联方式都有所区别。
LR中的一种半自动方式如下:
·切换视图模式到tree模式。
·确定是在recording snapshot和http view模式下。
从上向下,依次点击脚本主请求,然后在第三步的子请求下找可疑数据,直到第一次找到为止。
找到之后,选中可疑数据(注意不要选中其它字符),右键--create paramter。

双击脚本树中生成的关联函数,进行必要的处理。
·修改参数名,使其有意义。
·如果LB(左边界)or RB(右边界)中有乱码,则需要做如下处理:
·左边界中出现乱码,则将乱码及乱码左边的字符串去除。
·右边界中出现乱码,则将乱码及乱码右边的字符串去除。

第五步:替换可疑数据。
·原理:要将静态的关联数据,替换为动态关联所获取的数据。
·操作:
CTRL+H,
将可以数据(只有值)替换为对应的参数的调用字符串。
一般来说,LR中的参数调用字符串为:{参数名}

·关联操作到底做了哪些事情?
·找到有依赖关系的请求
通常来说,和性能测试工具没有关系。

·建议关联:建立关联通常来说就是性能测试工具要完成的事情。
分为两部分:
·保存:因为服务器返回数据的逻辑是不会改变。
即返回数据的位置、数据的格式都不会改变,变化仅仅是数据本身。
不同的性能测试工具提供的方法不一样。

·调用:通过性能测试工具所提供的方法去调用所保存的数据。

作业:
1、phpwind论坛的发帖
2、discuz论坛的发帖
3、LR自带网站的登录
4、LR自带网站的订票(要求能够实现出发和目的地的参数化)。

性能测试基础---LR关联的更多相关文章

  1. 性能测试基础---LR关联2

    ·LR中的关联函数详解.在LR中,用于关联的函数一般有以下四个:web_reg_save_param 是通过字符串查找的方式来查找获取数据.web_reg_save_param_ex 是通过字符串查找 ...

  2. 性能测试基础---LR场景设置

    ·场景设置. 性能测试场景依托于性能测试脚本,但是又独立于脚本. 所谓场景(scenario),就是用来模拟多用户运行性能测试脚本的情形,是来源于我们对于业务场景的分析的. 性能测试对于业务场景的分析 ...

  3. 性能测试基础---LR参数化相关

    性能测试脚本的增强:·参数化·关联·事务·检查点·思考时间·集合点 ·参数化:模拟不同用户的不同请求. ·为什么要做参数化? ·功能:通常来说,系统的某些业务数据具有唯一性的要求. ·性能:一般来说, ...

  4. 性能测试基础---LR运行设置

    ·LR的运行时设置(Runtime settings): ·Run Logic:该选项是用来控制脚本的真正的运行逻辑. ·该选项会把脚本中的函数分别放入三个运行模块中:Init.Run.End ·默认 ...

  5. 对LR关联的一些理解

    从接触LR关联的迷茫,到现在略有感悟,小记期间的一些理解. 一开始认识关联是在LR自带学习例子,需要关联session,也知道了自动关联,手动关联以及边录制边关联. 在使用关联的过程中,也学习了web ...

  6. 性能测试基础---测试流程,LR安装

    ·性能测试流程详解: 一般来说,性能测试通常可以分为以下过程: ·前期分析.测试计划.测试方案.测试环境的搭建.测试数据的准备.测试脚本的开发.测试场景的设计.测试场景的实现和执行.资源的监控.分析结 ...

  7. 性能测试基础---jmeter参数化、关联、事物、检查的等

    ·Jmeter脚本增强·性能测试的脚本增强技术:参数化.关联.事务.检查点.思考时间和集合点. ·参数化:在Jmeter中,实现参数化的方式很多.本质上来说,参数化的实现方式有两种:·文件方式:一般建 ...

  8. 性能测试基础-开门篇3(LR常用函数介绍)

    LR常用的函数,协议不一样函数会不一样,这里简单的介绍下HTTP\WEBSERVICE\SOCKET协议常用函数: HTTP: web_set_max_html_param_len("102 ...

  9. LoadRunner性能测试基础知识问答

    Q1:什么是负载测试?什么是性能测试? A1:负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试,例如,访问一个页面的响应时间规定不超 ...

随机推荐

  1. Elasticsearch运维经验总结

    Elasticsearch运维经验总结 2018年12月10日 16:38:41 运小白 阅读数 3811   版本说明:5.6.4(要严格注意ES及其插件.第三方工具的版本匹配关系) 系统负载:(日 ...

  2. Net Core的流控服务

    统一流控服务开源:基于.Net Core的流控服务   先前有一篇博文,梳理了流控服务的场景.业界做法和常用算法 统一流控服务开源-1:场景&业界做法&算法篇 最近完成了流控服务的开发 ...

  3. Calculation 2

    Calculation 2 Given a positive integer N, your task is to calculate the sum of the positive integers ...

  4. 【题解】Sonya and Matrix Beauty [Codeforces1080E]

    [题解]Sonya and Matrix Beauty [Codeforces1080E] 传送门:\(Sonya\) \(and\) \(Matrix\) \(Beauty\) \([CF1080E ...

  5. Java学习:Set接口与HashSet集合存储数据的结构(哈希表)

    Set接口 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许存储重复的元素 没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.u ...

  6. SQL系列(十)—— 联结(join)

    在数据库设计中,基本上都是根实体ER关系和范式设计多张表.这样更能设计出更合理.紧凑的表结构,提高有效数据存储,数据的管理维护更简便,也提高了库表的伸缩性. 但是事物总是平衡的,在很多场景中单张表的数 ...

  7. Flask-SQLAlchemy 与 SQL Alchemy 的区别、联系

    目录 一.SQL Alchemy 1. SQL Alchemy 基本操作 1.1 连接数据库 1.2 声明映射(建立数据库表的模型) 1.3 创建映射类的实例 1.4 创建会话 1.5 单表的增删改查 ...

  8. IntelliJ IDEA启动一个普通的java web项目的配置

    文:朱季谦 这是我很久以前刚开始用IntelliJ IDEA时记录的笔记,正好赶上最近离职了,可以有比较多的时间把以前的记录整理一下,可以让刚接触到IntelliJ IDEA的童鞋学习如何在Intel ...

  9. CLR学习之初识CLR

    一.什么是CLR? CLR即公共语言运行时(Common Language Runtime,简称CRL),就是微软为.net产品构建的运行环境,与java的JVM类似,通俗的讲就是.net虚拟机.CL ...

  10. 使用docker部署titpetric/netdata

    netdata 是常用的Linux系统性能实时监控面板 官方docker netdata/netdata部署 docker run -d --name=netdata \ -p 19999:19999 ...