プログラムのテストのためのスキル

記事
IT・テクノロジー

プログラムのテストのためのスキル

開発したプログラムはテストをして問題がないか確認する必要があります。プログラムのテストをするにもスキルが必要です。この記事はプログラムのためのテストのスキルの話です。


ホワイトボックステストとブラックボックステスト
プログラムのテストの方法として、ホワイトボックステストとブラックボックステストがよく利用されます。 ホワイトボックステストは、プログラムの中身を中心に全ての場所が実行されるようにして行うテストです。ブラックボックステストは、プログラムの中身ではなく、プログラムの中身を見ないで、プログラムの入力と出力(いわゆるインターフェース)に着目してテストを行う方法です。

言葉での説明はこんな感じになりますが、何かわかりにくいですよね?

この2つのテストを実行するのに必要なスキルは結構大きく違います。 ブラックボックステストはプログラムの知識がそれほどなくてもある程度実行することはできます。しかし、ホワイトボックステストは、プログラムの知識は必須になります。複雑なプログラムを作成するスキルを身につけるのに、テストから始めて高度なプログラムを学ぶというのは企業などでは人材育成の一部になっている場合もあります。

ブラックボックステストとは?
ブラックボックステストの定義は説明した通りです。もう少しわかりやすい例を挙げると、電化製品のテストに例えるとわかりやすくなります。

例えば、テレビのテストをする場合を考えてみてください。ブラックボックステストは、利用者が操作できる部分を使って行うテストです。テレビの内側は、利用者はアクセスできないのでブラックボックステストでは触りません。 外からアクセスできるところ、つまりインターフェースです。プログラムの中身はテレビの箱の中に相当します。

つまり、電源が入るかとか、チャンネルが変えられるか、音量が変えられるかなどです。他にも色の調整ができるかなど、外から普通に利用できる機能を中心に動作の確認を行うテストということになります。

こうした、操作は普通にテレビを使うときに行う操作なので、特にテレビの中の仕組みがわからなくてもテストはできることになります。プログラムの場合も同じです。プログラムの中身がわからなくても、どんなデータを入れたらどんなデータが出てくるかを確認するテストなので、少しやり方を覚えれば実行できるというわけです。

別な例として料理も似た事があります。ブラックボックステストに近いのは出された料理の盛り付けや、味を試すという事で、見た目が綺麗か味が美味しいかだけが判断基準になります。どのような素材を使っているか、どのように調理したかはこの場合問題にしないので、料理の専門家でなくても審査ができます。

ホワイトボックステストは専門家が行うテスト!
一方でホワイトボックステストは、より高度な知識が必要なテストです。要するにある程度の専門家でないとできないテストと言えます。

テレビのテストを例にすると、テレビの外側ではなくて、テレビの中身の回路のチェックなどを行うテストです。当然、ある程度テレビの仕組みを知っていないと、テスト計画は立てられません。一応テスト計画ができればテレビの詳細の設計を知らなくてもテスト自体は可能ですが、ある程度テレビの設計をわかっているというのが前提です。

料理の場合も、同じようで単に盛り付けや味付けだけではなく、どのような素材をどのように調理したかを考えながら料理を見るという事なので、ある程度の料理の知識は必須になります。

つまり、ホワイトボックステストは、プログラムの中身を理解している事が必要になります。

ホワイトボックテストは、中身の詳細をみながらテストを行う必要があるので、プログラムの勉強には良い経験です。 プログラムの開発の仕事は難しくても、プログラムの試験を通して高度なプログラミングの技術を学ぶことができるので、ステップの一部としてこうした仕事をするのは長期的には良い経験になると言えます。

どちらが大事か?
ではどちらが大事かということになると思いますが、どちらも大切です。 テレビの例を考えるとわかりやすいかと思いますが、外からアクセスできる範囲でテレビの試験をするには限界があります。概ね通常の使われ方に近い操作の試験は可能ですが、全部の機能をチェックするのには限界があります。

例えば、一部の回路が故障した場合にはどのような事が起きるかのようなテストはテレビの中身を分かった上で、内部のテストをしないとわかりません。

プログラムの場合も同様で、外部から渡すデータとその処理結果以外にもいろいろな処理のテストを行う必要があります。プログラムの場合は、想定される機能の処理は、プログラムの一部に過ぎないからです。エラーや処理が想定した条件にならない場合などの動作を確認するにはプログラムの中身をテストする必要があります。

まとめ
プログラムのテストを行う場合にも、プログラムの知識が必要になります。 特に、プログラムの「中身」をテストする場合は、プログラムの中身を理解するだけの知識や経験が必要になります。一方で、実際にプログラムを作らない場合でも、テストを行うことで高度なプログラムの中身を理解することも可能になります。より上級のプログラマーへのステップアップとしてプログラムのテストは大きな経験になる場合がたくさんあります。

プログラム全体を理解するには、ブラックボックステストでプログラムの全体的な動作やデータの流れを理解して、その上でプログラムの中身のテストをするとプログラムの隅々まで理解できます。

プログラミングの学習はプログラムを作ることも重要ですが、プログラミングのテストをして動作の詳細を理解するのも大きな効果があります。また、プログラムのテストをすると、テストを意識した設計もできるようになるのでより高品質のプログラムの開発に役立ちます。

テストのスキルは軽視されがちですが、プログラム開発では大きなウエイトをしめています。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す