世の中には多くの製品が存在しますが、現在ではその多くにソフトウェアの存在が欠かせません。
ソフトウェアというと最初にイメージするのはプログラミングという方が多いと思いますが、実際に製品として世に出す前にはソフトウェアテストを行い、期待通りに動作するかを確認する作業があります。
製品にもよりますが、例えば車であればソフトウェアに欠陥があると人命にかかわる可能性もあるので、そのような欠陥を発生させないためにも欠かせない工程となります。
では、ソフトウェアテストを行えば欠陥の無い完璧な物ができるかというと、そうではありません。ソフトウェアテストで欠陥をゼロにすることはほぼ不可能です。
では、ソフトウェアテストでどのようなことが可能なのか、理解しておくべきガイドラインがありますのでご紹介いたします。
ソフトウェアテストの7原則
原則1 テストは欠陥があることは示せるが、欠陥がないことは示せない
テストをすることで欠陥があることはわかりますが、欠陥がそれ以上ないことは証明できません。
テストを実施した内容に対して結果的に欠陥が見つかるだけで、テストできていない内容に対しては見つけることはできません。
そのため、テスト内容は十分に検討する必要があります。欠陥が全く検出されない場合は、正しくテストができていない可能性も考える必要があります。
原則2 全数テストは不可能
テストを漏れなく全て実施することは、現実的には難しいです。
テストパターンも膨大になり、その分コストもかかることになります。
テストするにもコストはかかりますので、限られた資源の中でいかに有効なテストを行うかが重要となります。
仮にコストをかけ過ぎるとその費用は製品の価格などにフィードバックされ、商品として競争力を失うことになります。
売れなければ開発した意味や費用の回収も困難になります。
原則3 早期テストで時間とコストを節約
テストは早期に行うことで早い段階で欠陥を見つけることができ、開発の手戻りも抑えることができます。
結果的にコストも少なくすることができるメリットがあります。
開発の設計段階からテストを行う目線で関わり、欠陥を抑制していくなどの対策も検討する必要があります。
原則4 欠陥の偏在
欠陥は特定の機能に偏る傾向があります。
そのため、今までの開発経験からどこを重点的にテストすべきか方針を検討し、効率的で効果的なテストを検討する必要があります。
新しい機能なのか、既存機能の流用なのかなどを考慮し、開発効率を高めることが重要です。
原則5 殺虫剤のパラドックスにご用心
「殺虫剤のパラドックス」とは、同じ殺虫剤を使い続けると虫が耐性を持つようになり効果が薄くなるということです。
ソフトウェアテストでも、同様の考え方が重要になります。
同じテストを行い続けていると、そのテストでは新しい欠陥は見つけられなくなります。
テスト項目やテスト方法は定期的に見直す必要があります。
原則6 テストは状況次第
ソフトウェアの性質によって、テストの実施内容や方法は変えていく必要があります。
自動運転など車のソフトウェアであれば一つの欠陥が人命にかかわる危険性があるので、安全が最優先となるよう、十分にテストを行なう必要があります。
スマホゲーム開発などの場合は、ユーザーの反応を見ながら何度もアップデートして行く必要があります。
そのため、テストは重要なポイントは抑えつつ効率的に実施していく必要があります。
原則7 「バグゼロ」の落とし穴
欠陥が無くなっただけ、機能が正常に動作するだけではユーザーの期待を満たすことはできません。
操作性やパフォーマンスなど機能的な部分だけでなく、非機能要件も満たす必要がありますので、欠陥がないことに満足してはいけません。
参考: JSTQB「テスト技術者資格制度 Foundation Level シラバス Version 2018V3.1.J03」
上記のような原則について知っていただき、世の中に存在するソフトウェアを用いた製品がどのような考え方で作られているのか、ソフトウェアテストについて少しでも興味や理解を持っていただければ幸いです。