QAコラム

  • TOP
  • QAコラム
  • ブラックボックステストとホワイトボックステスト〜テスト戦略という観点〜

ブラックボックステストとホワイトボックステスト〜テスト戦略という観点〜

はじめに

皆さんこんにちは。GC編集部です。今回は皆様一度は耳にされたことがあるブラックボックステストとホワイトボックステストに関して、Glenford J. Myers(ソフトウェアテスト界の著名人)の考え方を引用し、記載させていただきます。ソフトウェアテストの学習をこれから始めようと思っている方、最近ソフトウェアテストの勉強を始めた方、WEBサービス系企業に勤められていて、なんとなくソフトウェアテストについて気になった方、本コラム記事がそんな皆様のソフトウェアテストを理解する一助となれば嬉しいです。

※本コラム記事では、Glenford J. Myersの「ソフトウェアテストの技法」[1]のロジックとLee Copelandの「はじめて学ぶソフトウェアのテスト技法」[2]、SQuBOK v3 [3] の文書内の説明を参考に用語説明を行っています。そのため、引用箇所意外の箇所に関して、ブラックボックステストおよびホワイトボックステストへの解釈に関してそれぞれの執筆者の意図と異なる表現を含んでいる可能性がありますので、ご了承いただけたらと思います。それぞれの引用書籍に関しては正式名称を本文下に記載しています。

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

さて、ブラックボックステスト、ホワイトボックステストとは、そもそも何でしょうか。どういう分類のテストでしょうか。例えば、テストレベルで考えたときに、単体テストの場合はブラックボックステストでしょうか、ホワイトボックステストでしょうか。

※テストレベルに関しての説明はリンク記事からご参照ください。

ソフトウェアテストに関して学習されている方、開発現場に携わっている方であれば、ブラックボックステストとホワイトボックステストがどういったものかは皆様理解されているかと思いますが、テストレベルとの違いこれらがソフトウェアテストの分類上どういった存在か、と問われると中々難しいのではないでしょうか。

ブラックボックステストとホワイトボックステストはGlenford J. Myersの著書「ソフトウェアテストの技法」の中ではテスト戦略として位置づけられています。

※Glenford J. Myersはソフトウェアテスト界の大御所です。現在のソフトウェアテスト関連の書籍への影響力が非常に大きく、特に「ソフトウェアテストの技法」という書籍は世界で最も読まれているソフトウェアテスト関連の書籍の一つです。

テスト戦略とは、テスト対象によって選択するテスト技法より高次のもののようなイメージで捉えていただけたらと思います。

テスト戦略という言葉は2021年現在のソフトウェアテスト業界において、それほど一般的な言葉ではないですが、私自身はソフトウェアテストを勉強するに際ブラックボックステストとホワイトボックステストの説明として最もしっくりきた言葉です。

以下は執筆者の想像

元来ソフトウェアテストは検証の手段という意味合いが強く、ある種デバッグの一つとして捉えられており、ソフトウェアテスト自体を体系立てて理解する必要もなかったことが原因の一つと考えています。そのため、現場目線での解説の書籍が多く、全体像を理解するための言葉が少ないのです。例えば、ブラックボックステスト自体の説明として「〜のテスト」という説明が多くの書籍で用いられていますが、初学者からすると、それがソフトウェアテスト全体の中でどういった位置に存在するか理解しづらいかなと思っています。そういった意味合いで、テスト戦略という言葉はソフトウェアテストを理解する上での大カテゴリの言葉として非常にイメージがつきやすい言葉であると思います。

※現場レベルでこの文脈でテスト戦略という言葉を使う際にはご注意いただきたいですが、本コラム記事においては、テスト戦略 = ブラックボックステスト&ホワイトボックステストとさせていただきます。なお、JSTQB Foundation第4版シラバス2018対応においては、ホワイトボックステストはテストタイプとして分類されており、ブラックボックステストはテスト技法で紹介されています。そのため、テスト戦略という文脈でのブラックボックステストおよびホワイトボックステストという理解はISTQB準拠の考え方ではないため、ご了承ください。

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

では、ブラックボックステスト、ホワイトボックステストはそれぞれどういったテスト戦略なのでしょうか。

ブラックボックステストは対象をソフトウェアの挙動のみとしたテスト戦略です。さて、ソフトウェアの挙動のみを対象とするとはどういった意味でしょうか。

SQuBOK v3によると、ブラックボックステストは

内部の動作の良否を機能に対する入力と出力という外部に見える現象から判断するもので、要求や仕様書だけをよりどころにしています。

としています[3]。要求・仕様等専門用語が並ぶため、例を上げて考えてみたいと思います。

決済アプリを例にすると、「決済が出来る」というビジネス要求に対して、ある入力が与えられたときにそのビジネス要求を満たしているかどうか確かめる(決済が出来るかどうか確かめる)ようにテストを設計していくものがブラックボックステストということです。

テストレベルで考えると、受け入れテスト、システムテストといった機能側をテストする要素が強い場合に用いられやすいテスト戦略ですが、単体テストや統合テストにおいてもブラックボックステストは用いられます

一方ホワイトボックステストはコードそのものが対象となります。

SQuBOK v3によると、ホワイトボックステストとは

テスト対象のソフトウェアの内部を見てテストの内容を判断する

テストです[3]。

通常ホワイトボックステストは開発者が行うテストで、実施には詳細なプログラミングスキルが必要となります[2]。ホワイトボックステストはプログラムコードを対象として実施するテスト戦略であるため、単体テスト、統合テスト、システムテストのみで受け入れテストは対象としていません。受け入れテストではあくまでユーザーや顧客が触る想定でのテストのため、内部のプログラミングコードが話題となることがないことからもホワイトボックステストが受け入れテストを対象としないことはイメージがつきやすいと思います。

結局ブラックボックステストとホワイトボックステストは両方知るべきなのか

さて、ここまでテスト戦略という言葉でブラックボックステストとホワイトボックステストを括って説明させていただきました。次に、それぞれのテスト戦略についてもう一段階深く考えるため、それぞれの開発現場による担い手を考えてみたいと思います。

哀しいかな、開発者は実際の開発現場においては、ブラックボックステスト、ホワイトボックステストのどちらのテスト戦略もある程度のレベルで理解している必要があります。とりわけ、ホワイトボックステストへの理解はそのままコードの品質にも繋がり、サービス品質にも繋がっていきます

※多くの場合、開発者自身がソフトウェアテストの上流工程も思考しなくてもよいように何らかのテストツールが導入されていることが一般的です。

QAの場面においては、ホワイトボックステストで行われるようなコードを対象としたテストはほとんど終了している状態であるため、ブラックボックステストを取り扱うことが多くなります。QAチームにはテスターと呼ばれる方々がいて、テスターは多くの場合ブラックボックステストの実行のスペシャリストです。

もちろん業種・業態によって役割は様々であると思いますが、WEBサービス系の企業の場合、上記のような役割分担となっている組織が多いのではないでしょうか。

さて、ブラックボックステストとホワイトボックステストに関しての説明でしたが、いかがでしたでしょうか。ソフトウェアテストを理解するためにテストレベルに次いで重要な概念だと私は考えています。テストレベルとテスト戦略の概念を理解出来ると、後はソフトウェアテストの設計技法の話が理解しやすくなると思います。

皆様のソフトウェアテストライフがバラ色になることを願っています。

まとめ

・テスト戦略とは、ソフトウェアテストを理解するための大枠の概念の1つで、Glenford J. Myersが著書のなかで使用した言葉

・ブラックボックステストとホワイトボックステストはテスト戦略である

・ブラックボックステストは対象をソフトウェアの挙動のみとしたテスト戦略で、開発者、QAチームが共に担いうる

・ホワイトボックステストは対象をコードそのものとしたテスト戦略で、主に開発者が担う

文中参考・引用文献:

[1] Glenford J. Myers・長尾真(監訳)・松尾正信(訳)(2006) ソフトウェアテストの技法 第2版

[2] Lee Copeland・宗雅彦(訳)(2005) はじめて学ぶソフトウェアテストの技法

[3] 飯泉紀子・鷲崎弘宜・誉田直美(監修)・SQuBOK策定部会(編)(2020) ソフトウェア品質知識体系ガイド SQuBOK Guide V3 第3版 

関連コラム

私たちと一緒に働く仲間をお待ちしております。

エントリー

エントリーご希望の方は下記へのメール、またはお問い合わせフォームよりお願いします。
弊社担当者よりご連絡させていただきます。

EMAIL:recruit@grandchallenge.co.jp
件名:エントリー希望(氏名)