ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

Javaのテストでソースコード変えずに、外から処理を変えられるフリーのツール

オープンソースカンファレンス2011 Tokyo/Fallいってきた。
そのとき聞いてきた、内容のメモ。


便利なテストツール Byteman(ばいとまん) の紹介




・Javaアプリケーション実行中にアプリケーション動作を変更可能な
 バイトコードインジェクションツール

  もともとJBOSSのトランザクションツール→OSS
  (RedHatではサポート対象外)

・特徴
  ・テストの自動化目的
   ECA言語(イベントコントロールアクション)

  ・オリジナルソースの変更をしないでかえられる

・なんに使えそうか?
  ・障害解析、プロファイリング
  ・開発補助他人のコードを一時的に変えたい
  ・ライブパッチ

→ただし、サポート外!!

・構成要素
  エージェント(Byteman.jar)
    ルールエンジン
    組み込みヘルパー

  ルールスクリプト(ユーザー作成)
    テキストで、どこで、いつ、どのようにをECA言語で書く

  ユーザー定義ヘルパー
    ルールの中から呼び出せる

  補助スクリプト
    4つついている

・準備
  ダウンロード、解凍
  ルール作る
  場合によってはヘルパー


・ルールの要素
  Rule
  Class,Interface
  METHOD
  location(メソッド内にトリガーポイント)
  BIND
  IF
  DO ルール式、return、throw
    →通常起こせない例外も簡単に起こせる

・標準で用意されている
   ランデブーとか
   実行中止:異常終了する場合
   トレースとデバッグ:トレース入ってないところでも
   スタック:どのメソッドから呼ばれたかわかる

・Contributionソフト
   dtest:分散環境
   BMUnit:JUnitからBytemanを使う
      →テストケースの中にルールを書いてしまうこともできる
         →一元管理
   

・使用感&注意
 Javaで記述できるので、拡張容易
 テストケースの作成は時間かかる
 再テストは容易
 Eclipseのデバッガが決まらない
 デッドロック