バーニングソウル!!

いろんなことを覚えて、バーニングソウルを取得しようとするブログ。遊戯王好きで、押しはジャック!たまにマジメな個人向けのまとめも書く

自動テスト環境がない中でのユニットテストとの付き合い方

現場の状況

現在の参加している現場は、自動テストが一切ない。
一切ないというと語弊があるけど、だれもメンテしてないし、やってもいない。
本来は、自動テストをして、既存機能の担保と開発サイクルを高速に回したいところではあるが、マネージャー陣を説得できていない。。。
現状のメトリクスとか計測して、今こんな状態にあり、テスト自動化するとそれが改善出来ますって言えれば最高なんだろうけど、その計測をするところにすら至ってはいない。
それどころか、ユニットテストは開発者だけの責任で行っている。
要するにテスト仕様書が無いのです。
何を言っているのかわからねーと思うが、おれもなぜテスト仕様書が無く開発者個人で機能担保しているのかわからない…
結局、シス間当たりで結構バグが出る始末。。。。

やっと見つけた!

本来この状況は、許容してはいけない。
が、どうにかしようと動いている間にも時間はすぎる。現実は無情である。
で、どうするかと言うと、カバレッジをとってテスト漏れがないことを確認しながらユニットテストするしかなくなるんです。
一番怖いのは、作ったところを通していないこと。
通したつもりでいると、機能レベルのバグがリリースまで残り、リリース後に現れる。
これを「ぼっちバグ」という(俺の中で!)
コイツの特徴は、いるんだけど、いないように見えること。(ミスディレクション?)
そんなことあるわけねーだろとか思うかも知れないが、実際にそういったことが現場で起きている。(今の現場がそうだ!!)
なので、自動テストないし、テストの担保が個人任せなところは、漏れがないように注意する必要がある。

前提

まず、前提です。 現場ではEclipse3.5 + Java6 + Tomcat6で開発していますので、それを前提に話します。
※ちなみにTomcatは、Tomcatプラグインを使わず、サーバー構成を作って起動させるものとします。 Java8使いたい!IntelliJ IDEA使いたい!
ここの環境は恵まれているのだろうか?
半年ほど前に、Java1.4を未だに使っているって話をチラッと聞いたことがあるけど、流石にもういないだろう。。。

やり方

EclEmmaというEclipseプラグインを使います。
今回は、EclEmma2.3.2を使いました。
ちなみに、現場のセキュリティ上、画像とか使ってやさしく説明はしませんので、あしからず!

導入方法

メニューバーの[ヘルプ]→[ソフトウエア更新]→[検索およびインストール]を選択して表示される「インストール/更新」ダイアログで,URLに「http://update.eclemma.org/」を指定してインストールする。
Eclipseマーケットプレイスがあればもっと楽に出来るのに(怒)!

使い方

  • 実行構成の作成
    EclEmmaは、実行完了後にレポートを出力してカバレッジを出力するため、起動時・終了時にEclEmmaを使ってやる必要がある。
    そのため、起動・終了用の構成を作る必要がある。
    サーバーの起動構成をコピペして、起動・終了用の実行構成を作る。 起動用の実行構成のプログラム引数を「start」にする。
    終了用の実行構成のプログラム引数を「stop」にする。
  • 実行
    ツールバーにあるEclEmmaから作った起動構成を呼び出して、Tomcatを起動させる。

意外と簡単に出来る。 終了時も同様に、ツールバーにあるEclEmmaから終了用の構成を呼び出せば、Tomcatが停止してカバレッジが出力される。
通ってないとこは赤、条件分岐が全部できてないところは黄色、実行して通った箇所は緑になる。

ただ、問題があって、Eclipseを終了すると情報が消えます!
なにを言っているか分からねぇとは(ry
どうするかというと、毎回Eclipse終了時にレポートを出力してやると大丈夫です。
ただ、Eclipse起動した時にインポートしてやる必要があるけど。(めんどくせー)
この時、注意するのが、jacoco execution data file形式で出力すること。
CSV形式?だったかで出力すると、オブジェクト情報が欠落してしまい、もとの状態には戻らない。
以上を注意すれば、手動で動かしながらカバレッジが見れて、テスト漏れが無くせる(やったね!)

参照

以下のサイトを参考にさせてもらいました。
ありがとうございました!

honeplus.blog50.fc2.com

itpro.nikkeibp.co.jp

感想というか不満?

結構昔からあるみたいですね。。。。
最近は自動テスト環境ありのところで、必要に迫られなかったのですが、やっぱり必要になる現場はありますね。。。
上位の管理職が自動化技術に疎いと、説得が非常に面倒くさいのが問題ですね。。。。
ただ、説明するだけだと効果が薄いので、現場の現状を理解させるために、計測した値とその分析+改善案を突き付けてヤラないと動いてくれないのは、非常に厳しぃ!
できれば、管理職も積極的に開発に関わってほしい!
人管理うんぬんもいいけど、技術のマネジメントもしようね!
最後愚痴みたいになってしまった。。。。
何をするにも、上手くことは運ばす、現実は厳しいと改めて実感する今日このごろでした