開発工程の最後の関門ともいえるテスト工程だが、テスト項目をこなせば終わらせられるものではなく、計画や設計などテストにもスキルが必要である。
ここでは「テスト」の基本概念・原則、質の高いテストを行なうための戦略、実務での留意点を紹介していこう。
「ソフトウェアテストの7原則」を知ろう
テストに関わるうえで知っておきたい「JSTQB(日本ソフトウェアテスト資格認定委員会)」が定めた「ソフトウェアテストの7原則」がある。
まずは「テスト」に対する正しい原則を知っておこう。
ソフトウェアテストの7原則
1.テストは「欠陥があること」しか示せない
全てのテストを終えたとしても欠陥がないことの証明にはならない。
これは、テストパターンの不足でバグを発見できなかっただけかもしれないためである。
2.全数テストは不可能
プログラムの全ての分岐や条件を通るテストを行なうには膨大な時間がかかり事実上不可能で、また、非効率である。
境界値テストや重要度の高い機能などにフォーカスして行なうべきである。
3.初期テストが重要
後工程でバグが発見されればされるほど、修正に対する影響範囲が大きくなる。
バグ修正時、プログラマーがプログラムの内容や影響範囲、発生条件を確認し修正するコスト、修正後テスターが再度テストするコストなど、開発工程まで後戻りをしなければいけない。
そのため、なるべく早くバグを発見することが効率良く進める大きなポイントである。
4.欠陥の偏在
8割のバグはプログラムの2割にあるといわれている。
発見されたバグが人に依存しているのか、機能に依存しているのか、テストを行いながらバグの発生状況を分析する必要がある。
5.殺虫剤のパラドックス
同じ殺虫剤を使い続けると虫にも耐性が付き死ななくなる。テストも同様で、同じテストを続けていては、プログラマーがそのテストだけを回避する方法を見つけてしまったり、新しいバグが発見できなくなったりする。
また。バグ修正後に既存のテストをクリアしても、修正によって新たなバグが発生することは往々にしてある。観点を変えてテスト項目を修正・追加するなどの対策が必要である。
6.テストは条件次第
銀行のシステムとアプリやゲームなどのテストでは、その内容や方法、重点をおくべきポイントは異なる。プロダクトの特性や性質を十分理解し、何が重要か捉えた上でテストを行なうべきである。
7.「バグゼロ」の落とし穴
バグがゼロでも良いプロダクトとは限らない。バグ修正を優先したために動作が遅くなったり、使い勝手が悪くなったりしては本末転倒といえる。
誰にとって、どういう状態のものを「品質が良い」といえるのか、バグゼロが正義とは限らないことも念頭におくべきである。
戦略的にテスト手法を採用する
状況や特性に応じて以下のようなテスト手法を採用することも有効なテストを行なう方法のひとつである。
アドホックテスト(モンキーテスト、ゲリラテスト)
通常、テスト計画やテスト項目を準備し決められたテストを行なうが、アドホックテストではまるで猿にテストを行わせたかのようにランダムな操作で自由にテストを行なうものである。
考慮が及ばない範囲の操作が行われることにより、通常のテストでは見つけにくいバグが発見でき、また、低コスト・短期間で品質の底上げができる。
探索的テスト
テスト設計やテスト項目の準備は行わず、実動作の結果を確認しながら仕様を把握し、状況に応じて以降の実施内容を臨機応変に決定しながら進めるテスト手法である。
事前にドキュメントを用意しないことから、スピーディーに実施できるためアジャイル開発と相性が良く、低コスト・短期間で行えるテストとして活用されている。
戦略的なテストで早期にバグを検出するメリット
前項のようなテスト手法や通常のテスト形態、いずれの手法にしても戦略的にテスト工程を進めることで以下のようなメリットを得ることができる。
手戻りコストを減らすことができる
7原則の「初期テストが重要」の解説のとおり、バグの発見が遅れると手戻りコストが発生する。
この手戻りコストは、プロジェクト計画時には考慮されていないことが多いため露呈しにくいが、予算や時間を圧迫する。
バグをなるべく早期に発見することで効率的に品質の向上に貢献できる。
テスト工程の不確実性を減らすことができる
テスト工程は、開発したソフトウェアの品質次第でテスト工程の明暗が決まる。
バグが多く発見されるか否かはテスト工程に入らなければわからず、スケジュール通り進められるかどうかわからないという不確実性を多分に持っている。
特に後工程ほど影響が大きいため、早期にバグを発見することによって先の計画ができたり、あるべき形で修正が行えたりなど、不確実性やリスクを減らすことができる。
戦略的にスキルを底上げ。テスターライセンス取得という選択肢
テスターにも多くの資格が存在する。ポジションや経験に応じたテスターライセンスがあるため、チームのスキルの底上げや、新人教育という観点からもライセンス取得を視野に入れて損はないだろう。
<テスターライセンス>
- JSTQB認定テスト技術者資格
- IT検証技術者認定試験(IVEC)
- 基本情報処理技術者試験
- ソフトウェア品質技術者資格
その他、世界的な資格も数々存在するため、オフショアやグローバルビジネスを展開している場合はそちらも検討すると良いだろう。
スマホ時代におけるテストで留意すべきポイント
スマホが普及した昨今、アプリ開発やレスポンシブ対応のテストに携わる方も多いだろう。
全ての端末、OSをテストすることは現実的ではないため、端末選定で留意すべき3つのポイントを紹介していこう。
1.市場のシェア
売れ筋端末や利用者の多いOSバージョンなどをマトリックスにし、上位から選定する。
2.サポート必須の端末
顧客の要望やプロダクトとして対応が必須な端末などは外せない。
3.端末スペック
高スペック端末では問題なく動いても、低スペック端末で問題が発生したり、画面解像度、Densityによって問題が発生したりする場合があるため、必要に応じて各レベルで市場シェアも加味しつつ選定を行なう。
テスターというリソースは単価も比較的安いことから軽く考えられがちだが、スキルと経験が必要かつ、テストは重要な工程であることを理解しながら、質の高いテストを進める参考としていただきたい。