ペアプロ小劇場 劇団ペケぴー 天野勝 永和システムマネジメント 大熊知栄 アジアパシフィックシステム総研 天野勝 永和システムマネジメント 大熊知栄 アジアパシフィックシステム総研 安井力 アジアパシフィックシステム総研 懸田剛 永和システムマネジメント
今日は? テスティングがネタです
テストになってない
・グリーンになっただけ? ・テストの 書き忘れ public void testAdd() { Calc.add(1, 2); } public void testSub() { Calc.sub(1, 2); public void testDiv() { Calc.div(2, 1); try { Calc.div(2, 0); } catch(Exception e) { } public void testMul() { // まだ ・グリーンになっただけ? ・テストの 書き忘れ
テストケースを 作る目的が わかってな~い
テストになってない 症状 原因 処方箋 assert がない なにも確認していない メソッドを呼ぶだけでテストになると思っている なにを確認すればいいのかわからない 処方箋 アサートファーストを実践する どんなことを確認するのか理解する 確認する項目と内容をレビューする
自動化してない
・確認内容を画面に 表示しているだけ。 ・手作業で確認 しなくてはならない。 ・手作業で確認 しなくてはならない。 LineItem item1 = new LineItem(); item1.setPrice(1000); item1.setQuantity(20); Order order = new Order(); order.addLine(item1); LineItem item2 = new DiscountedItem(24, 0.9); item2.setPrice(800); item2.setQuantity(50); order.addLine(item2); System.out.println("1000*20の品と、24個ロットで9掛けの800円の品50個の合計" + order.getTotalPrice()); order.register(); System.out.println("DBを見て注文が登録されているか確認する");
テスティングフレームワークの思想が わかってな~い
自動化してない 症状 原因 処方箋 目で見て確認している 手作業で動作を確認している assert の使い方をわかってない どうやって確認すればいいのかわからない 処方箋 ぜんぶassertを使って確認する 難しいテストのノウハウを調べる Mockを活用する xUnitの拡張パッケージを使う
回帰していない
public void test1() { InputStream is = new FileInputStream("c:\ボケ子\test1.xml"); Response expected = buildData(is); Response actual = target.execute(); assertEquals(expected, actual, "test1.xmlの中身と一致すること"); } public void test2() { InputStream is = new FileInputStream("c:\ボケ子\test2.xml"); Response actual = target.execute2(); assertEquals(expected, actual, "test2.xmlの中身と一致すること");
回帰テストの価値が わかってな~い
回帰していない 症状 原因 処方箋 環境を変えるとテストが通らなくなる 繰り返して実行すると動作が変わる テスト実行マシンの環境に依存したテストコード 処方箋 テスト環境に依存しない
楽していない
フィールド⇒30個 アクセッサ⇒60個 3つのテストケース⇒ 180個
テスティングフレームワークの思想が わかってな~い
楽していない 症状 原因 処方箋 時間がかかる割には、テストコードから得られるメリットが少ない 機械的にテストコードを書いていて、創意工夫をしていない 処方箋 テストが必要かどうかを熟考し、不要なテストコードは書かない
ありがとうございました 天野勝 大熊知栄 安井力 懸田剛