Download presentation
Presentation is loading. Please wait.
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.
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.