51Testing软件测试论坛

标题: 测试工具loadrunner扩展开发的一点感想 [打印本页]

作者: liangjz    时间: 2008-8-13 22:33
标题: 测试工具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给我,然后彻底解决这个问题该多好啊
作者: liming_oicq    时间: 2008-8-14 08:58
很好很深奥
作者: 鬼师爷    时间: 2008-8-14 09:55
完全看不懂,有点像哗众取宠,把问题简单话,不要拽那么多深奥的词汇,有必要么
作者: qiguojie    时间: 2008-8-14 11:12
谢谢,扩展了一些思路
作者: liangjz    时间: 2008-8-14 13:44
标题: 回复 1# 的帖子
说简单就是如何编程实现修改 loadrunner并发数。

上面的用词都是标准汉字,
用的技术是windows  api,可以google慢慢琢磨,
有不大明白的欢迎讨论。
作者: aks5201314    时间: 2008-8-14 14:03
更改loadrunner的并发用户数,很强!
作者: liangjz    时间: 2008-8-15 10:10
只要留神,肯定会有LOADRUNNER扩展的需求
作者: liangjz    时间: 2008-8-22 20:33
不知道其他朋友是否有扩展LOADRUNNER的需求?
作者: mansart    时间: 2008-8-22 23:24
佩服斑竹,羡慕斑竹,向斑竹学习
作者: 云层    时间: 2008-8-23 09:22
一头大牛又飞过了眼前
作者: jackei    时间: 2008-9-18 11:07
说实话,感觉有点掉进技术的陷窝里了,有点本末倒置的感觉。。。
作者: AJan1000    时间: 2008-9-18 12:41
原帖由 liangjz 于 2008-8-13 22:33 发表
最近在应用VC6,大量采用win32 api扩展Loadrunner8.0/8.2的一些外围功能,做到自动调节面向资源消耗目标的合适(临界)并发数,碰到了几个相当棘手问题。

  (1) 在loadrunner controller design 界面上编程实现更 ...


LZ你的意思是指:
目前你想修改并发数,是想读取Controller上的控件对象,读取行和列内容并修改,或者是想读取结果文件lrr当中数据,读取后再修改么?

想问一下,LR实现并发的时候,是通过读取临时结果文件当中的数据来实现的么,
也就是说目前在Controller当中设置的选项,LR都是把选项内容存放在临时结果文件当中,然后再读取文件当中内容?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2