- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVAVuser协议
好玩的JAVA Vuser写在前面今天很不幸,一个大堵车的日子,以前从四惠到减灾中心不到半个小时的路程走了快1个半小时,今天好冷,到了用户现场开始研究脚本的开发,先大概看了一下系统。基本上一个个C/S的系统,FatClient,客户端是一个用Java写的客户端,后面连接的是Oracle 10g数据库,没有应用服务器。用户在需求要求测试100用户并发。当我看到这个系统后,当时还在想,用户真是有点问题,这么个C/S的系统测试什么并发用户,这种测试出来问题,怎么评价,说是数据库的问题,还是程序的问题?到底测试点在哪里?我想这个系统开发方写的就是一个客户端,你非要让测试一个性能,有必要吗?要测试客户端的性能吗?那干嘛不做客户端的效率呢?感觉没啥意思,并且这个东西看起来脚本好像还不好开发,最起码我的一个工程师通过录制的方式做了好多种尝试都没有解决。无聊无奈,我这么想着。开始分析我告诫自己,不要抱怨客户,认真对待工作;好了开始分析,首先我想知道一下,客户端和服务器端采用了什么样的通信协议,我看了一下你台测试机,看看有没有数据包分析工具,结果没有找到,算了,先用LR,WinSocket脚本分析一下吧,启动了LR,录制了一个Socket脚本,我的天哪么多的数据,有好几百个Buf,我带开数据部分,看了看,没有什么头绪,不是常见的协议,有些内容可以显示,好像是一些Oracle的配置信息,传送了一些Select语句。顺便回放一下脚本吧看看能不能回放成功,抱着一点侥幸,要是能回放成功了,就用Socket搞了,对那些16进制的分析,我倒也不害怕。和可惜回访失败了,我不死心有录制了一个脚本,比较了一下两个脚本的数据字段,我彻底放弃了用Socket脚本的念头。不同的地方太多了,并且好像看不出来什么规律;我心里估算了一下时间,要是真的搞下去,今天能不能把脚本开发出来都不一定呢。今天就要测试结果,肯定来不急。你要是有足够的时间和足够的耐心我相信你能搞出来(我怕累算了)。忽然想到客户端是JAVA开发的,并且我听我的工程师说,LR推荐的协议也是JAVA over HTTP,我想既然LR推荐了,我也尝试一下吧,看看是不是我的工程师哪里疏忽没有做出脚本来,开始我录制了一下,发现什么也没有录制下来,我了个去,这也太不给面子了吧,让我一点希望都没有了。这能难得到我,在录制设置中,做了一个端口映射,把所有的请求都映射到HTTP的80端口,在录制了一次,有点意思,给我生成了一个脚本,看看脚本吧,真能骗人,随便给我弄了几个自定义请求,玩我呢,我这么想着,还是放弃了这个协议。这不想写脚本,我这么想着,开始尝试Oracle的几个协议的脚本,可悲,连事件都录不下来,我在尝试一下JAVA的几个协义,结果都是悲崔的,哎,我这么想着,难道这个脚本我就写不出来了?一上午就这么过去了,要中午吃饭了;在吃饭的路上我整理了一下上午的问题。首先我想了一下针对这种客户端如果对服务器作并发压力测试到底测到什么?我觉得可以是以下几点:1) SQL语句写的是否够优化;2)数据库设计在性能方面是否够理想;3)关键的字段是否进行了索引4)数据库的配置是否合理。想明白这几点,我觉得我的脚本开发可以从以下几个方面入手:1)连接数据库;2)数据SQL语句访问既然从这两个方面考虑,那么只要可以跟数据库建立好连接,再用系统引用的SQL语句进行查询就可以了,因此我考虑采用lr_db_connect ()函数连接数据库,采用:lr_db_executeSQLStatement 执行SQL语句。然后我通过Ethereal数据包分析工具分析数据的连接过程和执行的SQL语句。这样也许能够解决,这样想着我吃完了饭,饭吃的不错。下午开始工作了,我尝试了一下上述的方法,结果我还是放弃了,要分析的数据太多了。单单Ethereal的数据就够我分析的。我觉得这样做太笨了。我决定写程序了实在没办法了,我下定决心要写一个脚本出来,说句实在话我不是怕写程序,只是要想写一个JAVA Vuser的脚本必须分析客户端中的所有程序源码,但是可惜的是今天开发方的不在,我让他把源码给我也不行,所以我之前一直在用黑盒的方法处理,现在终于把我逼急了,我跟我的工程师说,把开发方的那个工程师给我叫过来,告诉他,要是不过来这个指标就不通过(呵呵,给他点颜色看看);这一招还很灵,开发方的人马上着急了,在北京的大北边开始往东南四环赶,(忽然感觉自己有点残忍了,呵呵);开发JAVA Vuser脚本其实并复杂,关键是需要对客户端程序的开发非常了解,必须知道由那些类,类中有哪些方法和函数,这些方法和函数如何调用,说白了你需要把客户端的源码读一遍,理解了。要是在研发人员的帮助下就简单多了。开始脚本开发了按照以下步骤进行:1)让你研发人员坐你旁边,打开她的开发环境;2)准备好你的脚
文档评论(0)