51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2491|回复: 3
打印 上一主题 下一主题

[原创] 我的开源项目:RoadRunner

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-11-19 12:11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
另见:http://charlescui.javaeye.com/admin/blogs/520197

代码地址:http://code.google.com/p/roadrunner/

序:不知不觉版本号已经到3.3.1了,

以前一直没有对外宣传这个项目,只是自己在用,惟一一次对外声明过是在一篇发表在程序员杂志的那片文章中略带了一下,

那是由于正好用到它做一个简单的解决方案.

起初没有对外宣传是因为想自己多发现些bug,修正好后再公布出去.

后来bug也没了,但由于时间关系忘记宣传了,它也就一直默默的呆在google.code和gemcutter上.

现在拿出来给大家看看,大家有什么更好的设计或者点子,都可以告诉我,如果想法很不错,我们就把你的代码片段加进去

===========================分割线============================

最新Gem的请到Source中通过Google Code的SVN下载

也可以通过Gem直接安装:gem install RoadRunner --source http://gemcutter.org

LoadRunner?这个工具很多做过性能测试的朋友肯定都知道,里面有很多方便易用的方法,不过这些方法的实现不是重点,毕竟ruby的第三方库的各种实现非常的多,ruby开发者的热情都很高。

RoadRunner?实现的是LoadRunner?的框架,

既: init(){ } action(){ } end(){ }

init存放初始化、登陆等操作,action可以不断的迭代执行,从而产生持续不断的压力,end存放释放资源、退出等操作。

外加一个虽然简单但直观的报表,之后的版本除了不断的完善RR的报告,提高和LR的相似度之外,还会增加更多ruby特有的方法,丰富Rrhelper模块代码。

RoadRunner更方便的地方在于,它不仅仅可以通过日志来展示结果,还可以将结果存储到数据库中,大家可以看test目录中的pi_db.rb这个测试文件,之后就会很方便的通过读取数据库的测试记录,来绘制测试报表.

如果能够将它和我的倩女幽魂项目(http://gemcutter.org/gems/lpm,http://gemcutter.org/gems/lpmp)合并起来用,那还可以监控被测主机的系统资源使用情况.

倩女幽魂介绍:

http://code.google.com/p/lpm/

http://docs.google.com/View?id=dcnwrnvv_871dvvc64dw

我喜欢LR,我更喜欢RR -

该gem的test目录下有测试文件,安装好该gem后,可以先阅读测试代码,之后就可以很快的入手了。

测试例子一,计算PI:
Ruby代码
# 莱布尼兹公式计算圆周率  
#rrpi.global[:deep]代表计算的深度  
#深度越深,计算越精确,当然也越耗时  
  
$:.unshift File.join(File.dirname(__FILE__),'..','lib')  
  
require 'roadrunner'  
  
rrpi=RoadRunner.new  
  
rrpi.init do  
  rrpi.global[:pi],rrpi.global[:deep]=0,100  
  
  # users决定同时有多少并发用户一起执行action  
  # iterations决定每个用户执行多少次  
  rrpi.users,rrpi.iterations=10,1000  
end  
  
rrpi.action do  
  
  # 新增加了iterationId和userId两个接口方法,  
  # 可以通过iterationId获得当前action执行到第一次  
  # 可以通过userId获得当前action执行用户的id  
  # puts rrpi.iterationId  
  # puts rrpi.userId  
  1.upto(rrpi.global[:deep]){|x|rrpi.global[:pi]+=((-1)**(x+1)*1.0/(x*2-1))}  
end  
  
rrpi.ended do  
  rrpi.global[:pi]*=4  
  #rrpi.global={}  
end  
  
rrpi.run  
rrpi.report  


执行完毕后,控制台会输出报告,类似如下信息:

Performance Reports

user system total real

4.750000 0.016000 4.766000 ( 4.796000)

The Virtual User is 10.

Total Execute 1000 Action(s).

Total Cost 4.7960000038147 Second(s).

This Scenario's TPS : 208.507089075189.

The longest action cost 0.0160000324249268 seconds.

User defined params as below:

{:deep=>1000, :pi=>3140.59265383977}

End of Reports

代码的黏贴复制会导致代码变形,大家可以去看roadrunner源码的test目录,里面有很多测试用例.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-11-19 12:15:44 | 只看该作者
你这个完全可以用Ruby做一套http协议的录制 回放 压力测试工具了

全Ruby  代码量少 效果也无弱化。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-11-19 15:39:12 | 只看该作者
向强人学习中,我女朋友是做软件测试的,帮她关注一下~  谢谢楼主。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-11-19 16:25:58 | 只看该作者
借LZ帖子问个问题,LR是用什么语言写的呢?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-18 19:46 , Processed in 0.061372 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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