[記事公開日]2015/01/04
[最終更新日]2016/11/30

基本情報技術者試験 6-9(テスト手法)

プログラムに潜む誤りや欠陥をバグという。

バグを取り除くことをデバッグという。

 

テストをすると、通常ゴンペルツ曲線が現れる。
初期段階では、多くのバグが見つかる。

やがて収束に向かう

ゴンペルツ

 

◆テストの順番

システム要件定義・・・⑤

システム方式設計・・・④

ソフトフェア要件定義・・・③

ソフトフェア方式設計・・・②

ソフトフェア詳細設計・・①

プログラミング

 

これら構成の逆の順番でテストします。

①~⑤の順番

 

①ソフトフェアユニットテスト(単体テスト)

ホワイトボックステスト

⇒プログラム内部の構造や論理が仕様書に基づいているか、

開発者が確認する。

「内部構造」に着目する!!

 

・命令網羅

・分岐網羅

・条件網羅

・複数条件網羅

これら種類でテストできる。

 

網羅率(カバレッジ)の高さ:

命令<分岐<条件<複数条件

 

分かりやすく、

「複数条件網羅」から解説します。一番網羅しているテスト手法です。

100%起こりうる出来事を試しています。

 

例)

「a=0 or b=0 」が条件の場合。

a=0,b=0

a=0,b=1

a=1,b=0

a=1,b=1

の組み合わせでテストする。

 

(正・正)

(正・誤)

(誤・正)

(誤・誤)

のことです。全パターンです。

一番厳しいテストといえます。

 

次に、命令網羅。

条件がYesのときだけをテストします。

Yesというのは、

条件式が「a=0 or b=0 」ですから、

a=0,b=0 →Yes

a=0,b=1 →Yes

a=1,b=0 →Yes

a=1,b=1 →No

となります。

答えがYesになる上3つのどれかをテストすればよいです。

Yesにしてみてバグが発生しなければ、命令網羅テストは終了です。

一番緩いテストですね。

 

分岐網羅

Yesの場合と、Noの場合をテストします。

上3つのいずれかと、4つめのNoの場合をテストします。

どれでもいいので、Yesの場合とNoの場合をテストします。

最低でも2パターンは必要ですね。

 

一番上(a=0,b=0 →Yes )と

四番目(a=1,b=1 →No)を選んだ場合は、

二番目(a=0,b=1 →Yes)と

三番目(a=1,b=0 →Yes)がテストされないことになりますね。

 

条件網羅

aやbが成りえる値をすべて試します。

 

ん??

 

つまり、a=0,a=1,b=0,b=1の登場人物4人がそれぞれ一回ずつ登場してくれればいいです。

 

この例では

一番目(a=0,b=0 →Yes )と

四番目(a=1,b=1 →No)。

または、

二番目(a=0,b=1 →Yes)、

三番目(a=1,b=0 →Yes)をテストすればよいです。

※1人1回登場していますよね?

一番目と二番目ではダメです。

二番目と三番目でもダメです。

a=0,a=1,b=0,b=1のどれかが登場していないはずです。

 

★一番中途半端な「分岐網羅」と「条件網羅」の理解を深めてください!!

 

◆ブラックボックステスト

⇒外部仕様に着目し、第三者が実施する。

 

◆「限界値分析」、「同値分割」とは?

1-14(無効値)

15-60(有効値)

61-80(無効値)

があったとする。

 

限界値分析

⇒14,15と、60,61をテストする。

 

同値分割

⇒10,30,70をテストする。

※無効値、有効値、無効値をテストしたいだけなので、

数はテキトーです。5,40,62でも問題なしです。

 

②ソフトフェア結合テスト

①でテスト済みのモジュールを結合させてみる。

モジュール間のインタフェースを検証する!!

 

◆「トップダウンテスト」

上位から下位へ結合させる。

下位モジュールが未完成の場合、スタブを用いる。

※スタブ:テスト用の仮下位モジュール

 

◆「ボトムアップテスト」

下位から上位へ結合させる。

上位が未完成の場合、ドライバを用いる。

ドライバ:テスト用の仮上位モジュール

 

③ソフトフェア適格性確認テスト

 

④システム結合テスト

機能テスト:機能は正しく動作するか

性能テスト:応答時間遅くないか

例外処理テスト:間違ったデータは正しくエラーになるか

負荷テスト::量的な負荷に耐えられるか

操作性テスト:操作性のよさ、わかりやすさ。

 

⑤システム適格性確認テスト

 

◆ソフトウェア保守

⇒障害を是正する。機能を拡張する。

 

◆退行テスト(リグレーションテスト)

⇒修正や変更によって他のプログラムに影響を

及ぼしていないか。