Byteman:在运行时通过DSL操作字节码进行测试和故障排除

byteman

Byteman是一个Java工具,通过Java代码注入,无需重新编译、打包或者部署即可方便地追踪、监视与测试Java应用以及JDK运行时代码的行为。

主要特性

Byteman可以在JVM启动前、启动后、甚至应用运行过程中进行注入。注入的代码可以访问应用中的任何数据、调用方法(甚至是私有方法)。它可以在任何需要的地方进行注入,无需提供源代码。Byteman甚至可以在应用执行过程中移除注入的代码或替换注入代码替换。

主要用途:

  • 注入打印跟踪语句(trace):打印静态数据或实例数据
  • 测试Java应用:
    • 验证代码流程执行是否符合预期;
    • 通过注入错误与边界数据进行异常及边界测试,例如通过延迟或异步操作测试多线程应用
  • Byteman BMUnit集成了JUnit与TestNG可以方便地进行单元测试与集成测试

工作原理

Byteman在运行时对Java应用的字节码进行修改。与其它工具进行字节码转换不同,However, Byteman在Java层次工作。它将期望注入的Java代码转换为字节码,写入待执行的字节码流,看起来就像源代码中加入了待执行的Java代码。

上手指南

使用条件

  • Byteman需要JDK 6或更高版本JVM

快速上手

第一次接触Byteman,可以参阅教程,了解Byteman执行跟踪、监控、测试结果验证以及错误注入测试。

  • 入门教程:介绍如何快速上手,通过一个简单的程序了解如何从命令行追踪和改变执行过程。
  • 补充教程 :介绍了BMUnit,如何从Maven或Ant运行BMUnit/Byteman测试。通过一个简单的示例介绍了如何使用Byteman和BMUnit跟踪测试执行、正确性验证以及通过注入模拟错误场景。
  • 高级教程:介绍了如何使用BMUnit执行复杂的错误注入测试。通过一组Byteman规则脚本将代码注入到多线程应用,从而发现一个计时错误。
  • 规则检查插件教程:介绍了如何配置Byteman Maven插件。该插件能够自动检查并验证Maven 构建过程中的Byteman规则脚本,确保注入代码与Maven中目标代码版本的一致性。

参见官方文档了解更多信息。

开发资源

使用许可

Byteman遵循LGPL 2.1开源许可发布。

官方网站:http://byteman.jboss.org/
开源地址:https://github.com/bytemanproject/byteman

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 收藏

资源整理者简介:唐尤华

唐尤华:我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。 个人主页 · 贡献了108个资源 · 17 ·    


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer