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

インフラ

ブラックボックステスト

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

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

筆者
筆者

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

エンジニアにイチ押しアイテム

目の疲労回復グッズ

ディスプレイをずっと見続けた時の目の疲労感ってすごいですよね。血行が悪くなっているというかズーンて重い感じがして、ひどい時は気持ち悪くなったりした経験をもつ人も多いのではないのかと思います。目って今後生きて行く上で非常に大切なものですし、ちゃんとにケアしていきたいものです。そこで私が日常的に使っている目のマッサージアイテムを紹介します。

アイマッサージャー 二年間保証 最新グラフェン加熱技術 目元マッサージャー

私は寝る前必ず使用しています。15分間目を40°で保温&マッサージしてくれて、本当に極楽の時間です。その後は快眠で、翌日の朝の目の疲労度が全くなくなりました。Amazonのレビューがこの商品の良さを物語っています。

筆者
筆者
303件レビューがついてて、評価が4.7と購入した方の殆どが「非常に満足」しているコスパ最強!超オススメのアイテムです!

コスパ最強20㎏×2ダンベル

実は筋トレって記憶力を向上させる効果があるんです。米国のジョージア工科大学が筋トレを20分間行なうと、記憶力が10%ほど向上するこという研究結果を最近発表したほどです。私はここのところ、老化からか体型が崩れてきたのに危機感を覚え購入。実際に筋トレしてみると筋トレ後のすっきり感がやばい。勉強の集中力も確かに上がるような気がしました。また、腕立てとかじゃ鍛えにくい肩なんかもパンパンになるので、男らしい体型を手に入れたいなと少しでも思っている人は買うべきアイテムだと思います。中でも以下のダンベルはAmazon内での評価が非常に高いので迷ったらこれを買いましょう。

ダンベル 【最新進化版・3in1】Wolfyok 純鋼製アレー アレイ 20kgセット(10kgx2) 30kgセット(15kgx2)
筆者
筆者
マシンを使って筋トレすると自重の筋トレ系、腕立て・腹筋・背筋が だいぶ楽になるので習慣化しました!また積極的にランニングしたり食生活を気に掛けるようになるので購入することをお勧めします! (体験談)

座椅子DIYで疲労防止

長い間椅子に座って作業することはエンジニア、理系学生にとってはつきものだと思います。ですが、この椅子の性能によって作業後の疲労感が全く異なるということを意識したことがありますか?私は以下の2つのアイテムを使って座椅子をゲーミングチェア並みにアップデートしました。おかげで姿勢が安定し、作業後の疲労感も減りました。また何より集中して作業に打ち込めるようになりました。

IKSTAR クッション 低反発 座布団 第五世代 オフィス IKSTAR クッション 低反発【メーカー直営・1年保証付】 ランバーサポート
筆者
筆者
座椅子にホールド感が出て、座り心地が格段に向上します。長時間座っていても疲れにくくなるので引きこもりにならないように注意しましょう!作業に夢中で1日中座りっぱなしだった経験があるので...

コードの可読性を高める

自分が大型ベンチャーの内定インターンに初めて参加した時、周りの超優秀なエンジニアの方々のコードをみて自分のコードの汚さに絶望しました。その時自分のマネージャーに勧められた本がリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニックという超有名な一冊です。美しいコードを書くためのエッセンスが凝縮されています。エンジニアを職種として選ぶ方は読まない理由がない一冊です。自分もこの本を読んで、かなりコーディングスキルが向上したと感じています。

ネットワークの基礎を押さえる本

ITの基礎がおぼつかなくて、ネットワークの話についていけなかった時、早稲田大学のエンジニアの友人が勧めてくれたのがネットワークはなぜつながるのか 第2版 という本です。ハードウエアから、理論までネットワークの基礎が非常にわかりやすく解説されています。「TCP」「IP」「リゾルバ」という用語を説明できないエンジニアは間違いなく買ったほうがいいです。自分は知らなくてバカにされたので。笑

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