黒柴的ソフトウェアテスト考 #3

JSTQB(ISTQB)で定義される用語

JSTQB Foundation Level(以降、FL)のシラバスによると、ブラックボックステストは、以下のように記述されている

ブラックボックステスト技法(振る舞い技法または振る舞いベースの技法と呼ぶこともある)は、適切なテストベース(例えば、形式に沿った要件ドキュメント、仕様書、ユースケース、ユーザーストーリー、ビジネスプロセス)の分析に基づく。これらの技法は、機能テストと非機能テストの両方に適用できる。ブラックボックステスト技法は、テスト対象の入力と出力に着目し、その内部構造は参照しない。

JSTQB FLシラバス Version 2018V3.1.J03

ここで気になるのは、「適切なテストベース」という言葉である
「テストベース」は、JSTQBの用語集では以下のように定義されている

テストベース(test basis)
テスト分析と設計のベースとして使用するあらゆる情報。

ISTQB GLOSSARY

では、「テスト分析」、「テスト設計」とは何なのか、という感じで、今まで知らない言葉、認識していても何を示しているのかという自分の中で定義があやふやな言葉を片っ端から用語集で確認していった

その結果として黒柴が理解したのは、下図のような関連性である

ブラックボックステストの概要

ここで、ようやく

  • 要件を元に設計した内容を設計書に整理する

  • その設計書を元に、プログラミングを行い、プログラムを作成する

  • 作成されたプログラムは、要件定義書、設計書をテストベースとしてテスト分析、テスト設計を行った後、作成されたテスト項目でテストを行う

ということが、「ブラックボックステスト」であるということが理解できた
そもそも、「品質」という言葉の定義を用語集で参照してみると

品質
作業成果物が、ステークホルダーの明示的および暗黙的ニーズを満たしている度合い。

ISTQB GLOSSARY

となっている
すなわち、要件定義書、設計書に記載されている内容について、テストされる対象がどの程度それを満たしているのかを確認する作業が「テスト」であり、確認した結果が「品質」なのである

自分がこの業界で働き始めたころに、テストに関する定義で以下のような格言(?)があった
「どんなにテストを積み重ねても、そのプログラムにバグがないことの証明にならない」

当時は、テストを積み重ねれば、どんどんバグが検出・修正されていき、最終的に「バグは無くなった」と言える状態になるでは?と考えていた
しかし、ブラックボックステストの定義を理解したことにより、
「テストはあくまでもテストベースに対して品質を確認する作業であり、テストベースから漏れているニーズ・仕様については確認できない」
ということが分かるようになった
それゆえに、テストベースから漏れているセキュリティホールを突くような「ゼロデイアタック」が有効になるである

ちなみに、JSTQBのFLのシラバスにも、「テストの7原則」として

1.テストは欠陥があることは示せるが、欠陥がないことは示せない
テストにより、欠陥があることは示せるが、欠陥がないことは証明できない。テストにより、ソフトウェアに残る未検出欠陥の数を減らせるが、欠陥が見つからないとしても、正しさの証明とはならない。

JSTQB FLシラバス Version 2018V3.1.J03

と記述されている
これも、「どんなにテストを積み重ねても、そのプログラムにバグがないことの証明にならない」と同義である


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