|
|
![]() |
![]() |
|
||||||||||||||
![]() |
| テストツール:Agitator |
|
近年の開発シーンでは、アジャイル開発やテスト駆動開発に代表されるように、開発者による単体テストの重要性が大きく喧伝されています。また、多くの経験から開発ライフサイクルの早い段階でバグを発見することが、ソフトウェアの品質を向上させ、開発全体のコストを大きく削減させることが分かっています。しかしながら、単体テストの実施は決して簡単な作業ではありません。平均してテスト対象コードの1.5倍から2倍の量になるテストコードの記述は、開発者にとって大きな負担となります。また、仕様の変更などが発生すれば、テストコードも同時に修正していかなければなりません。そして、それほどのコストをかけて作成した単体テストコードも、その品質は開発者個人の技量に依存してしまい、そのため管理者にとってみれば十分に信頼できる品質メトリクスの取得や進捗の把握にはなりませんでした。 これらの問題に、かつてない自動化で解を与えるのが、AgitatorとManagement Dashboardです。Agitatorのソフトウェア・アジテーションでは、バイトコードの分析結果をもとに様々な引数でコードを実際に実行することで、コードがどのように振る舞うかについての事実を観察します。観察結果はOne-Clickでアサーションに変更することができるので、今までにない効率で回帰テストを定義していくことが出来ます。また、この観察結果はコードの実際の動作を常に反映しているため、コードに修正が加わった場合でも簡単に同期を保つことが可能です。 そして、Management Dashboardは単体テストの品質と進捗の把握にかつて無い効果を発揮します。リスクベースの優先度づけは効率的で効果的な単体テストを可能とします。また、命令網羅や条件網羅にもとづくテスト・カバレッジ・インデックス(TCI)などの指標によって、過不足のないテスト定義を可能とします。そして、単体テストまでを含めた進捗を把握することで、より精度の高い進捗状況の把握を実現します。 |
| ■Dynamic Code Analysis - 動的コード解析
オブジェクト指向プログラムでは、コードの動作はクラスの状態やデータに大きく依存します。また、ポリモーフィズムなどのテクニックも、静的な方法によるコードの動作の解析を困難なものとしています。Agitatorの動的コード解析技術は、コードを実際に実行することで、これらの問題を解決します。また、Agitatorの生成する数百におよぶテストケースは、開発者が予期しずらい例外ケースのテストも可能となります。結果、コードの品質は、正常ケースだけでなく例外ケースにおいても大幅に向上します。 ■Outcome Partition - 結果分割 Outcomeとは、メソッド呼び出しの結果です。結果は大きく正常終了と例外終了に分けられ、例外終了はさらに例外ごとに分割されます。このため、期待しない例外の発生をより早期に発見することが可能です。また、表示は分割された結果ごとに行われるため、さらに詳細に分割することによって、結果確認の精度をより高めることが可能です。 ■Snapshot and Stack Trace - スナップショット、スタックトレース Agitatorはアジテーションの実行中の引数やメンバフィールドの状態を、分割された結果ごとにスナップショットとして保持します。また、例外が発生した場合にはスタックトレースも保持されるため、バグやあやしい動作のがより容易となります。 ■Factory - ファクトリ Agitatorは、目標のコードカバレッジを満たすために、必要な入力データをソースコードから想定しうる範囲で自動的に生成します。そして、Agitatorに用意された200以上のFactoryクラスを使用し、テスト者独自のテストケースを追加することにより、精度をさらに向上させることが可能です。Factoryの定義は固有のXMLファイルとして保存され、プロジェクトを横断して再利用が可能なテスト資産となります。 ■J2EE Application - J2EEアプリケーション 多くのJ2EEアプリケーションでは、アプリケーション・サーバやデータベースなど、環境への依存や、テスト準備の煩雑さなどが単体テストの実施を妨げてきました。これに対し、Agitatorは、サーブレットやJDBC、JNDIなどのJ2EEテクノロジーをエミュレーションすることで、これらの依存や煩雑さを意識することなく、単体テストの実施を可能とします。 |