コラム
ソフトウェアテストで何か不具合が発生した際の原因は、多岐に渡ります。特にテストケースの漏れが原因になっていることが多くのソフトウェアテストで見受けられ、それらを効率よく発見するためには、テスト技法について理解を深めることが重要です。 そこで本記事では、さまざまなテスト技法があるなかのひとつである「ブラックボックステスト」についてご紹介します。
ブラックボックステストとは、仕様書などからテストすべき項目を洗い出し、システムの内部構造を考慮せずに実施するテスト技法です。
ソフトウェアテストを行う際、テスト対象やテスト観点、テスト条件などのテストケースを事前に作成します。ブラックボックステストでは、テストケースを作成する際にシステムの内部構造であるソースコードがどのように構築されているのかは考慮せず、テストケースの作成を行い、テストを実行します。
ブラックボックステストと類似した言葉に、「ホワイトボックステスト」があります。両者ともにソフトウェアテストの技法のひとつですが、その実施方法に違いがあります。
ホワイトボックステストは、システムの内部構造が正しいかを確認するテスト技法です。そのため内部構造を理解することができないと実施が困難になるため、多くの場合、開発者自身が行います。
また実施の際、ソースコード内の条件が分岐する箇所においては不具合が発生しやすいので、注意する必要があります。
ブラックボックステストの特徴は、主に2つあります。
・対応できるテストレベル(コンポーネントテスト、結合テスト、システムテスト、受け入れテスト)が広い
・費用対効果が高い
以下でそれぞれをご紹介します。
ソフトウェアテストのほとんどは、ブラックボックステストであるといえます。
なぜなら、テストレベルの段階が進めば進むほどテストすべき機能の組み合わせがより複雑になるため、すべてのシステムの内部構造を把握した状態でのテストは難しくなるからです。
ブラックボックステストはテストレベルのどこでも利用できるため、内部構造を理解していない場合でも、仕様書があればテストを実施できます。
ブラックボックステストに限らずソフトウェア開発の過程において、開発者は技術や知識を要する開発業務に専念し、テストについては開発者以外のメンバーが担当することで、人件費や作業時間の面で高い費用対効果が見込めます。
特にブラックボックステストのように仕様書などを参考にして行うテストの場合、プロジェクトに関わるメンバーでテストの計画や実施まで行うことも可能です。
しかし、メンバーによってスキルや経験にばらつきがあることにより属人的になってしまうこともあるため、不具合の発見に漏れが生じてしまう可能性があります。これにより手戻りが発生するなど、効率的なテストにならず、結果的に必要以上の経費がかさんでしまう事態も考えられます。
そのような事態を防ぐために、プロジェクトの予算や仕様などの状況に合わせたテスト全体の最適化を行い、高品質で効率的なテストを行うソフトウェアテストの代行をする会社に委託するのがよいでしょう。それにより結果的にコストを抑えることができ、かつソフトウェアの品質を高めることもできます。
さらにソフトウェアテストを代行する会社には、ECサイトや業務システムをはじめとするさまざまなサービス形態に対して、不具合が起きやすい箇所に対する知見があります。
そういった点も、依頼を行うメリットのひとつとなります。
ブラックボックステストにおいて使用される機会の多い「同値分割法」「境界値分析」について、ご紹介いたします。
同値分割法は、ブラックボックステストの技法のひとつで、同値領域から代表値を実行するテストケ-スを設計するものです。
有効または無効のような同様の結果をもたらす値を、それぞれ「同値クラス」として分類し、最低1回各同値クラスのグループから実行するように設計するのが原則になります。
これによりテストケースを限りなく少なくし、効率よく不具合を発見するための技法です。
境界値分析もブラックボックステストの技法のひとつで、仕様に定められている条件の境界値を基にして行うテスト技法です。
境界値とは、ある範囲の最小値または最大値などの同値分割した領域の端にあたる値です。
具体的には「未満」や「以下」などが該当し、こういった境界部分は、間違いを引き起こしやすく、不具合につながりやすいため、境界値分析で検証する必要があります。
ブラックボックステストだけでは、不具合の発見が難しいケースも存在します。
具体的には以下のようなケースです。
・仕様自体が矛盾している、もしくは間違っているケース
・仕様変更の際に記載されなかった条件
・非機能的な要件(同時アクセスが起きたときに発生する要件、サーバーやデータベースの状態によって発生する要件などがあります)
こういったことから、ブラックボックステストだけでなく、システムの内部構造に理解がある開発者が行うことの多いホワイトボックステストも組み合わせて実施し、ソフトウェアの品質を担保することが推奨されます。