ソフトウェアテスト

テストするエンジニア

ソフトウェアテストとは、プログラムやソフトウェアが、仕様にない挙動やプログラムの欠陥が無いかをみつけるためのテストのこと。

ソフトウェアテストで見つかった欠陥(バグ)を修正する作業のことを「デバッグ」といいます。

ソフトウェアテストと一言で言ってもその分類は多く、テストにかかる時間と手間も膨大です。このソフトウェアテストを効率的に行うことができるシステムや、ソフトウェアテストしやすいプログラミング言語というのも存在します。

※本ページにはPRが含まれます。

開発におけるソフトウェア開発とは

現代社会においてシステム、ソフトウェアに関わらず生きることは実質不可能です。

パソコン・スマートフォンから身近な家電、日々の暮らしに必要な機器には100%ソフトウェアが組み込まれています。その生活に密接にかかわるソフトウェアの安全を担保するのが、「ソフトウェアテスト」です。

テストといっても、そのシステムや製品を実際に稼働させて、その挙動を調べるだけにとどまりません。そうした「動的テスト」の他にも、プログラムを稼働させないで行う「静的テスト」も種類が多いです。

テストで分かるのは「欠陥があること」だけ

まず知っておくべきなのは、「ソフトウェアテストでわかるのは、ソフトウェアに欠陥があるという事実だけ」だということです。

ソフトウェアテストで見つかったバグを修正することで、そのバグを取り除くことができます。しかし、ソフトウェアに欠陥がないことは証明できません。

ソフトウェアに欠陥がないことをハッキリさせるには、要件がかかわるすべての問題をテストする必要があるのです。バグを見つけるのは容易でも、バグがないことを見つけるためには、多くの労力が求められるのです。

殺虫剤のパラドックス

ソフトウェアテストの7原則で有名なのがこの「殺虫剤のパラドックス」です。

害虫に同じ殺虫剤を使っていると、その害虫はいずれその殺虫剤の耐性をつけるでしょう、これと同じく、ソフトウェアに対して同じテストを繰り返していると、そのテストに対する耐性を身に着けて、バグが見つかりにくくなります。

欠陥を見つけるには、多彩なテストケース、テストデータを準備する必要があるのです。

テストで行う作業はどんなものか?

実際のソフトウェアテストでは、どのような作業が行われるのでしょうか。テストで行う作業について見てみることにしましょう。

実行前

ソフトウェアテストを行う前にも、計画を立てる必要があります。テストに割くリソースの配分や、テストを行うスケジュールの管理、テストの終了基準を設定する必要もあります。テストするソフトウェアのどこをテストするかなども、事前に細かく設定しておくことも大切です。

テスト実行

テストを実行する際に大切なのはやはり、「テストの実行結果」です。テストは一度で終わらない場合がほとんど。繰り返しテストを行う場合には、テストツールを使うなどして、効率よくテストを行う環境を作っておきましょう。

テスト実行後

テストを行ったら、それでハイ終わりともいきません。そのテスト結果を報告し、今回のテストをドキュメントでまとめておいて、次回テスト時参考にできるような努力を行うべきです。

バグゼロの落とし穴

テストを実際に行った際に待ち受けるのが、ソフトウェアテスト7原則の一つ「バグゼロの落とし穴」です。

ソフトウェアテストで見つかったバグをすべてデバッグしたからと言って、ソフトウェアテストはそこで終わりではありません。欠陥をデバッグしたことによるシステムへの影響や、テストによって新たなテストが発生していないかなど、テストによる影響範囲もしっかり確認しておく必要があるのです。

動的テストと静的テスト

ソフトウェアテストは、大きくわけて2つに分類することができます。

プログラムを実行しないで、設計書やソースコードなどを、ソフトウェア製作者以外の人が読んでレビューを行う「静的テスト」。そして実際にプログラムを作動させてグが出ないか見つける「動的テスト」です。動的テストの中には、要件以上の負荷やトラフィックを与えて反応を調べる「ストレステスト」などがあります。

どちらのテストにおいても、ソフトウェアテストを効率的に行うことができる「テストツール」が多数開発されています。ソフトウェアテストに多くのリソースを割きたくない方はぜひ、ツールを使ったソフトウェアテストを行ってください。

まとめ

ソフトウェア開発において大切なのは、開発後プログラムにバグが無いかみつけるための「ソフトウェアテスト」です。

ソースコードの解析や仕様書、設計書の読み込みで欠陥を見つける「静的テスト」の他、実際にプログラムを動かして動作上問題が見つからないか調べる「動的テスト」両面からのテストが求められます。

テストなくしてソフトウェア開発はあり得ません。納品前にどれだけテストに力を注ぐかで、顧客の満足度も全く違うものになるでしょう。