【ソフトウェアテストの基本】
今後の業務過程で、ソフトウェアテストを行うので予習しました。
もし何かご指摘などありましたら、よろしくお願いいたします。
ソフトウェアテストの目的
・欠陥やバグを検出する。
・要件を満たしているかの確認
・リリース後の品質リスクを見積もる。
ソフトウェアテストで何を重視するかは目的やニーズによっても変わります。
・ソフトウェアテストの基本、この2つ。
・同値クラステスト
・境界値テスト
同値クラステスト
同値とは、同じ動作をする条件の集まりを指す。
同じ処理結果となる入力値、時間、出力結果の集まりなど。
上記の条件の集まりを同値クラスとして、クラスごとにテストをする。
代表値を選んでテストをし、それらがすべて正しいと証明されたら、そのクラスの他の値もすべて正しいと判断できる。
ただし100%絶対ではない。
・同値クラステストをする理由
ソフトウェアテストをする時の大原則として、すべての値をテストすることは不可能。
入力値や条件によって処理方法が決まるが、その数は膨大になるため、すべての条件を一つひとつテストすることはできないから、同値クラスという概念が重要とされる。
・同値クラステストで、なぜ正しいと判断ができるのか。
代表値でテストをした結果、欠陥が見つかれば、同値クラス内の他の値でも同じ欠陥が見つかる。
その逆で、欠陥が見つからなければ、同値クラス内の他の値でも同じ欠陥は見つからないだろうと考える。
このテスト技法は、テスト効率化の1つの方法であると納得する必要がある。
・補足
プログラムの仕様、プログラムコードの構造が異なれば、同値クラステストは適用不可である。
境界値テスト
異なる同値クラスが隣り合っている部分が境界となるので、境界値とする。
仕様条件の境界となる値とその隣の値に対してテストする。
境界値に着目する理由は欠陥は境界に潜んでいる可能性が高いからである。
符号、不等号の誤りやタイプミスなどがよくある。
※そもそも、これらはテスト前のレビューで発見することを意識しておく。
・境界値テストになぜ着目するのか。
ソフトウェアには「隠れた境界値」が存在することがある。
(仕様からは読み取ることができないソフトウェアの内部構造にある境界値)
暖味な仕様表現から境界値には個人の解釈の誤りが生まれやすい。
仕様の思い込みによる誤った解釈でコーディングが進み、欠陥が作り込まれることがある。
例)~より大きい(小さい)、~より多い(少ない)、~を超える など。文書だけの冗長な表現。
※暖味な仕様表現はマトリクスや数直線等で図表化して確認することが望ましい。
・境界値テストの手順
①境界値を見つける。
動作の変わり目等、仕様条件の境界値を見つける。
②境界値を決める。
境界と隣り合う条件や値を境界値とする。
③テストする値を決める。
境界値、境界値の1つ下、境界値の1つ上を決める。
・その他
SIerなどの受託系の会社をはじめ、急な仕様変更や仕様追加などで時間を取られてしまい、すべてのコードを見直すことなく対応をしてしまうことは多々あるそうだ。。
隠れた境界値は、仕様から読み取れないので、テストされず、後になり欠陥を引き起こす可能性がある。
※特に仕様変更が頻繁に発生した場合など、変更内容をコードに反映する際に作りこまれてしまうことが多い。
最後に。
ソフトウェアのテストは地味で決して楽しいものではないかもしれないけど、大事なことなので今後の業務内でも理解を深めていきたい。