Presentation is loading. Please wait.

Presentation is loading. Please wait.

Limeを使ったユニットテストの実装方法

Similar presentations


Presentation on theme: "Limeを使ったユニットテストの実装方法"— Presentation transcript:

1 Limeを使ったユニットテストの実装方法
CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

2 ユニットテストを行う利点は沢山あります。
ユニットテストって何? 単体の品質を担保するテストです CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

3 ユニットテストを行う利点は沢山あります。
問題点の究明が簡単 テストを追記する事でクオリティアップ! CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

4 ユニットテストを行う利点は沢山あります。
バグ発見&テスト追加で品質向上 仕様書が無くても品質を保ちやすい CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

5 ユニットテストを行う利点は沢山あります。
MVCに沿ったプログラミングで開発者を縛る 必然的にMVC的なプログラミングで縛る CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

6 ユニットテストを行う利点は沢山あります。
結論。 長期的なメンテナンスに必要 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

7 Copyright © FirstLogic, Inc. All rights reserved.
欠点もあります 品質と開発速度はトレードオフ              by 社長 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

8 Copyright © FirstLogic, Inc. All rights reserved.
欠点もあります もしも・・・ オブジェクト指向じゃないような場合… CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

9 Copyright © FirstLogic, Inc. All rights reserved.
欠点もあります コントローラーと、ビューに散らばったビジネスロジックを集める テストを行う範囲を明確化 実施 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

10 Copyright © FirstLogic, Inc. All rights reserved.
欠点もあります リファクタリング中の機能追加は難しい リストアップ&テストの工数はかなり大きい CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

11 Copyright © FirstLogic, Inc. All rights reserved.
話のまとめ 何事も割り切りと諦めと決意が必要。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

12 Copyright © FirstLogic, Inc. All rights reserved.
話のまとめ テストをやらず、速度を極限まで高めるというスタンス 徹底的にテストをするというスタンス CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

13 Copyright © FirstLogic, Inc. All rights reserved.
話のまとめ 今日の話はバグと決別する、高品質なソフトウェア構築を決意をした人向けの話となります。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

14 Copyright © FirstLogic, Inc. All rights reserved.
Limeって何? Limeって何? Symfony1.x付属のテストフレームワーク CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

15 Copyright © FirstLogic, Inc. All rights reserved.
Limeって何? 元になっているのはPerlのTest::More ラシイ。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

16 Copyright © FirstLogic, Inc. All rights reserved.
Limeって何? 学習曲線を緩やかに。 できるだけ簡単に。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

17 Copyright © FirstLogic, Inc. All rights reserved.
なにはともあれ、どんな物か試しましょう どこにあるの? プロジェクト/test/unit CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

18 Copyright © FirstLogic, Inc. All rights reserved.
なにはともあれ、どんな物か試しましょう どこにあるの? プロジェクト/test/unit CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

19 Copyright © FirstLogic, Inc. All rights reserved.
なにはともあれ、どんな物か試しましょう テストの対象に使うクラスは・・・ 配っている紙を見てください。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

20 Copyright © FirstLogic, Inc. All rights reserved.
なにはともあれ、どんな物か試しましょう プロジェクト /test/unit/app/アプリ名/lib/ CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

21 Copyright © FirstLogic, Inc. All rights reserved.
なにはともあれ、どんな物か試しましょう クラス名+サフィックスにTest.php 今回はHogeクラスのテストなのでhoge.class.Test.php CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

22 Copyright © FirstLogic, Inc. All rights reserved.
なにはともあれ、どんな物か試しましょう では実演してみます。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

23 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.

24 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.

25 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.

26 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 % TOTAL COVERAGE: 100% だったのが・・・ lib/hoge % # missing: 16 TOTAL COVERAGE: 83% となる。 なにはともあれ、どんな物か試しましょう CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.

27 Copyright © FirstLogic, Inc. All rights reserved.
ご静聴ありがとう御座いました。 CONFIDENTIAL Copyright © FirstLogic, Inc. All rights reserved.


Download ppt "Limeを使ったユニットテストの実装方法"

Similar presentations


Ads by Google