More Related Content
Similar to テストの視点を活用した TDD アプローチの検討とその検証 (20)
More from Akira Ikeda (20)
テストの視点を活用した TDD アプローチの検討とその検証
- 2. はじめに –本報告の要点
TDD(Test Driven Development)について
Agile開発を中心に普及しているプログラミング手法
テストファーストでユニットテストを作成し,それをパ
スする製品コードを追加・変更していく
TDDの課題
TDDでのテストはプログラミングのサポートが目的であり,
バグ・仕様未達を網羅的に検出すると保証できない
バグ・仕様未達の網羅的な検出が必要ならば,単体テスト工程な
どで別途ユニットテストを実施する必要がある.TDDでテスト工数
の削減ができず,トータル工数が上昇する可能性がある
今回の要点
本研究会では,TDDにテストの視点を導入,バグ・仕様未
達の検出に優れたTDDアプローチの検討を行った
今回はその基礎検証の報告を行う
2
- 8. 追加するプロセス
VERIFY&DEBUG
テスト設計を作りこむ
テストケースを追加・洗練させる(Verify)
VerifyでREDになれば修正する(Debug)
Verifyでの付属的活動
冗長なテストの削除
仕様の確保
Refactor[Test]
テストの入力値・期待値を変更せず,テストコードの記
述改善を行う
コードの記述改善でテストの堅牢製・保守性を向上させ
る
8
- 11. 改善したTDDプロセスの検証(2/2)
項目 内容
被験者 1. 開発者 4名
TDDとテストの視点を活用したTDDで問題プログラムを作成する
2. テスト担当者 2名
例題仕様対する網羅的なテストケースを作成する
前提条件 同一の例題プログラムをTDDとテストの視点を活用したTDDで作成
することになるが,テストケースの網羅度に焦点を当てるために,
その際に発生する仕様に対する学習効果は検証データの計算には
加味しない
11
- 12. 例題仕様
以下に述べるJudgeTriangle.judgeTriangle(int x, int y,
int z)というstaticメソッドとそのテストケースを作成する
Int型の引数,x, y, zはぞれぞれ三角形の三辺の長さを表すものとする
staticメソッドは三角形が以下のどれであるかを表す列挙型を返す
正三角形
二等辺三角形
不等辺三角形
三角形ではない
x = -1のような場合でも,すべて「三角形ではない」に含める
上記は以下の2つアプローチで2回実施する
TDD
テストの視点を活用したTDD
開発者
各アプローチの実施にかかった時間を記録する
テスト担当者
テストケースの作成にかかった時間を記録する
12
- 14. 検証結果 TDDと単体テスト工程のトータルの工数削減
14
テストの視点を活用することによりトータルの工数が平均
6.81%削減された(テスト設計経験者の場合21.6%削減)
被験者Aで大幅に工数が増加している理由は以下が考えられる
テスト設計に慣れておらず,テスト設計に時間がかかった
テスト設計を作りこみすぎた
テスト設計
経験
TDD テストの視点を活用したTDD マスターテストケー
スの単位ケースあた
りの作成時間
TDDと単体テスト工
程のトータルの工数
削減 (%)
TDD時間
有効なテスト
ケース数
トータル
時間
TDD時間
有効なテスト
ケース数
トータル
時間
被験者A 無 15 8 67.5 60 11 92.8125 6.5625 -37.5
被験者B 少 83 8 135.5 121 13 140.6875 6.5625 -3.828413284
被験者C 中 26 6 91.625 52 12 78.25 6.5625 14.59754434
被験者D 多 14 4 92.75 23 13 42.6875 6.5625 53.97574124
平均 - 34.5 6.5 96.84375 64 12.25 88.609375 6.5625 6.811218074
- 15. 検証結果 定性的な結果
メリット
テストの視点を活用することにより,バグ検出に有効な
テストケースが追加される
被験者D:intの桁あふれを検出できるintの最大値を使ったケース
テスト設計をすることにより,対象プログラムの設計の
気づきが得られる
被験者D結果:三角形の成立条件の簡略化
被験者コメント:仕様の理解が進み,TDDでやるべき事が明確化
デメリット
テスト設計に慣れていない開発者が,テストの視点を活
用しても,有効なテストケースが得られない
被験者A, B:intの桁あふれを検出できるintの最大値を使った
ケースが漏れていた
結果,対象プログラムにもintの桁あふれのバグが残った
15