はじめに
現在、アプリ開発者としてプロダクトの持続的な成長や
ユーザーへのコミットに寄与するためにも、
SDLC全体を見渡して開発をすること、
および、それにはテストに関する体系的な知識が必要だと考え、
それを効率良く学べるJSTQB Foundation Levelの資格試験の勉強をしており、
そこでのインプットを記事にしたいと思います。
今回はその中でも「テストの7つの原則」の一部について
記事にしたいと思います。
なお今回記事は
全数テストは不可能
こちらの原則について記事にしてみようと思います。
全数テストは不可能とは
皆さんがテストをするのはどんな動機からでしょうか?
『テストを完璧にやって、欠陥がないことを示したい!』
『そうでもしないと怒られる。。。😱』
テストをする動機の背景にはこんなものもあるかもしれませんね💦
人間は心配性な生き物です。
テストを重視するような方は特にそうでしょうね。
すべてのテストケースをpassして安心材料を得たいですよね🙂↕️
ただとはいえ、現実的には様々な理由
(例えば人手の問題、費用の問題、時間の問題などのリソースから来る問題)により、
テストをする際には制約が生まれてしまいます。
そしてこの制約の中で
テストケースやテスト対象にリスクなども鑑みて優先順位を付けたり、
テスト技法などを用いて効果的かつ合理的にproductの品質を保証
していかねばなりません。
この考え方を『全数テストは不可能』と言います。
具体例で見てみよう
具体例も交えて考えてみましょう。
例えば『購入金額が5000円以上になったら送料が無料になるECサイト』を開発しているとします。
そしてこのECサイトで扱う金額は全て正の整数からなるとします。1
この時、上記の振る舞いをテストにより保証してあげるにはどうすればいいでしょうか?
『1円以上の金額を全て納得するまで入力して検証する』
もちろんこの方法でもテストは出来ますが、現実的には不可能ですよね。。。💦
でも上記の振る舞いを保証したいとしたら、
もっと良い方法でやってみたいですよね🤔
テスト技法を導入しよう
そこでこんな考え方でテストをしてみましょう。
『入力値として4999円と5000円、5001円の時だけで検証してみよう』
そう、さっきの振る舞いで重要なのは
『5000円以上だと送料が無料になる』
という条件ですよね。
ということは、この金額とその近辺の金額を入力して振る舞いを検証すれば、
より上手にテストができて、品質を保証できますよね。
こんな感じで、全てをテストすると膨大なリソースを費やしそうな場合は
優先順位付けやリスクのある部分からテストをしたり、
テスト技法を用いることでより効率的にかつ合理的にテストをすることで
テストで実現したかったことが叶えられますので、
テストの際にふと思い出してみると良いかもしれませんね☺️
参照
-
本当にそうなっているか否かを検証することもまた重要ですが、今回の記事のテーマからはズレてしまうので、ここではその方法などは割愛いたします。
詳しくは「ソフトウェアテスト技法ドリル」に解説がありますので、ご興味のある方はご一読をおすすめいたします。 ↩