写点什么

Grinder 3.0:“程序员的负载测试工具”添加脚本支持

2008 年 2 月 13 日

根据项目网站的说法, Grinder 的 主要目标用户是“理解他们所测代码的人——Grinder 不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。”Grinder 3 的主要新功能有:

在一次 InfoQ 采访中,Grinder 项目领导者 Philip Aston 与 InfoQ 分享了一些关于促进新版本功能的技术决策的背景,并提供了更多的 Grinder 背景资料。Aston 首先解释了添加脚本支持的原因:

Grinder 2 广受欢迎,但是对基于属性文件的 HTTP 测试来说,它的脚本格式极为有限。我引入了动态脚本来支持 HTTP 测试脚本中的分支、循环和自定义验证。脚本语言另外一处巨大的优势是,可以直接在脚本中进行执行其他类型的测试,不需要自定义的插件。

关于为什么选定 Python 做为脚本语言,而不使用 Java、或者其它 JVM 支持的脚本语言来编写测试脚本,Aston 也给出了一些见解和背后的故事:

我避免使用 Java 做为脚本语言,是因为对于 HTTP 测试来说,Grinder 3 的一个目标是要像 Grinder 2 一样使用简单。而 Java 单独的编译周期、类路径处理等都会妨碍这一目标。尽管这样,Jython 还是可以与 Java 相当好地整合,并且 Java 代码可 以很容易地用 Jython 进行测试(参看脚本库中的多数例子)。

我 在 2001 年开始 Grinder 3 的工作,当时 Jython 和 Groovy 是 JVM 脚本阵营中的佼佼者,所以我并没必要费劲地去思考。对 Grinder 来说,Jython 已经被证实是一 个很好的选择。Python 对偶尔采用的人来说,比其它大部分语言都要简单。很多 Grinder 用户都不是 Java 专家,只想对已录制的脚本做极小的修 改。而另一方面,Python 对想在更高级情境中使用 Grinder 的开发人员来说,则是一个强大的工具;而且 Jython 允许现有的 Java 库随意地混 合在其中。

在讨论中,Aston 接着分享了 TCPProxy 相关的详细情况——TCPProxy 是一个 TCP 流中的代理进程,就像浏览器和服务器之间的 HTTP 连接一样。Aston 提到,TCPProxy 可以使用 Python 录制测试脚本,还能识别 URL 参数和表单中的动态变量。他补充说,“用户通常以 录制的脚本做为开始,然后对其进行修改,以包含 / 更改用户帐号和使用到的其它应用数据,或者与其它脚本合并来产生覆盖混合情景的负载。”一旦测试脚本建立 起来,就能通过 Grinder 控制台来管理和监控这些测试脚本。

先前版本的 grinder.properties 文件中有大量设置,版本 3 减少了对这些设置的支持,因为现在这些配置可以直接在测试脚本中进行设置。他讲解了对于为 Grinder 2 编写的那些测试脚本,值得推荐的转换之路是:

Grinder 3 有一个可以体现 Grinder 2 属性文件的脚本范例,但我还是建议重新录制测试脚本。脚本可以用 TCPProxy 重新录制,然后用与 Grinder 2 几乎一样的方式来重放脚本。在使用 Grinder 2 时,更改或扩展脚本行为的唯一方式是编写一个插件,或者在极端情况下对 Grinder 本身进行修改。而使用 Grinder 3,几乎任何情况都可以在测试脚本内部进行。

在采访的最后,Aston 提到了最近出现的 3 个相关项目: Grinderstone webFlange Grinder Analyzer ——它最终给了 Aston 从 Grinder 中移除掉 beta 标签的信心。

查看英文原文 http://www.infoq.com/news/2008/02/the-grinder-3 “The Grinder 3.0: “The Programmer’s Load Tester” Adds Scripting Support”">The Grinder 3.0: “The Programmer’s Load Tester” Adds Scripting Support- - - - - -

译者简介: 王丽娟(Ivy Wang),一个快乐的程序员,持续从事 Java EE 中间件和 Java EE 企业应用的开发,关注软件架构技术;职业目标是成长为一名优秀的架构师。

2008 年 2 月 13 日 23:451354
用户头像

发布了 151 篇内容, 共 53.7 次阅读, 收获喜欢 16 次。

关注

评论

发布
暂无评论
发现更多内容

技术实践 | 如何基于 Flink 实现通用的聚合指标计算框架

网易云信

框架 flink 执行

多种数据形式下智能问答的应用解读

百度大脑

openEuler开源之后:引领新的技术变革

花花

试用期 签约计划

TcaplusDB祝所有父亲节日快乐!

tcaplus

数据库 TcaplusDB

为什么一款看似美好的产品会没有市场?

boshi

创业心态 产品经历

HTTP VS WebSocket VS RSocket

互联网架构师小马

为了不写接口文档,我肝了个 IDEA 插件!

程序员小航

IDEA idea插件 YAPI 文档 Java·

[译] R8 优化: Staticization

Antway

6月日更 6 月日更

作为一名程序员如何开展自己的副业呢?

Changing Lin

话题讨论 6 月日更

程序员上班“划水”向阿里猛投简历,两次被刷后,终成“菜鸟”P6

云流

Java 程序员 架构 面试

【TcaplusDB君】 行业新闻汇编(6月17日)

tcaplus

数据库 TcaplusDB

TcaplusDB祝天下所有父亲节日快乐!

TcaplusDB

nosql Data tencentdb TcaplusDB

为什么智能作业灯突然成为教育行业的趋势?

anyRTC开发者

音视频 WebRTC 智能硬件 音视频开发 音视频解决方案

[TcaplusDB]行业新闻汇编(6月17日)

数据人er

数据库 nosql 游戏 tencentdb TcaplusDB

让开发更丝滑,KodeRover开源分布式持续交付项目Zadig | TGO喜报

花花

试用期 签约计划

公安情指勤合成作战系统搭建,情报指挥系统搭建

13823153121

失业这件事,你认真考虑过吗?| 话题

HQ数字卡

6月日更

TcaplusDB君 · 行业新闻汇编(6月17日)

TcaplusDB

数据库 nosql tencentdb TcaplusDB

微博、快手纷纷整治饭圈乱象:抵制不良饭圈风气是全网的责任

石头IT视角

Linux 中实用但很小众的 11 个炫酷终端命令

学神来啦

云计算 Linux 运维 linux运维 网络运维

能否借鉴鸿蒙思路实现物联网燃气泄露监控?

老猿Python

鸿蒙 物联网 北向接口 远程监控

阿里JAVA架构师面试136题含答案:JVM+spring+分布式+并发编程!

云流

Java 程序员 架构 面试

【TcaplusDB知识库】TcaplusDB架构简介

tcaplus

TcaplusDB

2021年,Java开发者值得学习的13项技能

百度开发者中心

Java

TcaplusDB软件和硬件环境建议配置

数据人er

数据库 nosql tencentdb TcaplusDB

百度C++工程师的那些极限优化(并发篇)

百度Geek说

c++ 性能优化

MySQL 数据库事务隔离性的实现

互联网架构师小马

从零开始学习3D可视化之爆炸图

森友小锘

科技 3D 3D可视化

【TcaplusDBx黎明觉醒】一路相伴,不负期待

tcaplus

数据库 TcaplusDB

终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶

Crud的程序员

Java spring 程序员 架构 编程语言

GitOps系列二|如何借助极狐GitLab 和Terraform以代码形式构建基础设施?

极狐GitLab

kubernete

新晋管理者都会遇到的6个问题

新晋管理者都会遇到的6个问题

Grinder 3.0:“程序员的负载测试工具”添加脚本支持-InfoQ