システム開発

【基本情報】基本情報で出題されるテスト手法を全て解説

お茶ん太
お茶ん太

この記事では、基本情報で出題されるテストの手法について、初心者にも分かりやすく図解付きで丁寧に解説しています!

テスト手法

  • ホワイトボックステストはプログラムの内部構造に着目してテストする方法、ブラックボックステストはプログラムの内部構造を意識せずに仕様通りかどうかテストする方法。
  • 命令網羅は全ての命令を1回以上確認する。
  • 判定条件網羅は分岐が発生する処理において、結果が真の場合と偽の場合の両方をテストする。
  • 条件網羅は分岐が発生する処理において、各条件式が真の場合と偽の場合の両方をテストする。
  • 複数条件網羅は分岐が発生する処理において、起こり得る全てのパターンをテストする。
  • 限界値分析は判定が変わる境目を検証する。
  • 同値分割はそれぞれの判定の中からランダムに1個ずつテストをする。
  • トップダウンテストは上位モジュールから下に結合しながらテストする方法、ボトムアップテストは下位モジュールから上に結合しながらテストする方法。

テストの目的

テストはシステムの開発が完了した後に行われます。テストの目的は開発したプログラムが想定通りに動くのかを確かめることで、プログラム内に存在する欠陥をバグと言います。

テストでは段階的に確認する範囲を大きくします。プログラムの機能毎に行う単体テストから始め、プログラム同士を組み合わせて確認する結合テストを行い、最後にシステム全体で要件を満たしているか確認するシステムテストを行います。

ホワイトボックステストとブラックボックステスト

テストは静的テスト動的テストの2種類に分類できます。静的テストは実際にプログラムを実行することなく、目視でソースを読んで誤りがないかを確認します。一方、動的テストは実際にプログラムを実行することで、処理が正常か確認します。

ホワイトボックステストとブラックボックステストは単体テストで行われる検証方法です。

ホワイトボックステストは静的テストで、プログラムの内部構造に焦点を当ててテストを行います。実際にソースコードを見て変な記載がないか確認したり、命令や分岐などのあらゆるパターンを網羅するようにテストします。

一方、ブラックボックステストはプログラムの内部構造は意識せず、仕様通り動くかどうかを確認します。

ホワイトボックステストとブラックボックステストでは着目している箇所が異なるので、テストのやり方も当然異なってきます。

ホワイトボックステストの網羅性

ホワイトボックステストでは命令や分岐などのあらゆるパターンを網羅するようにテストします。網羅の基準には4種類あります。

命令網羅 全ての命令を1回以上確認する
判定条件網羅
(分岐網羅)
分岐が発生する処理において、結果が真の場合と偽の場合の両方をテストする
条件網羅 分岐が発生する処理において、各条件式が真の場合と偽の場合の両方をテストする
複数条件網羅 分岐が発生する処理において、起こり得る全てのパターンをテストする

それぞれのテストケースについて以下のプログラムを例に考えてみます。例えば、A=3、B=3の場合、「A>5」は成り立たないので偽、「B=3」は成り立つので真となるため②となります。分岐はYesですね。

命令網羅

命令網羅では全ての命令を1回以上実行します
よって、処理1が実行できれば良いので、①か②か③のどれかを実行すればOKです。

判定条件網羅(分岐網羅)

全ての分岐で、結果が真の場合と偽の場合の両方を確認します
よって、分岐1で結果がYesになる①か②か③のどれかと、結果がNoになる④を実行すればOKです。

条件網羅

全ての分岐で、個々の条件が真の場合と偽の場合の両方を確認します
上の例で言うと、「A>5」と「B=3」が個々の条件に該当します。「A>5」が真の場合と偽の場合、「B=3」が真の場合と偽の場合を確認できる、①と④、もしくは、②と③を実行すればOKです。

②と③では、②で「A>5」が偽、「B=3」が真を確認出来て、③で「A>5」が真、「B=3」が偽を確認出来るので、「A>5」の真と偽、「B=3」の真と偽の両方を確認出来ます。

複数条件網羅

複数条件網羅では起こり得る全てのパターンを確認します
なので、①~④の全てを実行します。

ブラックボックステストの限界値分析と同値分割

ブラックボックステストのテストケース作成方法に限界値分析と同値分割があります。例えば、20歳以上60歳以下の場合は支払いが発生するというプログラムを考えます。

限界値分析

限界値分析では判定が変わる境目を検証するようなテストケースを作成します。今回の例では、19歳、20歳、60歳、61歳のテストケースを作ります。

同値分割

同値分割ではそれぞれの判定の中からランダムに1つずつテストケースを作成します。今回の例では、10歳(20歳未満)、30歳(20歳以上60歳以下)、80歳(60歳超え)のテストケースを作ります。

トップダウンテストとボトムアップテスト

トップダウンテストとボトムアップテストは結合テストで行われる検証です。

結合テストではモジュール同士が正常に連携出来るかどうかを検証します。モジュール同士の関係性には、データを渡す側⇔データを貰う側、データを処理する側⇔処理したデータを集約する側、のように上下関係があります。

トップダウンテストでは上位のモジュールから下に下にモジュールを結合しながらテストをしていきます。逆にボトムアップテストでは下位のモジュールから上へ上へモジュールを結合しながらテストをしていきます。

 

スタブ

上位のモジュールは完成しているが、下位のモジュールが完成していない。しかし、上位のモジュールが他のモジュールと連携出来るのか検証したい、という場合があります。この時、下位のモジュールの代わりに使うのがスタブです。

スタブは基本何の処理も行わないか、上位モジュールに返す値のうち1つだけを設定しておいて、正常にデータのやり取りが出来るかを確かめる程度の簡単な処理を仕込むこともあります。

ドライバ

スタブとは逆に、下位のモジュールは完成しているが上位のモジュールは未完成の場合に、下位のモジュールが他のモジュールと連携出来るかを確かめるために上位のモジュールの代わりに使うのがドライバです。

ドライバは上位のモジュールの代わりにテスト用に簡単な処理を実行して下位のモジュールにデータを渡せるようになっています。

基本情報技術者試験での出題例

令和6年度問11

基本情報技術者
科目A 令和6年度問11

階層構造のモジュール群から成るソフトウェアの結合テストを,上位のモジュールから行う。この場合に使用する,下位のモジュールの代替となるテスト間のモジュールはどれか。

ア エミュレータ
ウ スタブ

イ シミュレータ
エ ドライバ

正解と解説

正解は”ウ”

スタブは上位モジュールをテストするために、下位モジュールの代わりに使うモジュールです。

サンプル問題問40

基本情報技術者
科目A サンプル問題問40

モジュールの内部構造を考慮することなく,仕様書どおりに機能するかどうかをテストする手法はどれか。

ア トップダウンテスト
ウ ボトムアップテスト

イ ブラックボックステスト
エ ホワイトボックステスト

正解と解説

正解は”イ”

ブラックボックステストでは、内部構造を考慮することなく、思った通りの動きになるかを確かめます。よって、答えはイです。

令和元年度秋期問47

基本情報技術者
午前試験 
令和元年度秋期問47

エラー埋込法において,埋め込まれたエラー数をS,埋め込まれたエラーのうち発見されたエラー数をm,埋め込まれたエラーを含まないテスト開始前の潜在エラー数をT,発見された総エラー数をnとしたとき,S,T,m,nの関係を表す式はどれか。

ア \(\frac{m}{S}\)=\(\frac{n-m}{T}\)
ウ \(\frac{m}{S}\)=\(\frac{n}{T}\)

イ \(\frac{m}{S}\)=\(\frac{T}{n-m}\)
エ \(\frac{m}{S}\)=\(\frac{T}{n}\)

正解と解説

正解は”ア”

問題文から下のことが分かります。

埋め込まれたエラー:S
埋め込まれたエラーのうち発見されたエラー:m

元からあるエラー:T
元からあるエラーのうち発見されたエラー:(n-m)

Sとmの割合とTと(n-m)の割合は同じはずなので、答えはアになります。

令和元年度秋期問48

基本情報技術者
午前試験 
令和元年度秋期問48

テストで使用されるドライバ又はスタブの説明のうち,適切なものはどれか。

ア スタブは,テスト対象のモジュールからの戻り値の表示・印刷を行う。

イ スタブは,テスト対象モジュールを呼び出すモジュールである。

ウ ドライバは,テスト対象モジュールから呼び出されるモジュールである。

エ ドライバは,引数を渡してテスト対象モジュールを呼び出す。

正解と解説

正解は”エ”

スタブは下位モジュールの代わりに、ドライバは上位モジュールの代わりに使います。

ア スタブはテスト対象から引数を貰い、戻り値を渡す側です。
イ スタブはテスト対象モジュールから呼び出される側です。
ウ ドライバはテスト対象モジュールを呼び出す側です。
エ 正解です。

令和元年度秋期問49

基本情報技術者
午前試験 
令和元年度秋期問49

単一の入り口をもち,入力項目を用いた複数の判断を含むプログラムのテストケースを設計する。命令網羅と判定条件網羅の関係のうち,適切なものはどれか。

ア 判定条件網羅を満足しても命令網羅を満足しない場合がある。

イ 判定条件網羅を満足するならば,命令網羅も満足する。

ウ 命令網羅を満足しなくても,判定条件網羅を満足する場合がある。

エ 命令網羅を満足するならば,判定条件網羅も満足する。

正解と解説

正解は”イ”

判定条件網羅では全てのルートを通るので、同時に全ての命令も実行することになります。よって、答えはイです。

平成31年度春期問47、平成29年度秋期問49

基本情報技術者
午前試験 
平成31年度春期問47、平成29年度秋期問49

ブラックボックステストに関する記述として,最も適切なものはどれか。

ア テストデータの作成基準として,プログラムの命令や分岐に対する網羅率を使用する。

イ 被テストプログラムに冗長なコードがあっても検出できない。

ウ プログラムの内部構造に着目し,必要な部分が実行されたかどうかを検証する。

エ 分岐命令やモジュールの数が増えると,テストデータが急増する。

正解と解説

正解は”イ”

ブラックボックステストではあくまでも入力した値に対する結果しか見ないので、冗長なコードがあるかどうかは確認できません。

平成31年度春期問48

基本情報技術者
午前試験 
平成31年度春期問48

ソフトウェアのテストツールの説明のうち,静的テストを支援する静的解析ツールのものはどれか。

ア 指定された条件のテストデータや,プログラムの入力ファイルを自動的に生成する。

イ テストの実行結果を基に,命令の網羅率や分岐の網羅率を自動的に計測し,分析する。

ウ プログラム中に文法上の誤りや論理的な誤りなどがあるかどうかを,ソースコードを分析して調べる。

エ モジュールの呼出し回数や実行時間,実行文の実行回数などの,プログラム実行時の動作特性に関するデータを計測する。

正解と解説

正解は”ウ”

静的テストでは実際にプログラムを実行しません。なので、テストデータを作成する等、プログラムを動かさないと意味を成さないツールは静的テストを支援するツールにはなり得ません。

平成30年度春期問48

基本情報技術者
午前試験 
平成30年度春期問48

ブラックボックステストのテストデータの作成方法のうち,最も適切なものはどれか。

ア 稼働中のシステムから実データを無作為に抽出し,テストデータを作成する。

イ 機能仕様から同値クラスや限界値を識別し,テストデータを作成する。

ウ 業務で発生するデータの発生頻度を分析し,テストデータを作成する。

エ プログラムの流れ図を基に,分岐条件に基づいたテストデータを作成する。

正解と解説

正解は”イ”

ブラックボックステストでは同値分割や限界値分析を行います。

平成30年度春期問49

基本情報技術者
午前試験 
平成30年度春期問49

プログラムの流れ図で示される部分に関するテストデータを,判定条件網羅(decision coverage)によって設定した。このテストデータを複数条件網羅(multiple condition coverage)による設定に変更したとき,加えるべきテストデータのうち,適切なものはどれか。ここで,( )で囲んだ部分は,一組みのテストデータを表すものとする。

・判定条件網羅によるテストデータ
(A=4,B=1),(A=5,B=0)

ア (A=3,B=0),(A=7,B=2)

イ (A=3,B=2),(A=8,B=0)

ウ (A=4,B=0),(A=8,B=0)

エ (A=7,B=0),(A=8,B=2)

正解と解説

正解は”エ”

今、
・(A=4,B=1) ⇒ (偽、偽)
・(A=5,B=0) ⇒ (偽、真)
のテストデータが存在するので、(真、真)と(真、偽)のテストデータを作成すればよいことが分かります。それを満たすのはエだけなので、答えはエです。

平成29年度春期問49

基本情報技術者
午前試験 
平成29年度春期問49

流れ図において,判定条件網羅(分岐網羅)を満たす最少のテストケース数は幾つか。

ア 1
ウ 3

イ 2
エ 4

正解と解説

正解は”イ”

「X>1」の分岐で真と偽を、「A=2 or B=0」の分岐で真と偽をそれぞれ確認出来ればOKなので、例えば、{X,A,B}={2,2,1}と{0,0,1}のデータを作成すれば条件を満たせそうです。よって答えはイです。