Weitere ähnliche Inhalte
Ähnlich wie TDD Boot Camp Tokyo for C++ 2014-01 補講 (20)
Mehr von Takashi Imagire (16)
Kürzlich hochgeladen (12)
TDD Boot Camp Tokyo for C++ 2014-01 補講
- 8. 副作用があるシステム
• Ex. リストのpush_backのテスト(データを追加)
– 上手く実行されたかどうかは、その後のオブ
ジェクトの状態を調べて判断
// setup
std::list<std::string> list;
// exercise
list.push_back(“hello world!”);
// verify
int actual_size = list.size();
std::string actual_text = list.back();
Assert::AreEqual (1, actual_size);
Assert::AreEqual (“hello world!”, actual_text.c_str());
入力
出力
調査
System Under Test
更新
- 13. テストダブルのバリエーション
• テストダミー
– リンクエラーを起こさないための簡単な実装
• テストスタブ
– 現在のテストケースの指示通りに値を返す
• テストスパイ
– 正しいパラメータが渡されたか記録して検証する
• モックオブジェクト
– 呼び出された関数・順序・パラメータが正しいか記録・
検証する。複数の呼び出しに対応
• フェイク オブジェクト
– 省略された実装。直ぐに他の実装を行う為や設定が面
倒・時間がかかる部分を置き換える
• フェイク爆弾
– 呼び出されるとテストを失敗させる。通られると困る場
所のテスト
- 20. 同値クラステスト
• パラメータの値が多くの値を取り扱う場合でも、
実際には幾つかのグループに分けられる
– ex: イベントの受付け
•
•
•
•
•
~ 9:45: 受付されない
9:45 ~10:00: 受付可能
10:00 ~11:00: 遅刻対応
11:00 ~18:00: 追い返し
18:00 ~: 出品・閉会
受付されない
受付
可能
遅刻
対応
追い返し
閉会
• 各範囲内の5つの時間を調べれば、それぞれの機能が働いているか調べられる
– 1秒おきに検証する必要はない
– 同値クラス内のあるテストケースで欠陥が検出された場合に、同じ同値クラス内のど
のテストケースでも同じ欠陥が検出される場合に有効
• 非常に少ない数で状況を抑える事ができる
• 境界時間を間違えていた場合には無力
- 22. 境界値テスト
• 境界値のすぐ上と下をとる
9:44 9:45 9:45 9:59 10:0 10:0 10:5 11:0 11:0 17:5 18:0 18:0
:59 :00 :01 :59: 0:00 0:01 9:59 0:00 0:01 9:59 0:00 0:01
受付 前
中
中
中
中
中
中
中
後
後
後
後
研修 前
前
前
前
中
中
中
中
中
中
後
後
9:45
①
②
18:00
11:00
10:00
③
④
受付時間
研修時間
⑤
- 27. ペア構成テストの作成方法
• 直行表
– 変数を識別する
– 各変数が取りうる値の数を求める
– 列の数が変数の数と同じ以上で、各変数の取りうる値の数に対応する値が、
列に含まれるような直行表を公開されている情報から見つける
– 直行表にテスト問題を割りつける
– テストケースを作成する
• 全ペアアルゴリズム法
– サイトからプログラムを拾ってくる
– 変数が取りうる値をexcelで作成し、テキストで保存する
– プログラムを実行する
- 29. 制御パステスト
•
命令網羅(Statement coverage(SC)(C0基準)
–
•
判定条件網羅(Decision coverage(DC)) /分岐網羅(Branch Coverage(BC))(C1基準)
–
•
–
C1基準を満たすようにCCの組み合わせを選ぶ
複数条件網羅(Multiple condition coverage(MCC)) (C2基準)
–
•
コード上のすべての条件判定において、1つの条件判定の結果が、真になる場合を最低1回、偽にな
る場合を最低1回 実行する
「A or B」のような判定で、C1なら、「A or B」の結果のtrueかfalseを試すが、CCでは、Aがtrueか
falseとBがtrueかfalseの場合を実行する。したがって、「true or false」、「false or tru」と選ぶと、
CCの条件は満たすが、C1基準は満たさないような場合も起きうる
判定条件/条件網羅(Decision/Condition coverage(DC/CC))
–
•
コード上のすべての条件判定を一度は実行する
条件網羅(condition coverage(CC))
–
•
コード上のすべての命令を最低一度は実行する
コード上のすべての条件判定の組み合わせを網羅する
経路網羅(Path Coverage(PC)) (C∞基準)
–
コード上のすべての経路を最低1回は実行する