zoukankan      html  css  js  c++  java
  • C/S架构的性能测试

    很多人关心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

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

  • 相关阅读:
    单体架构还是微服务架构,这是个问题?
    ASP.NET 5中的ASP.NET Bundles跑到哪里去了?
    如何在ASP.NET MVC和EF中使用AngularJS
    在VS 2015中边调试边分析性能
    C#中的Infinity有个小坑
    利用Roslyn构建一个简单的C#交互脚本引擎
    移动端跨平台开发干货分享
    在ASP.NET 5中读取配置文件
    5个让你的SaaS应用大卖的技巧
    大数据技术之_19_Spark学习_08_Spark 机器学习_01_机器学习概述 + 机器学习的相关概念 + 算法常用指标
  • 原文地址:https://www.cnblogs.com/lc23/p/7508043.html
Copyright © 2011-2022 走看看