Limeを使ったユニットテストの実装方法 株式会社 ファーストロジック http://www.firstlogic.co.jp mailto:[email protected] Tel: 03-3442-4331 Fax: 03-3442-4331 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. ユニットテストを行う利点は沢山あります。 ユニットテストって何? 単体の品質を担保するテスト です CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 1 ユニットテストを行う利点は沢山あります。 問題点の究明が簡単 テストを追記する事でクオリ ティアップ! CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 2 ユニットテストを行う利点は沢山あります。 バグ発見&テスト追加で品質 向上 仕様書が無くても品質を保ち やすい CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 3 ユニットテストを行う利点は沢山あります。 MVCに沿ったプログラミング で開発者を縛る 必然的にMVC的なプログラ ミングで縛る CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 4 ユニットテストを行う利点は沢山あります。 結論。 長期的なメンテナ ンスに必要 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 5 欠点もあります 品質と開発速度はトレードオフ by 社長 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 6 欠点もあります もしも・・・ オブジェクト指向じゃないような場合 … CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 7 欠点もあります コントローラーと、ビューに散らばった ビジネスロジックを集める テストを行う範囲を明確化 実施 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 8 欠点もあります リファクタリング中の機能追加 は難しい リストアップ&テストの工数は かなり大きい CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 9 話のまとめ 何事も割り切りと諦めと決意が 必要。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 10 話のまとめ テストをやらず、 速度を極限ま で高めるという スタンス 徹底的にテス トをするという スタンス CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 11 話のまとめ 今日の話はバグと決別す る、高品質なソフトウェア 構築を決意をした人向け の話となります。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 12 Limeって何? Limeって何? Symfony1.x付属のテ ストフレームワーク CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 13 Limeって何? 元になっているのは PerlのTest::More ラシイ。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 14 Limeって何? 学習曲線を緩やかに。 できるだけ簡単に。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 15 なにはともあれ、どんな物か試しましょう どこにあるの? プロジェクト/test/unit CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 16 なにはともあれ、どんな物か試しましょう どこにあるの? プロジェクト/test/unit CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 17 なにはともあれ、どんな物か試しましょう テストの対象に使うクラ スは・・・ 配っている紙を見てくだ さい。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 18 なにはともあれ、どんな物か試しましょう プロジェクト /test/unit/app/アプリ名 /lib/ CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 19 なにはともあれ、どんな物か試しましょう クラス名+サフィックスに Test.php 今回はHogeクラスのテストな のでhoge.class.Test.php CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 20 なにはともあれ、どんな物か試しましょう では実演してみます。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 21 なにはともあれ、どんな物か試しましょう <?php class hoge { //put your code here // きちんと動く例 /* public function trimScalar($Value){ $result = str_replace(' ', '', $Value); if($Value === "予約語"){ return $value; } return $result; } // バグ有りの例その1:無理やりtestという文字列をreturn */ /* public function trimScalar($Value){ } */ str_replace( ' ', $result, $Value); return 'test'; // バグ有りの例その2:受け取ったValueをそのままreturn /* public function trimScalar($Value){ return $Value; } */ } CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 22 なにはともあれ、どんな物か試しましょう <?php require_once dirname(__FILE__) . '/../bootstrap/unit.php'; $t = new lime_test(1,new lime_output_color); $t->is(hoge::trimScalar(' test '), 'test', '::trimScalar()スペースを除く'); $t->is(hoge::trimScalar('予約語'), '予約語', '::trimScalar()予約語はそのままスルー'); $t->is(hoge::trimScalar(' '), false, '::trimScalar()スペースを除く異常系1'); $t->is(hoge::trimScalar(' abc de '), 'abcde', '::trimScalar()途中スペース込み'); $t->is(hoge::trimScalar(' あいう えお '), 'あいうえお', '::trimScalar()2バイト文字のチェック'); $t->is(hoge::trimScalar(''), false, '::trimScalar()何も無い場合はfalseを返す'); $t->todo('テスト開始!'); CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 23 なにはともあれ、どんな物か試しましょう <?php require_once dirname(__FILE__) . '/../bootstrap/unit.php'; $t = new lime_test(1,new lime_output_color); $t->is(hoge::trimScalar(' test '), 'test', '::trimScalar()スペースを除く'); //$t->is(hoge::trimScalar(‘予約語’), ‘予約語’, ‘::trimScalar()予約語はそのままスルー’); //コメントアウト! $t->is(hoge::trimScalar(' '), false, '::trimScalar()スペースを除く異常系1'); $t->is(hoge::trimScalar(' abc de '), 'abcde', '::trimScalar()途中スペース込み'); $t->is(hoge::trimScalar(' あいう えお '), 'あいうえお', '::trimScalar()2バイト文字のチェック'); $t->is(hoge::trimScalar(''), false, '::trimScalar()何も無い場合はfalseを返す'); $t->todo('テスト開始!'); CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 24 なにはともあれ、どんな物か試しましょう # symfony test:coverage --detailed test/unit/HogeTest.php lib/Hoge.php >> coverage running C:\Documents and Settin...CH/test/unit/HogeTest.php (1/1) lib/hoge 100% TOTAL COVERAGE: 100% だったのが・・・ # symfony test:coverage --detailed test/unit/HogeTest.php lib/Hoge.php >> coverage running C:\Documents and Settin...CH/test/unit/HogeTest.php (1/1) lib/hoge 83% # missing: 16 TOTAL COVERAGE: 83% となる。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 25 ご静聴ありがとう御座 いました。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved. 26
© Copyright 2024 ExpyDoc