很多人关心LR在C/S架构上如何实施性能测试,我想根本原因在于两个方面,一是很多时候脚本无法录制,即LR无法成功调用被测的应用程序,二是测试脚本即使录制下来,可读性不强,往往不能运行通过,调试时无从下手,像音视频、电子地图类的测试差不多也是这个问题。

  根据我以往的项目经验,LR是可以做到的,因为它提供了Windows Sockets协议,解决方案实施起来简单但需要足够的细心以及一定的判断力、想象力,可参考如下步骤进行:

  1、通过抓包工具捕捉客户端与服务器之间的所有通讯。

  关键点:IP过滤,端口过滤,报文类型过滤

  目的:弄清楚业务操作过程中,客户端向服务器提交的请求原型,以及服务器对我们请求所做的正确响应

  2、将过滤后的报文整理成测试脚本。

  关键点:Socket的建立与关闭,send buf的整理,receive buf的整理

  目的:将抓包获得的报文转成LR测试脚本(提示:选取合适的抓包工具,使得报文能被保存成文档格式;开发小工具,通过报文中的各个关键字抽取报文中 Data Area中的部分作为buf 区的内容,根据IP字段,端口号等特征完成lrs_send,lrs_receive语句的填写。这部分看上去挺难,但只要对报文做好分析,把握规律,编程的事随便拉个开发都可以轻松搞定)

  3、调试脚本

  关键点:定位错误,添加校验点

  目的:使脚本真正可以拿来进行压力测试

  这是最难的一个环节,耐心、细心、判断力都体现在此处。每个人处理问题的方式的不同,我只能提供自己的一点经验。

  将脚本RUN-TIME SETTINGS中的扩展日志全部打上钩,并且将脚本拿到controller中单用户执行,注意设置好日志路径。

  脚本出错后,用EDIT PLUS或其他的文本工具打开log,找到出错行,然后向上逐一对比服务器返回的数据与录制过程中抓包获得的报文。

  在这里,我用了一个小技巧,生成buf内容时,使buf的编号与该buf在抓包获得的报文中编号保持一致,比较起来很方便。

  如果服务器返回的buf与抓包时的原始数据一致,自然表示该步骤回放成功,如果不一样,则需要具体情况具体对待。就我的经验来说,往往是因为数据唯一性问题或者是关联的问题造成某一步骤返回的BUF为0或-1,从而导致最终脚本失败。

  找到第一个出错的地方后,参数化,关联等手段都可以用上了,这里可能需要重复两次抓包过程,先行比较自己发送的报文是否有区别。

  总体思路便是如此,写了一堆,也不知道对大家是否有帮助,对于此类问题,网络上的协助很难派上用场,事情还是要在现场才有可能得到解决啊。本来有意将这东西工具化,甚至产品化,但几个项目实施下来发现变数较多,特别是最后一个环节,完全依赖于测试工程师的自身能力,只好就此作罢。(以上言论仅代表作者的个人观点,不代表51Testing观点)

版权声明:本文为51Testing论坛会员tttrrryyy原创。

原帖地址:http://bbs.51testing.com/thread-182981-1-2.html

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

C/S架构的性能测试的更多相关文章

  1. LVS+Keepalived实现DBProxy的高可用

    背景 在上一篇文章美团点评DBProxy读写分离使用说明实现了读写分离,但在最后提了二个问题:一是代理不管MySQL主从的复制状态,二是DBProxy本身是一个单点的存在.对于第一个可以通过自己定义的 ...

  2. 活动回顾|ShardingSphere X openGauss,将会产生怎样的化学反应?

    "ShardingSphere 作为 openGauss 生态的开源分布式数据库解决方案,将持续助力于 openGauss,满足千行百业广大客户分布式场景需求." 5月29日,由  ...

  3. 性能测试知多少---系统架构分析 转自https://yq.aliyun.com/articles/35147?spm=5176.100239.blogcont24251.8.lS96At

    摘要: 有些事儿一旦放一放就难再拾起来,突然发现<性能测试知多少>这个系列两月没更新,关键时我都不知道啥时候放下的,总容易被各种技术所吸引走,如饥似渴的想学更多的东西,这几天一直有朋友问我 ...

  4. 性能测试day02_后端网络协议架构

    接着第一天的尾,继续来学习性能测试,上一次说到性能要大致经历哪些阶段,那么我们也来看下行业的做法: 行业有两种做法,一个是TPC,另一个是SPEC: TPC:指定业务类型,获得该指定业务的性能指标,也 ...

  5. DevOps架构下如何进行微服务性能测试?

    一. 微服务架构下的性能测试挑战 微服务与DevOps 微服务是实现DevOps的重要架构 微服务3S原则 DevOps核心点 微服务架构下的业务特点 亿级用户的平台 单服务业务随时扩容 服务之间存在 ...

  6. LAMP架构性能测试+php优化

     性能测试:1. 首先查看一下服务器的硬件性能free  -m  ---->查看一下内存的情况lscpu或者cat  /proc/cpuinfo     ------à查看一下cpu的情况2.  ...

  7. Nginx网络架构实战学习笔记(六):服务器集群搭建、集群性能测试

    文章目录 服务器集群搭建 Nginx---->php-fpm之间的优化 302机器 202机器 压力测试 搭建memcached.mysql(数据准备) 今晚就动手-.- 集群性能测试 服务器集 ...

  8. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  9. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. Hive 安装

    在安装Hive时,一定要在该机器上添加了hadoop服务. 下载并解压文件 tar zxvf apache-hive-3.1.1-bin.tar.gz mv apache-hive-3.1.1 /op ...

  2. mysql8.0关闭log-bin功能

    一.查看log-bin是否开启: mysql> show variables like 'log-bin'; 二.关闭log-bin: 在配置文件中的 [mysqld] 配置节中增加 skip- ...

  3. MYSQL5.7 sql_mode=only_full_group_by

    错误提示: .... which is not functionally dependent on columns in GROUP BY clause; this is incompatible w ...

  4. PHP OOP面向对象部分方法归总(代码实例子)

    <?php//对象名存在栈内存中,数据存在堆内存中class leyangjun{    var $name;  //定义变量    var $age;    var $sex;         ...

  5. GitHub和git和repo的使用

    1. GitHub的使用 https://github.com/maogefff/GitHub-git-repo 2. git的使用 https://github.com/maogefff/GitHu ...

  6. NetSugar.Cap与CAP功能比对

    前言 首先非常感谢开源社区,在各位作者无私得奉献下,我才有幸接触CAP.在拜读源码和理解设计原理过程中,发现CAP的源码是一个非常值得我们学习的代码.本人代码的基本框架采用简单的DDD,在练习Demo ...

  7. Java面试题之数据库三范式是什么?

    什么是范式? 简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式.在关系型数据库中这些规范就可以称 ...

  8. js 判断浏览器是否64位

    js判断是否64位 浏览器 navigator.userAgent.match(/x64/i);

  9. mybatis 排坑记录

    1. mapper xml resultMap 中定义 property 时不能出现空格 否则会出现反射错误,找不到 do 对应的 set 方法

  10. sprintf和sscanf

    sprintf 一个可以将输入打印到字符串的函数,用法与printf差不多 可以参考这篇文章: http://blog.csdn.net/masibuaa/article/details/563488 ...