《テストコード》ブラックボックステストとホワイトボックステストの違いとは

ネットワーク

ブラックボックステスト

ブラックボックステストとは

BLACK BOX TESTING, also known as Behavioral Testing, is a software testing method in which the internal structure/design/implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, though usually functional.

引用:「Black Box Testing」

Black Box Testing - Software Testing Fundamentals
BLACK BOX TESTING, also known as Behavioral Testing, is a software testing method in which the internal structure/design/implementation of the item being tested...

ブラックボックステストは中身の構造は一切考えず、入力と出力の関係を元にしてテストを行う方法です。テストを行うテスターには中身の構造は一切知らせません。ちなみにブラックボックステストと呼ばれる理由としてはテスターは中身を知らないのでテストがブラックボックスのように見えるからだそうです。

筆者
筆者

業務で絶対にやりたくないやつやん…

見つけるエラーの種類

  1. 誤った、正しくないメソッド
  2. インターフェイスエラー
  3. データ構造のエラー
  4. 外部のデータベースのアクセスエラー
  5. 動作、パフォーマンスエラー
  6. 初期化、終了エラー

ブラックボックステストのメリット

  1. テスターにプログラミングスキルが必要ない
  2. ユーザー視点でテストを行うので仕様の矛盾(discrepancies)を発見できる
  3. 仕様が完成すればテストケースをすぐに設計できる

実際のテストの例

テスト対象がWebサイトの場合、テスターが実際にブラウザをつかってWebページにアクセスして、あらかじめ決められたテスト仕様書(test specification)に基づいてマウスでのクリックやキーボードでの入力などをして、出力が正しいかどうかを確認します。

ホワイトボックステスト

ホワイトボックステストとは

WHITE BOX TESTING (also known as Clear Box Testing, Open Box Testing, Glass Box Testing, Transparent Box Testing, Code-Based Testing or Structural Testing) is a software testing method in which the internal structure/design/implementation of the item being tested is known to the tester. The tester chooses inputs to exercise paths through the code and determines the appropriate outputs. Programming know-how and the implementation knowledge is essential. White box testing is testing beyond the user interface and into the nitty-gritty of a system.

引用:「White Box Testing」

White Box Testing - Software Testing Fundamentals
WHITE BOX TESTING (also known as Clear Box Testing, Open Box Testing, Glass Box Testing, Transparent Box Testing, Code-Based Testing or Structural Testing) is a...

ホワイトボックステストはブラックボックステストとは対照でテスターには内部の構造を知らせた上でテストを行います。テスターは任意の入力を選び、コードにコードにつながるパスを実行してこれに紐づく適切な出力を決定することでテストを実行します。ホワイトボックステストを行うにはエンジニアのスキルが必須となります。またホワイトテストボックスと呼ばれる理由はテスターがテストの内容を見えることから、透明の箱のようであるとのことでホワイトボックステストという名がつけられたそうです。

筆者
筆者

業務で書いているテストコードなんかはホワイトボックステストに該当するよ。

ホワイトボックステストのメリット

  1. 画面なしでテストが可能なため、開発早期の段階でテストが可能
  2. テストに抜け漏れが少なく、抜け漏れなくテストをすることが可能

ホワイトボックステストの種類

  1. 命令網羅 (statement coverage)
  2. 条件網羅 (condition coverage)
  3. 複合条件網羅 (multiple condition coverage)

命令網羅 (statement coverage)

定義は「全ての命令を少なくとも1回は実行する」です。以降、javascriptsのコードを使って具体例を提示していきます。

ここでいう命令はif文以降の部分を指しており、この命令を1回でも実行すればいいので以下のテストが命令網羅 (statement coverage)となります。

テストケース

条件1 (num_1 = 20)

条件2 (num_2 = 30)

判定条件(num_1 == 20 || num_2 == 30)

1

1回でも実行すればいいでの別に判定条件の出力は真でも偽でも大丈夫です。

条件網羅 (condition coverage)

定義は「判定条件が真と偽となるようなパターンをそれぞれ1回は実行する」です。

if文が真と偽になる条件でテストを行えばいいので以下のテストが条件網羅 (condition coverage)になります。

テストケース

条件1 (num_1 = 20)

条件2 (num_2 = 30)

判定条件(num_1 == 20 || num_2 == 30)

1

2

複合条件網羅 (multiple condition coverage)

定義は「判定条件の全てのパターンを網羅して、それらの命令を全て1回は実行する」です。

条件が2つあるので全パターンは2^2 = 4 通りあります。よって複合条件網羅 (multiple condition coverage)のテストは以下のようになります。

テストケース

条件1 (num_1 = 20)

条件2 (num_2 = 30)

判定条件(num_1 == 20 || num_2 == 30)

1

2

3

4

筆者
筆者

今回の記事ではブラックボックステスト、ホワイトボックステストの基本について解説致しました。間違い等ございましたらご指摘いただけると嬉しいです。

番外編:働くエンジニアにおすすめアイテム3撰

記事の内容とは別に、日々エンジニアの業務を行う上で役に立っているアイテムを紹介します。どれも実際に使って良いと思ったものだけ紹介していますのでその点はご安心ください。

目の保温マッサージ

毎日使っている目の保温マッサージ機です。使うと翌日の疲労感が全く違います。1日中PCと睨めっこの人は今すぐ購入することを強くお勧めします。

座っている時の負担を減らす

このサポート座布団を購入してからデスクワークの疲労が激減しました。価格も安く購入しやすいのでコスパ最強です。現在職場でも愛用しています。

自宅での作業効率をあげる椅子

ゲーミングチェアを購入して、自宅での作業効率が最大化しました。座った途端集中モードに入ります。家で作業する人は絶対に買っておきたいアイテムです。

エンジニアの基礎知識・教養

別の記事でエンジニアとして知っておくべき技術本についてまとめました。スキルの高いエンジニアは極々当たり前にしっている知識だとおもいますが、そうでない方はエンジニアとして最低限知らないとまずい知識ですのでどこかで購入し、読むことをお勧めします。

タイトルとURLをコピーしました