ずっと受けたかったソフトウェアエンジニアリングの授業〈2〉 ...第12章を読んでみた

プログラミング工程

①内容まとめ

プログラミング工程とは、内部設計工程の次に行うもの

コード作成→コードのレビューやインスペクション→指摘事項が無くなったら単体テストへと進む


②認識のズレ、印象

具体的にどういう手順やどういう基準でプログラミング、テストケース作成、テスト実行を行うかが具体的に見えてきた

また、ここまでくると「設計通りに実装する」ことだけに注力することが確認できた

すなわち、その前提条件となるスコープ管理がいい加減だと手戻りが発生するのも改めて納得できた


③不明ワード


【スタブ】(p124)

テストしたいモジュールに戻り値を返すための仮想的な下位モジュール


【ドライバ】(p124)

テストしたいモジュールを起動するために作成するモジュール。仮想的なmainメソッド


【ホワイトボックステスト】(p133)

ソースコードが内部設計書通りの機能を満たしているかをプログラムの流れを意識して行うテスト手法。単体テストで用いられる。必要なテストケースはソースコード全体の5分の1行程度


例: C1カバレッジ = C1で全てのケースをテスト行うこと

→【C0、C1、C2の違い】

void function(...) {
   if ( 条件a1 || 条件a2 ) { // 判定条件A
       命令1
   } else {
       命令2
   }
   if ( 条件b ) { // 判定条件B
       命令3
   }
}

→【C0(命令網羅)】

ステートメント・カバレッジ。全ての命令が一度でも実行されればOK。

例: 上記の場合は、

条件a1=true、条件a2=true、条件b=trueのケース

(命令1)

条件a1=false、条件a2=DC、条件b=DCのケース

のテストケース2つがあれば良い

※DC = Don't Care = どうでも良い


→【C1(分岐網羅)】

ブランチ・カバレッジ。全ての条件分岐で分岐されればOK。条件分岐の分岐先の実行結果に着目している点に注意

例: 上記の場合は、

条件a1=false、条件a2=false、条件b=falseのケース

(判定条件Aの偽の実行結果を得る、判定条件Bの偽の実行結果を得る)

条件a1=true、条件a2=true、条件b=trueのケース

(判定条件Aの真の実行結果を得る、判定条件Bの真の実行結果を得る)

のテストケース2つがあれば良い


※判定条件Aの真を通り、判定条件Bの偽を通るテストケースと判定条件Aの偽を通り、判定条件Bの真を通るテストケースは、上記のテストケース2つで分岐先の実行結果を得ているので行う必要がない


→【C2(条件網羅)】

条件式の組み合わせを網羅すればOK。条件分岐の個々の条件式に着目している点に注意

例: 上記の場合は

条件a1=false、条件a2=false、条件b=falseのケース

条件a1=true、条件a2=true、条件b=trueのケース

のテストケース2つがあれば良い


※行うべき条件式の組み合わせは

a1 = true, a1 = false, 

a2 = true, a2 = false,

b = true, b = false,

の6つ


参考: https://tech.naturalmindo.com/notwork_coverage/


【ブラックボックステスト】(p133)

プログラムが外部設計書通りの機能を満たしているかを、こういう入力があればこういう出力が得られるはずだというUI上のテスト。結合テストと総合テストで用いられる


【境界値分析・境界値テスト】(p135)

単体テストのテストケース作成において、バグの発生しやすい分岐の境界値付近を中心に、C1カバレッジでテストを行う手法


【グローバル変数】(p139)

モジュール内において、関数の宣言外で機能する変数

通常の変数はローカル変数と呼ばれ、関数の宣言内でのみ保持される

ローカル変数を宣言外に跨ぐときは引数あるいは戻り値として値のみを渡すが、グローバル変数はモジュール内のどこからでも変数として呼び出すことができる

この記事が気に入ったらサポートをしてみませんか?