找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2275|回复: 0
打印 上一主题 下一主题
收起左侧

折腾Loadrunner

[复制链接]
跳转到指定楼层
楼主
ID:127229 发表于 2016-6-19 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自从N前年手贱写过一个LoadrunnerC插件后,这几年经常有莫名其妙的Loadrunner测试事情找上我,耽误咱自已的事情不说,后面还被某领导当众批评,说我这玩意是瞎搞,咱的形象分都快减成负数了。上周本来在自已的项目里加班加的好好的,跟兄弟们突击了一个星期,准备周一正式上线发射,结果周五晚上被领导一个电话抓来北京接手某个土人的Loadrunner测试工作,申辩无效,必须得来。话说咱对Loadrunner理解真的不深,对于这活,我属于非专业选手,偶尔客串一把,结果还套牢成终身制了,这TMD就是给自已找麻烦啊。唉,做人咋就不能像仔波一样低调哩。先深刻自我检讨十分钟。。。。
搞了几天,从头到尾又把Loadrunner折腾了一遍,折腾的火蹭蹭直冒啊,踩的坑是一个接一个,谁让咱老爱不走寻常路呢,一路很受伤,现总结要点如下:


1.      LDR 11 新出来的4个G,可以跑在window2008server\window7上,之前的版本(7.5、8.1、9.5)都不行,只能跑在Windows2003Server上,注意9.5可以在windows2008Server装起来,在脚本开发环境运行没问题,一打压力,各种奇怪的错误。
2.      现在网上有个很牛的LDR破解,65535个授权,各版本通用,别问我在哪,我不知道,我从来不用盗版软件的。
3.      LDR的file字典有记录数上限,实测开50个线程大该就20多万行记录就不行了,报些奇怪的错误(不要问我是什么错误,你看了就明白了,因为看不懂。。。),然后自以为很牛,写了一个读大数据的C插件(又是C插件),加载150M的文件,开10个线程就不正常了,开5个线程正常,似乎LDR的运行线程有一些奇诡的限制,而且是总数控制,具体情况不清楚,以后绕开就行了,想死的自个跳进去慢慢研究。
4.      LDR的日志可以关闭,开关对性能影响巨大
5.      LDR的日志有严重漏消息的情况,别问我咋漏的,我也没整明白,反正后面又写了一个向OutputDebugString输出的C插件(死性不改),确定有这个问题
6.      LDR的压力运行界面上,如果运行次数太少,比如小于20,会在Passed里,直接忽略掉这几个,LDR各种坑啊。
7.      LDR的字典有几种模式,顺序、唯一、随机等几种。看上面的说明就知道了,不知道的就打日志出来看。只有一个建议,不要用他们自已的日志,漏的乱七八糟。
8.      要测试1000W行记录,每条记录有关键字段不一样,可以设置unique number 型字典
BlockSize*threadnum=1000W就可以了,后面还有两个参数相关的设置,over value注意要设成 abort user,表示说让测试线程搞完就睡了,不再傻加班。上面一个参数设成”each occurrent” 表示全局所有线程共用。
9.      LDR有一个属性列表,可以把脚本一些常用的参数设置在里面,比如中间件地址,端口之类的,比较好用,可以少改脚本或不改脚本
10.  LDR用了几个开源库,如ssl的那个库,可能跟应用系统有冲突,导致lr_loaddll加载不成功,把应用目录下的DLL覆盖到LDR目录下的同名DLL。
11.  LDR跑在16Cpu的机器上,取一次字典空转,性能在25W/秒左右。
12.  LDR的C Vuser脚本,变量定义必须在语句的前面,是最早的C语言语法,这个地方小郁闷了一会,我是习惯了写C++风格的,所用即申明。解决方案就是加{},把变量的生命周期限制住。
13.  UEStuio在打开1.5G大文件后,把 , 改成”,” ,选保存,然后发现有些地方自动把第一个引号变成别的值了,锤子,不带这样玩人的。然后又牛B轰轰的用C写了一个转换程序,发现fgets和fputs会导致同样问题,最后用二进制自解析文件格式解决了。莫名你个奇妙啊。后面还发现feof,在判断文件里有0x1a时,会认为是文件终止了,可是我后面还有很多很多数据,这是咋地说的。

在深圳没呆两天,又一被召去京城干了一星期这种破活,补充续集如下:
14.LDR的字典支持多种模式,比如文件和ODBC,如果是文件模式,可以配多个字段。不同的字典可以指到同一个字典文件,只要把字段区别开就行了。LDR的文件字典分隔符可以是Tab或空格等,可设置

15.LDR有一个百分比模式,可以把多个测试案例配成不同的比例,需要注意的是,如果有3个以上的测试脚本,在调脚本时,改好一个另两个会自动重新分配,通常这不是我们想要的。试了很多次,我的解决方案是在列表中排个序,从第一个的百分比改起,就不会有这问题,很奇怪的使用方式。

16.有一堆机器要一起做压力时,只要设一台为主机,其它机器在主里面添加上去就可以了,测试案例和字典会自动同步过去。需要注意的是,如果在脚本里load了其它的DLL,则需要把这些DLL放到测试从机的path路径能访问到地方,要是省事,就写个批处理,全部复制到从机的windows\system32下。LDR有个好用的技巧,如果有多台机器,可以写在notepad,然后全选复制,在LDR加机器的地方,可以直接复制,一次性添加,我用这个功能,一次性加了20台Loadrunner测试机出来。这个功能绝对是亮点。LDR真是个奇怪的软件,有些地方做的很细致,有些地方很粗暴。
192.168.61.200
192.168.61.203
192.168.61.204
192.168.61.205
192.168.61.206
192.168.61.207
192.168.61.208
192.168.61.209
   17.还有一个小技巧可以记一下。如果要把一个测试案例分成20个机器一起压,字典又不一样,如何快速创建测试案例?我的方法是写一个批处理,一次性把原来的测试案例复制出20份,然把里面几个关键文件改名就行了(*.ci;*.usr;*.prm)。这种方式改完以后,重新开发,会发现字典表为空,这时,随便按个空格,再保存一下,再看就有字典了,有点奇怪,但是好用,省事。

18.多机测试时,负载是按机器平均分配的,无法跟据机器的配置自动选择,只能跑起来以后手工加,这点要注意一下。


完了,就这些。折腾了几天,就研究出这点东东。最郁闷的是全程上不了网,连MSDN都没装,硬是靠穷举法解决了这一堆问题。

前面几天天天加班到晚上10点才出来吃饭,冒雪在北京的小胡同里找吃食,加班加点,忍饥挨饿也就罢了,关键是出来还找不到吃饭地,找不到了吃饭地也就罢了,关键是零星还开着的店都是农民工餐厅,是农民工餐厅也就罢了,关键是吃的东西都感觉是地沟油做的,是地沟油也就罢了,关键各着难吃,闻着味饱了,饱了也就罢了,关键是回到宾馆发现还是很饿,外面又在下雪,只好把前一天准备扔的一个超难吃的饼干再从垃圾袋里翻出来嚼嚼,整个一天就这样的悲剧结束了

来北京第二天夜里便开始下雪,早晨起来一看,雪还没停,整个世界已经被银妆素裹。话说北京下雪的早晨真很有味道,特别是街道旁古老庄严的建筑的仕立在满天风雪里,静默无语,有一种独特的沧桑美感。这时突然某个高墙大院的朱红大门被缓慢推开,漏出一道小缝,隐约可见院内的奇花异草,一名黄裳少妇牵着一个小脸冻的红扑扑的可爱小丫头,从门内出来,见着我一楞,然后低头浅浅一笑:”老爷,您可算回来了,咱们妍宝宝可一直在门口等着您的稻香村哩。哈哈





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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