Limeを使ったユニットテストの実装方法 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
ユニットテストを行う利点は沢山あります。 ユニットテストって何? 単体の品質を担保するテストです CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
ユニットテストを行う利点は沢山あります。 問題点の究明が簡単 テストを追記する事でクオリティアップ! CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
ユニットテストを行う利点は沢山あります。 バグ発見&テスト追加で品質向上 仕様書が無くても品質を保ちやすい CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
ユニットテストを行う利点は沢山あります。 MVCに沿ったプログラミングで開発者を縛る 必然的にMVC的なプログラミングで縛る CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
ユニットテストを行う利点は沢山あります。 結論。 長期的なメンテナンスに必要 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 欠点もあります 品質と開発速度はトレードオフ by 社長 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 欠点もあります もしも・・・ オブジェクト指向じゃないような場合… CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 欠点もあります コントローラーと、ビューに散らばったビジネスロジックを集める テストを行う範囲を明確化 実施 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 欠点もあります リファクタリング中の機能追加は難しい リストアップ&テストの工数はかなり大きい CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 話のまとめ 何事も割り切りと諦めと決意が必要。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 話のまとめ テストをやらず、速度を極限まで高めるというスタンス 徹底的にテストをするというスタンス CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. 話のまとめ 今日の話はバグと決別する、高品質なソフトウェア構築を決意をした人向けの話となります。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. Limeって何? Limeって何? Symfony1.x付属のテストフレームワーク CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. Limeって何? 元になっているのはPerlのTest::More ラシイ。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. Limeって何? 学習曲線を緩やかに。 できるだけ簡単に。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. なにはともあれ、どんな物か試しましょう どこにあるの? プロジェクト/test/unit CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. なにはともあれ、どんな物か試しましょう どこにあるの? プロジェクト/test/unit CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. なにはともあれ、どんな物か試しましょう テストの対象に使うクラスは・・・ 配っている紙を見てください。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. なにはともあれ、どんな物か試しましょう プロジェクト /test/unit/app/アプリ名/lib/ CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. なにはともあれ、どんな物か試しましょう クラス名+サフィックスにTest.php 今回はHogeクラスのテストなのでhoge.class.Test.php CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. なにはともあれ、どんな物か試しましょう では実演してみます。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. <?php class hoge { //put your code here // きちんと動く例 /* public function trimScalar($Value){ $result = str_replace(' ', '', $Value); if($Value === "予約語"){ return $value; } return $result; // バグ有りの例その1:無理やりtestという文字列をreturn */ str_replace( ' ', $result, $Value); return 'test'; // バグ有りの例その2:受け取ったValueをそのままreturn return $Value; なにはともあれ、どんな物か試しましょう CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. <?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.
Copyright © FirstLogic, Inc. All rights reserved. <?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.
Copyright © FirstLogic, Inc. All rights reserved. # 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% だったのが・・・ lib/hoge 83% # missing: 16 TOTAL COVERAGE: 83% となる。 なにはともあれ、どんな物か試しましょう CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.
Copyright © FirstLogic, Inc. All rights reserved. ご静聴ありがとう御座いました。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.