WRブログ

ホワイトボックステスト~概要、技法、テスト観点について~

ホワイトボックステスト~概要、技法、テスト観点について~

製品の質を担保するために、ソフトウェア開発でテストはとても重要であり、さまざまな種類があります。
その中の技法のひとつに「ホワイトボックステスト」というものがあります。
ここでは、ホワイトボックステストについて実際の例を交えてご紹介します。

■ソフトウェア開発で行われる、さまざまなテスト
ソフトウェア開発において、テストとは製品の質を左右する重要なものです。
そのため、開発の工程に合わせて、さまざまなテストが行われます。「単体テスト」と呼ばれる、プログラムのモジュール単位で行われるテストから、それらを組み合わせて行う「結合テスト」、
組み合わせたプログラムをひとつの機能として検証する「機能テスト」、プログラムが求められた仕様通りに動くかを検証する「システムテスト」、システムを発注して納品されたときに行う「受け入れテスト」などです。
この他にも、できあがった製品に対して行うスピードテストや耐久テストなどがあります。
そのため、製品開発以上にテストに時間をかけることもあります。
■プログラムのモジュールを検証する「ホワイトボックステスト」とは
ホワイトボックステストとは、システムの内部構造を理解した上で、ロジックや制御の流れが正しいかどうかを検証するテスト技法のことを指します。
そのため、ホワイトボックステストを行うためには、プログラミングに関する知識が不可欠です。主にクラスや関数をみる、単体テストで使われることが多いテスト技法です。

例えば、データ登録を行うシステムを検証する場合、モジュール単位で
「データベースへの接続は正しくできているか」
「入力されたデータは正しいか」
「データ登録は正しくできているか」
「結果画面は正しく表示されているか」…と細かく分けることができます。
これらがきちんと動作し、プログラム的にも問題がないかを確認するのが、ホワイトボックステストです。

■「制御フローテスト」と「データフローテスト」
次に、ホワイトボックステストを行うときに重要な、「制御フローテスト」と「データフローテスト」という2種類の技法について解説します。

まず、「制御フローテスト」というテスト技法についてです。

制御フローとは、ひとつの処理に対してプログラムがどう動くのかを図で表したものです。
本来であれば、全てのフローを検証することが理想ですが、制御フローの数は小規模なプログラムでも膨大になってしまうため、
「命令網羅(テスト対象となるプログラムのすべての命令を一度は実行すること)」、
「分岐網羅(テスト対象となるプログラムに含まれる条件分岐について、そのすべての分岐を一度は実行すること)」、
「条件網羅(テスト対象となるプログラムに含まれる条件分岐について、その条件の組み合わせのすべてを一度は実行すること)」
などで基準を設け、限定的に実施される場合がほとんどです。

whitebox

ホワイトボックステストでもうひとつ重要な技法が「データフローテスト」です。
モジュール内で使用されるデータや変数には、「定義→使用→消滅」というライフサイクルがあり、これをデータフローと呼びます。
それらがプログラムのどこで定義され、どこで使用され、どこで消滅するのか、を検証するのがデータフローテストです。

whitebox2

★まとめ
★1.テストには、各工程に合わせてさまざまな種類がある

★2.ホワイトボックステストとは、システム内部のロジックや制御の流れが正しいかを検証するテスト技法のこと

★3.ホワイトボックステストでは、「制御フローテスト」と「データフローテスト」が行われる

ホワイトボックステストについて、ご理解いただけましたか?バグがひとつも無いソフトウェアを作ることは難しいですが、さまざまなテストを通して、その数を限りなくゼロに近づけることが可能です。
今回ご紹介したホワイトボックステストとは反対に、システムの内部構造は考慮せず、
仕様を満たしているかどうかのみを検証する「ブラックボックステスト」というものも存在します。


【参考文献】:
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』

【参考URL】:
http://qiita.com/ktarow/items/8c3d94d6c21a0c86b799,(参照 2016年7月30日)