TOP

トップ

Service

事業紹介

動画配信パッケージ

LINEミニアプリ開発

Shopify開発

デザイン・開発まるっとパック

プロダクト/システム運用保守サービス

Lab型開発サービス

Works

実績

インタビュー

開発実績

Our Products

自社プロダクト

About

会社概要

Blog

ブログ

Recruit

採用情報

News

ニュース

FAQ

よくあるご質問

Contact

お問い合わせ

thumb image

システム開発における『ブラックボックステスト』とは?

ブラックボックステストについてこんな疑問をお持ちの方は多いのではないでしょうか?

  •  ブラックボックステストで何を行うかわからない
  •  ブラックボックステストの目的がわからない
  •  ホワイトボックステストとの違いがわからない

上記のような疑問や不安にお応えしていきます。

今回の記事を読めばこれがわかる!

☑️ 「ブラックボックステスト」の目的
☑️ 「ブラックボックステスト」の役割
☑️ 「ブラックボックステスト」が無いと起こる問題

この記事を書いている私は、IT業界未経験でEnlytに入社、WEBディレクター業務を勉強し始めて1年未満の新米ディレクターです。
ここでは、プロジェクトに関わる中で、実際に経験して感じたブラックボックステストの目的や内容、重要性についてご紹介させて頂きます。

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

ブラックボックステストとは何か?

ブラックボックステストとは「 各機能の入出力が期待通りか検証するテスト 」です。

システム開発のテストにおいては、大きく分けて「ブラックボックステスト」と「ホワイトボックステスト」の2種類が存在します。

ホワイトボックステストが、各機能の内部構造を対象に行うテストとなっており、ブラックボックステストは、システム外部から見て意図した処理が適切に動作しているかの確認とレイアウト・操作性などUI・UX視点でのテストを行うものとなっています。

ブラックボックステストを行う目的は?

ブラックボックステストの目的:

ユーザーの観点から様々な入力を行い、出力が期待通りか検証するために実施されます。

ブラックボックステストの役割:

システムの内部構造を把握せずに、入力値と出力結果が正常に連携・動作・表示しているかを確認する役割があり、一般的にテスターが行うテストになります。
対照的に、ホワイトボックステストは、システムの内部構造が想定通りかを検証する役割があり、一般的には開発者が行うユニット(単体)テストで実施されます。

ブラックボックステストが無いと何が問題か:

ブラックボックステストを実施しない場合、下記のような問題が発生する恐れがあります。

  • レイアウト崩れなどUIの不具合を検証することが出来ない。
  • システム内の各機能を連携させた際に発生する不具合を早期に発見することが出来ない。
  • 操作性や表示が仕様を満たしたものかどうかを確認することが出来ない。
  • 設計漏れを発見することが出来ない。

ブラックボックステストの技法

ブラックボックステストの技法(手法)

ブラックボックステストには大きく2つの手法が存在します。

下記①②のどちらに関しても、

  • 有効同値:正常処理ができる値
  • 無効同値:エラーとなることが期待される値

という概念を前提認識として持っておく必要があります。

技法①:同値分割法

正常処理とエラー処理が正しく行われるかどうかを確認するために、正常(有効) / エラー(無効)のいずれかの結果をもたらす値を「同値クラス」に分類します。

最低各1回は各同値クラスのグループから実行するようにテストケースを作成します。
これによって、テストケースをシンプルにし、効率的に不具合を発見することが可能となります。

例えば、飲酒可能年齢を判別するために、20歳以上の年齢を入力した際は有効、19歳以下を入力した際はエラーというシステムがあったとします。
有効値の確認のために1歳から19歳まで19回のテストを行うと時間がかかってしまう為、下記のように範囲から1つ代表的な数値を選択してテストを実施することで検証にかかる時間を短縮することが出来ます。

  • 有効同値:1歳から19歳の範囲を同値クラスとする→15歳など、年齢を1つ選択して実施。
  • 無効同値:20歳以上の範囲を同値クラスとする→32歳など、年齢を1つ選択して実施。

技法②:境界値分析

バリデーションの最小値や最大値を設定することは認識齟齬を防ぐ上で重要な項目です。
「未満」や「以下」などがそれに当たりますが、境界値分析を利用して有効同値と無効同値を組み合わせるなど、正常処理とエラー処理となる境界の値(境界値)をテストする手法となります。

上記、同値分割法と同じ例を使用すると、有効同値と無効同値の境界となる数値のテストを実施する為、19歳と20歳を入力した場合に有効とエラーが正常に判別されることを確認します。

ブラックボックステストを行うときの準備

漏れがないブラックボックステストを行うためには、下記の準備が整っていることが必須となります。

①仕様書作成と内容の確認

まずは、クライアントと仕様内容について詳細部分まで詰め、認識のズレを取り除いておく必要があります。
仕様書に記載されている情報(ステータスやユーザーの挙動、入力値などの条件を組み合わせた結果、システム上どのような結果が得られるか)が正しいという前提でテストケースの作成とブラックボックステストの実施が行われる為、仕様書の内容に誤りがあると正確な結果が得られません。

設計漏れが出る場合もありますが、仕様書を作成する段階でクライアントと内容の擦り合わせを行い、考えられる内容は全て記載するよう心がけましょう。

②デザインの明確化

ブラックボックステストでは出力される値や表示が正しいかが基準となる為、正常に表示された場合とエラーで表示された場合のUIデザインには明確なものが設定されている必要があります。

上記、仕様書とUIデザインの内容を明確にした上でテストケースの作成を行います。

ステータス・挙動・条件の考えられる場合分けを表にまとめたものです。
条件を漏れなく重複なく洗い出した上で論理的に起こり得る組み合わせを採用し、ここで挙げられた項目を全て実施する形でブラックボックステストが行われます。

ブラックボックステストを終えたあとに確認するべきこと

テストを実施した後にはテストレポートの作成を行います。

該当のスプリントで下記のような項目をクライアントに報告することで、プロジェクトの透明性が上がります。

  • 何件のテストが予定されていたか
  • 何件のテストが実施されたか
  • テスト全体に対してBugが検証された率
  • 修正が確認されたBug
  • 修正がされていないBug

ブラックボックステストを行う上での注意点

一般的に行われているプロジェクトでは、全て上記のテストを実施し、リリース前のBug検知・修正の徹底を行っていますが、テストケースの漏れが原因でBugが検出されたケースも存在します。

仕様書やデザインの詰めが甘かった・記載漏れがあったことに起因することもある為、準備の段階から、外せない・重要度の高い情報は確実に記載出来るようテンプレートを用意する・クライアントへのヒアリングシートを用意するなど、網羅性を高めるように努めましょう。

また、既存の機能に影響がないかを確認するリグレッションテストの実施も行うことで、開発中の機能以外で障害が発生することを防ぐ事前防止策に繋がります。

まとめ

  • 「 ブラックボックステスト 」には「 与えられた入力に対して想定通りの出力になっているか検証することで、要件通りの機能であることを担保する 」という目的がある
  • 「 ブラックボックステスト 」には「 テスト対象の機能に対する入力値と出力結果が期待通りになっているかを確認する 」という役割がある

この役割と目的を果たすためには「 漏れがなく要件を正確に反映した仕様書の作成と、テスト時に使用するテストケースの作成 」に注意して事前準備や「 ブラックボックステストの手法として認知されている「 同値分割法 」「 境界値分析 」を取り入れた内容の実施 」を行っていくことが重要です。

Enlytについて

株式会社Enlytはベトナムに開発拠点SupremeTechを持ち、これまで50以上の開発プロジェクトを行ってきました。ベトナムと日本のグローバルなチームで、数多くのプロジェクトを成功に導いてきました。

Enlytのオフショア開発は、アジャイル・スクラム開発を採用しています。コミュニケーションの透明化を意識してそれぞれの役割で責任の範囲を明確化しています。クライアントも含めたワンチームとして、フラットな関係で開発を進めることができます。

お客様の納得のいくまで、共に開発させていただき、アイデアを最高のかたちにサービス化いたします。

オフショア開発についてのお悩みやご相談がございましたら、下記ボタンより気軽にお問合せください!

バナー画像 バナー画像

他の記事

View More

arrow-forward

システム開発

仕様書とは?書き方や注意したい落とし穴を成功事例と合わせて解説

#コミュニケーション #サービス

テクノロジー

CDP(Customer Data Platform)とは?意味とEコマースでの活用方法

#ECサイト #サービス

テクノロジー

LINE APIで実現できることとは?使い方や活用事例を解説

#LINE #サービス