デスマーチPM「各社のPG進捗が遅れていてユニットテストを書く暇が全く無いんですよ、なにかいい手は有りませんかね・・・? 因みに本プロジェクトはカバレッジ100%で請け負っています!(キリッ)」
何故100%確約したのかとか先にUT書けばとか無限に出てくる言いたいことはさて置き。
数十億のお金が掛かった、中抜きが常態化していて様々な下請け会社が参画している大規模プロジェクトのPMから囁かれる「地獄」へのお誘い。
身の回りでそんな悪魔からの囁きは有りませんか?
無くても有った時の為に何かしら切り抜ける方法を持っておきたいところです。私はこの危機を過去10年で2回、Eclipseプラグイン「Code Pro Analytix」のお世話になって切り抜けました。
もう開発も止まってるプラグインですが、こいつ・・・まだ動くぞ。
環境
- Windows 10
- Pleiades-2019-03
Code Pro Analytixとは
2010年、GWT(Google Web Toolkit)を効率的に開発する為の有償製品を販売していた「Instantiations」社をGoogleが買収。
当時はもっとGWTを流行らせたかったでしょうから、同社の製品を無償で公開、その流れで同じく有償製品だったCode Pro Analytixも無償で使えるようになりました。
2010年当時は神レベルの評価を受けていた同Eclipseプラグインですが、現在はGoogle Codeの閉鎖と共に開発は終了しています。
2011、12年辺りにリリースされたEclipse3.7用のものが最新版で、かつ配布サイトが無い為個人サイトに点在するだけになっており、幻のプラグインになりつつあるのが現状です。
インストール
下記からプラグインzipをダウンロードします。
解凍して出来たディレクトリから「features」「plugins」二つのディレクトリをEclipseの配下ディレクトリにコピー。「CodeProAnalytix」以降は作成してください。
「pleiadesルート\eclipse\dropins\CodeProAnalytix\eclipse」
Eclipseを再起動することで有効になります。
現代のEclipseでも動く機能
Eclipse上のプロジェクトを右クリック→「CodePro Tools」で使える機能がティアダウンされます。
「依存関係の分析」。呼び出しが分かるので初見のプロジェクトを分析する時に便利なんですよね。
次に本命の「Generate Test Case」。
業務ロジックに対してJUnitテストコードを生成してくれます。
時代的にJUnit3のコードなのが残念ですが、全クラスのテストコードを生成してくれます。例えば「demo」プロジェクトに対して実行すると「demoTest」プロジェクトを作ってくれて、~Test.javaを生成してくれます。
後は生成されたテストコードをdemoTestからdemoプロジェクトにコピーすることでJUnit実行することが出来ます。自動生成されたテストコードが、既存のテストコードとバッティングしないのがいいですね。
いやー、動くもんです。
自動生成は出来るけど
一瞬で全クラスのJUnitテストコードが出来ました。これを雛型にすればデスマーチプロジェクトの進捗を助ける一助にはなるかも知れません。
最近はEvoSuiteのような代替ソフトウェアがありますが生成されるコードが大分複雑な印象があります。それに比べてCodeProが生成するコードはシンプルなのでJUnitのバージョンを上げる際にも置換が効きやすいです。
ただどれを使うにせよ、網羅率を上げる為の生成なので中身のあるユニットテストは当然ながら行えていません。
業務ロジックの要件を満たし、想定外のバグを検出し、継続して実行出来るようにする普通のユニットテストコードが必要です。最初からUTコードを書いておけばこのプラグインに頼ることも無いですし、入れなくて済むならそうしたいところです。
それにしても、デスマーチになる要因は上流にある場合もあれば下流にある場合もあるし、大規模人月プロジェクトは難しいですね。
精神的な健康の為にも出来るなら近寄らないようにしたいものです。