#9 殺虫剤のパラドックスとは?
きっかけ
来年2がつに受験予定の、JSTQB FLのテキストを読んでいて「殺虫剤のパラドックス」というものが目に止まり、考え方として覚えておきたいと思い、記憶するために記事にしてみようと思いました。
殺虫剤のパラドックスとは
プロダクトに対して、とあるテストをずっと利用していると、テストに対して耐性がついたバグが出てきてしまいます。
炙り出したバグに対して修正を加えることで、一定のテストに炙り出せるバグの種類の限界を迎えるということです。
このことを、害虫を退治するのに、同じ殺虫剤をずっと使っているとだんだん効かなくなってくるのとかけて「殺虫剤のパラドックス」と表現されます。
ソフトウェアテストに関しては、新しい内容のもの常に作っていく必要があります。そうでないと上で挙げた通り、テストに対して耐性が付いたバグが出てきてしまいます。
ですが、リグレッションテストに関しては、この「殺虫剤のパラドックス」が有効に働きます。
リグレッションテストは、ソフトウェアの修正に影響がない項目でもテストを実施します。もし、設計上では影響がないとされている所でも、影響が出た場合に有効なテストになります。
殺虫剤のパラドックスを打破するには
新しい観点を持つことが重要です。例えば異なったパターンの入力を試してみたり、他の部分を狙ったテストを試してみるなど工夫が必要です。
また、ユーザー視点のテストを行ったり、探索的テストを行うのもテストとしての、新しい観点を持つのにとても重要です。
リグレッションテストとは
プログラムの一部分を変更したことで、ほかの箇所に不具合が出ていないかを確認するためのテストです。 「回帰テスト」「退行テスト」とも呼ばれています。
リグレッションテストがあれば、プロダクトを拡大していく際に大きく役立ちます。
また、主にテストの自動化が行われるのがこの「リグレッションテスト」であり、根幹的な機能が動いているだけで、エンジニアにとってのリリース時のストレスを大きく軽減することができます。
somekichiの感想
殺虫剤のパラドックスについては、QAエンジニアとしても永遠に付き合っていかなければいけない課題です。
如何にテストの有用にアップデートできるか、如何に新しいバグの発生を防げるかが大切であり、そこで大事になってくるのはリグレッションテストの自動化だと考えています。
基本的な機能が動いているのを自動で証明し、テストに使っていた労力を新しいテストの観点の発見に利用できます。
また、プロダクトに使われている技術への理解度を上げるのも、テスト観点の発見という意味で、QAエンジニアとして取り組んでいきたい所ですね。