ソフトウェアをリリースする際に必要となるのが、ソフトウェアテストです。仮にソフトウェアテストを行わずリリース後に重大なバグが発見された場合、ユーザーに迷惑をかけるのはもちろんのこと、製造元も多大な損失を受けることになります。この記事では、ソフトウェアテストとはどんなものかといった概要や手順、役割について解説しています。

ソフトウェアテスト(テスト)とは

ソフトウェアテストとは、作成したプログラムが想定通りに動作するか、想定外の操作をした際に問題が起きないか、あるいは設計した仕様を満たしているかを確認する作業のことです。ソフトウェアを製作する過程で、いろいろな種類のソフトウェアテストを実施します。

なお一般にソフトウェアテストというと、ソフトウェアを実際に動作させて仕様通りか確認する「動的テスト」をイメージする方が多いのではないでしょうか。動的テストに対し、プログラムを動作させるのではなく仕様書・ソースコード等のレビューによって行うソフトウェアテストのことを、「静的テスト」と呼びます。ソフトウェアテストでは、動的テスト・静的テストを必要に応じて組み合わせて実行します。

それでは、ソフトウェアテストはどのように行われるのでしょうか。ここではその手順を解説します。

テスト計画

ビジネスステップのイメージ
まずは、テストの計画を立てていきます。

テスト計画書の作成

ソフトウェアテストを行う際は、まず「テストマネージャー」と呼ばれる人が開発チームと交渉し、「こういうテストをしてゴールはここに設定しましょう」といった大枠を決定します。この大枠のことを「テスト計画」と呼び、具体的にはテストを行う目的や範囲、スケジュールなどが含まれます。

テストマネージャーはテスト計画を立案する際に、ソフトウェアテストに関するさまざまなリスクを考慮しなくてはなりません。たとえば「開発が遅延してテストが遅れることがないか」「テスト要員が足りなくなることはないか」などです。テストマネージャーは、これらのリスクをあらかじめ想定した上でテスト計画を立てたり、テスト計画に遅延が生じた際には関係者に調整を図ってテスト計画を変更したりする能力も求められます。

テストケースの設計

次にテスト計画に基づいて、「テスト設計者」が具体的なテストケースを作成します。このときテスト設計者は、テスト計画で定められたテスト範囲の中でどのくらい掘り下げてテストを実行するかや、特殊な機能については重点的にチェックするといった方向性をまとめます。

さらに実際にテストを行う「テスター」に対して、どのようにテストを行わせるかを決定するのもテスト設計者の役割です。テストをスムーズに進めるために、たとえばゲームのテストならキャラクターを無敵にしたり、必要に応じてステージを飛ばしたりといった工夫をするわけです。

テストケースの割振り

そうしてテスト設計者がまとめたテストケースを「テストリーダー」がテスターに割り振り、テスターが実行します。テスターの進捗を管理し、進捗状況に応じてテスター間の割り振りを調整するのもテストリーダーの役割です。

テストの実行

ソフトウェアテスト風景
テストケースの割振りまで完了したら、いよいよテスターによってテストが実行されます。

テスターは未経験者でも担当することができます。それ以外のテスト担当者(テストリーダー等)は経験が必要ですが、基本的にテスターは決められたテストケース を正確に実行すればよいからです。その上でテスターとしての経験を積めば、テストリーダーやテスト設計者、テストマネージャーへとキャリアアップする道もあります。

なおゲーム業界においては、テストリーダーは、テスターにテストケースを実行させるだけでなく、必要に応じてデバッグの実行も指示します。(本来、デバッグとはバクの発見し修正を実行する作業を指します。たいしてゲーム業界ではユーザー視点でゲームをプレイし、その中でバグを発見したり、ゲームの分かりやすさ・面白さを評価したりする作業のことを「デバッグ」と呼んでいます。ゲーム業界では他とデバッグの意味が若干異なるので注意して下さい。)

優秀なテスターを選定して、「あなたはフリーでデバックを実行してください。その際に、こういう点に気を付けて実行してください」といった指示をするわけです。デバッグを指示されたテスターは、前述の通りプレイヤー視点でゲームを進行し、バグの検出の他、ゲームの評価も行います。

報告書の作成

テスト項目の完了後に、その結果をテストマネージャーが報告書にまとめます。その際、テストマネージャーはテストの品質分析も行います。たとえばテストの遅れが生じていた場合は、その遅れがどこで起きているかなどの分析をするわけです。

開発自体が遅れることも頻繁にあるので、テストの進捗が遅れることは少なくありません。原因を数値化して、何が悪かったのか開発チームと振り返りを行い、次回以降の方針も取り決めます。

まとめると、

1.テストマネージャーがテスト計画書を作成
2.テスト設計者がテストケースを作成
3.テスターがテストケースを実行
4.テストマネージャーがテスト完了の報告書を作成

この一連の流れが「テスト」です。

なおテストで行うのは、バグの検出までです。原因の特定とバグの修正は、テスト結果を踏まえてプログラマーが行います。

テストウェアの整理

テストウェアとは、テストの際に必要となるテスト環境・手順・ソフトウェアやテスト結果などの成果物全般を指す言葉です。ソフトウェアテストの終了後は、テストウェアを整理して資産化し、ソフトウェアの流通後にバグが発見された際のトラブルシューティングに利用したり、次回以降のソフトウェアテストに活用したりします。

ソフトウェアテストが行われないとどうなる?

困っている男性
プログラムの開発におけるテストの主な役割は、ソフトウェアが市場に展開される前にバグを発見し、流通後にバグが見つかることによって生じるリスクを減らすことです。それでは、仮に十分なテストが行われなかった場合は、具体的にどんなリスクが考えられるでしょうか。

信頼の低下を招く

市場にソフトウェアが展開された後に大きなバクが発見された場合、そのソフトウェアは信頼を失い市場競争力が大幅に低下します。さらに製作元である企業の信頼も低下し、ブランドイメージに対する悪影響は避けられないでしょう。

経済的・時間的な損失をこうむる

市場流通後にソフトウェアの重要なバクが発見されると、その経済的・時間的な損失も避けられません。

まず経済的なコストとしては、バグに関する問い合わせやクレームの対応をするためのコスト、バグ修正や再テストにかかるコストなどが挙げられます。発見されたバグの重要度によっては、ユーザー企業の業務に支障が生じ損害に対する補償を求められる可能性も否定できません。

一方、時間的な損失とはバクの修正や再テストにかかる時間を指します。開発者がバグ修正に手を取られれば、その分だけ時間を消費してしまうことになります。新たな開発に遅延が生じることにもなりかねません。

信頼の低下や損失を予防するのも、ソフトウェア テストの重要な役割と言えます。

まとめ

ソフトウェアテストとは、想定した通りにプログラムが動作するか、仕様を満たしているかを確認するためのテストです。ソフトウェアテストは、テスト計画の作成、計画書にもとづいたテストケースの設計、テスト項目の割振り、テストの実行、報告書の作成といった順序で行われます。またテストで使用したテストウェアは、資産化して次回以降のソフトウェアで活用します。