51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 12035|回复: 18
打印 上一主题 下一主题

[原创] 很多人问到的C/S架构的性能测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-2-24 15:20:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很多人关心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,从而导致最终脚本失败。
找到第一个出错的地方后,参数化,关联等手段都可以用上了,这里可能需要重复两次抓包过程,先行比较自己发送的报文是否有区别。

总体思路便是如此,写了一堆,也不知道对大家是否有帮助,对于此类问题,网络上的协助很难派上用场,事情还是要在现场才有可能得到解决啊。本来有意将这东西工具化,甚至产品化,但几个项目实施下来发现变数较多,特别是最后一个环节,完全依赖于测试工程师的自身能力,只好就此作罢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-2-24 17:20:56 | 只看该作者
不错,思路很清楚,不过Socket这个玩意儿,测试起来是比较麻烦的,首先来说用录制的方式,那么就等着看一堆乱码吧,如果直接编码的方式,那么要解决的问题也很多,发送什么数据,报文格式,业务逻辑,关联等(其实就等于将Client与Server的交互相关的逻辑在LR中再实现一遍。

难是难点,但是是可以做到的,只要多点耐心和细心,大家普遍可能想到的是录制,但是录制其实不能解决所有问题,很多时候自己定义脚本会更容易后期的操作。个人意见是可以尝试录制,而录制出来的脚本呢供参考。

另外使用Socket方式时,一定不要使用localhost本地环路来访问Server端,即使你的C-S都在一台机器上,也不能这样访问,一定要使用机器名或IP地址,LR才能侦测到C-S之间的交互数据,才能录制到脚本。

[ 本帖最后由 dennyqiang 于 2010-2-24 17:23 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-2-24 18:25:36 | 只看该作者
强哥把我说不清楚的给说了,我只能座板凳了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-3-11 16:08:43 | 只看该作者
请问录制加密的报文怎么办呀?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-3-11 21:27:50 | 只看该作者
楼上问的好!
如果客户端有加密处理,这个方法就行不通了,我就做过类似的项目

加密后录制下来的是一堆二进制数,前一步返回的数据和后一步发送的数据是有关系的,但是这关系是经过加密的,基本是猜不出来的(如果能让你猜出来,那他的加密就失败了,呵呵)

例如:
前一步返回的数据是100,client端程序对这100进行处理:100+9-7-2×15×77.......(呵呵,很复杂的加密算法),把处理完的结果作为后一步发送的数据,这样脚本就没法做了

为什么b/s结构的可以做呢?因为b/s结构可以进行“关联”,关联的前提是一模一样的数据,前面是100,后面还是100。这是因为b/s结构采取的是瘦客户端,浏览器不会做那么多处理(因为它太瘦了 呵呵!!)
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-3-11 23:26:40 | 只看该作者
加密的话你自己本地写个dll去处理就行了,b/s也可以做到本地计算加密的,你说的这个特例并不成立。别忘了JS
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-3-12 11:32:49 | 只看该作者
在不知道加密规则的情况下,自己怎么写? 根本做不到,就连开发人员也不知道加密规则,他们做的只是一个产品上的二次开发,底层加密规则和报文规范他们都不清楚的。

b/s结构的系统通常不加密至少我还没遇到b/s系统加密的(除非登陆时的密码,有时候加密一下),因为没必要嘛。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-3-12 13:05:37 | 只看该作者
太深奥了。。。学习学习。。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-5-31 11:12:38 | 只看该作者

对于C/S的性能问题

请问各位,我是个性能方面的菜鸟。用LR录制C/S的软件需要首先了解系统什么?我们是视频方面的软件。
比如,根本录制不了,我们准备采用写的方式,用一个简单的登录界面来说,录制时什么也没抓到。我需要向研发了解些什么?
登录用什么协议?登录界面、主界面控件用什么写的?数据流用什么协议封装?
这些是我想的,但是术语对不对,想的差都少都没有完全的思路,希望各位能给一个方向,小弟先在这谢谢了。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-8-20 16:39:43 | 只看该作者
楼主,我终于找到你了。我现在碰到这样的问题了,看了你的文章,抓了一些包,都看不懂怎么转化成脚本,我没有开发经验。很愁啊!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-8-24 11:10:17 | 只看该作者
将抓包获得的报文转成LR测试脚本(提示:选取合适的抓包工具,使得报文能被保存成文档格式;开发小工具,通过报文中的各个关键字抽取报文中Data Area中的部分作为buf 区的内容,根据IP字段,端口号等特征完成lrs_send,lrs_receive语句的填写.
这部分该怎么做啊,怎么将报文里的16进制转化成脚本里的buf部分
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-8-24 11:53:09 | 只看该作者
我现在要单单测试客户端的性能··我们的也是基于C/S的
而且所有数据都没有跟服务器交互 ,数据都是在本地的。
  举个例子吧:
   我们是PDA系统,业务是GIS的!我现在要知道我查询某个点,所花的时间 以及CPU,内存等使用情况
用什么工具好呢?LR可以吗?
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-8-24 13:44:28 | 只看该作者
可以用 ,数据都在本地,这测的没有什么意义吧
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2010-8-24 19:58:14 | 只看该作者
我们经理现在就要我这么做!我开始也给他说没什么意义,他说要把客户端的测试了
··才能跟服务端交互!
  我给你详细说说我们的 ,你看看 给我出出主意吧 谢谢

  我们现在那个PDA系统是架在手机上的,而我们的手机系统是windows mobile6.0的
  我们的文件都放在资源管理器里面的 数据库文件 和GIS地图都在里面 就连我的测试程序都是同目录的
  所有的数据都是从这里面拿到的 我现在需要测试从数据库文件读取数据到手机界面上的时间 以及手机的内存,CPU使用率

可以加我Q 527083993
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2010-8-25 08:33:19 | 只看该作者
太深奥了
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2011-9-7 23:09:17 | 只看该作者
如果大虾能写一个例子出来就好了,比如一条简单的数据插入,从头到尾的分析下.
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2022-11-3 14:42
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    17#
    发表于 2012-6-12 22:23:16 | 只看该作者
    好帖,最近正在愁这个呢,楼主为我理正了思路,看清了方向,继续研究WINSOCK之中
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2012-8-9 14:59:19 | 只看该作者
    第二遍拜读
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2013-5-28 11:20:06 | 只看该作者
    文字太多,没有脚本。。哎
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-6 12:39 , Processed in 0.080981 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表