ペアプロ小劇場 劇団ペケぴー 天野勝 大熊知栄 安井力 懸田剛 永和システムマネジメント アジアパシフィックシステム総研 アジアパシフィックシステム総研 永和システムマネジメント 今日は? テスティングがネタです テストになってない 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 expected = buildData(is); Response actual = target.execute2(); assertEquals(expected, actual, "test2.xmlの中身と一致すること"); } 回帰テストの価値が わかってな~い 回帰していない 症状 – 環境を変えるとテストが通らなくなる – 繰り返して実行すると動作が変わる 原因 – テスト実行マシンの環境に依存したテストコード 処方箋 – テスト環境に依存しない 楽していない フィールド⇒30個 アクセッサ⇒60個 3つのテストケース⇒ 180個 テスティングフレームワークの思想 が わかってな~い 楽していない 症状 – 時間がかかる割には、テストコードから得られるメ リットが少ない 原因 – 機械的にテストコードを書いていて、創意工夫をして いない 処方箋 – テストが必要かどうかを熟考し、不要なテストコード は書かない ありがとうございました 天野勝 大熊知栄 安井力 懸田剛
© Copyright 2025 ExpyDoc