测试工具loadrunner扩展开发的一点感想
最近在应用VC6,大量采用win32 api扩展Loadrunner8.0/8.2的一些外围功能,做到自动调节面向资源消耗目标的合适(临界)并发数,碰到了几个相当棘手问题。如
(1) 在loadrunner controller design 界面上编程实现更改并发用户数
(2) 确保安全停止在运行的loadrunner但不破坏已存在结果文件,如res.lrr等等
由于没有loadrunner源代码以及很detail的介绍Loadrunner内部结构的资料,为了突破这些点,耗费了相当的力气。
如果我们换成对JMeter的外围扩展内,在一堆结构清晰的代码面前,突破这些功能难度可能陡降:)
经过这些天的尝试,对扩展黑盒工具的难度有一个更加清晰的认知,实践才知道水有多深:)
下面简单介绍下如何做到编程更改loadrunner并发数的几个思路
1)EnumWindows/GetWindowText 结合spy++,硬编码检索到窗口层次关系,获取classname=GridControl、windows caption=GridClass的控件,然后利用grid控件的行、列改写数据。
可是classname=GridControl仅仅是注册窗口时的一个友好名字,并非真正实现类。这个实现这个控件的类是什么呢? 这下卡壳了。
从安全工程师哪边拿到LookingGlass.exe、FABERTOYS(进程管理).EXE等工具,企图嗅探出ocx但未果。
其他难度、实现成本比较高、非常笨拙操控grid的方式还有: 利用IDAPro动态调试或者进程注入修改对应内存内容,这个有时间再琢磨下。
2)修改loadrunner 场景设计文件.lrs的GroupChief内容
由于loadrunner controller designed 界面大量选项,每一个选项可能都对loadrunner结果产生敏感影响。为了弄清楚每一个选项对应文件内容,很土也很管用的方法
一次只更改一个,然后对比变化,最后跟踪发现groupchief 段才是loadrunner 并发数关键所在。
lrs文件格式不是Ini 格式,是mercury自有格式,我们要做的事情就是fgets逐行读取,然后填充入自定义的数据结构(偶采用了链表)。
增加、删除修改并发数就是减少ChiefSettings所在的段,最后用fwrite将数据结构回填。
最后第二个方法成功实现需求。
不过综合权衡下,如果loadrunner升级lrs数据结构,第二种方法是相当脆弱的。
哈,要是偶遇一个mercury工具研发工程师问到grid控件实现类并把头文件和lib给我,然后彻底解决这个问题该多好啊:) 很好很深奥 完全看不懂,有点像哗众取宠,把问题简单话,不要拽那么多深奥的词汇,有必要么 谢谢,扩展了一些思路
回复 1# 的帖子
说简单就是如何编程实现修改 loadrunner并发数。上面的用词都是标准汉字,
用的技术是windowsapi,可以google慢慢琢磨,
有不大明白的欢迎讨论。 更改loadrunner的并发用户数,很强!:lol 只要留神,肯定会有LOADRUNNER扩展的需求 不知道其他朋友是否有扩展LOADRUNNER的需求? 佩服斑竹,羡慕斑竹,向斑竹学习 :L 一头大牛又飞过了眼前 说实话,感觉有点掉进技术的陷窝里了,有点本末倒置的感觉。。。 原帖由 liangjz 于 2008-8-13 22:33 发表 http://bbs.51testing.com/images/common/back.gif
最近在应用VC6,大量采用win32 api扩展Loadrunner8.0/8.2的一些外围功能,做到自动调节面向资源消耗目标的合适(临界)并发数,碰到了几个相当棘手问题。
如
(1) 在loadrunner controller design 界面上编程实现更 ...
LZ你的意思是指:
目前你想修改并发数,是想读取Controller上的控件对象,读取行和列内容并修改,或者是想读取结果文件lrr当中数据,读取后再修改么?
想问一下,LR实现并发的时候,是通过读取临时结果文件当中的数据来实现的么,
也就是说目前在Controller当中设置的选项,LR都是把选项内容存放在临时结果文件当中,然后再读取文件当中内容?:o
页:
[1]