はじめに
こんにちは。アメリカで独学でエンジニアを目指している者です。
現在、Railsの勉強をしていますが、並行してソフトウェアテスト技法を学ぶことで、Railsチュートリアルの理解度が向上すると考え、テスト技法の勉強も始めました。
その際に学んだ同値クラステストと境界値テストについて、記憶が薄れる前に簡単にまとめておきたいと思います。
ちなみに、テスト技法はUdemyで勉強しています。とても分かりやすいので、テスト技法を勉強したいと思う方はぜひ見てみてください。
ソフトウェアテスト技法
そもそもソフトウェアテスト技法とは何でしょうか。
動画上でソフトウェアテスト技法は以下のように定義されていました。
現実的に実行できるレベルの量までテストケースを削減しつつ、少ないテストケースでも品質を保証できるように最適なテストケースを設計すること
できればすべてテストできた方が良いですが、テストケースが途方もなく増えてしまうため、最低限の労力で適切なテストを行う技術を指します。。
同値クラステスト
まずは以下の例を見てください
if a == 2
# 処理
elsif a == 10
# 処理
else
# 処理
end
上記のようなコードがあった場合、何通りのテストを行えばよいでしょうか。
答えは a = 2、a = 10、a = 4(他にもあります)の3通りです。
a = 4 は3や10以外の任意の数値を選ぶことができ、同様に他の値でも問題ありません。
これにより、すべての処理をテストすることができます。このようなテスト技法を同値クラステストといいます。
境界値テスト
今回も同様、以下のコードをみてください
if a <= 2
# 処理
elsif a >= 10
# 処理
else
# 処理
end
上記のコードがあった場合、何通りのテストを行えばよいでしょうか。
私は a = 2、a = 10、a = 5 の3通りと答えてしまいましたが、正解は a = 1、a = 2、a = 3、a = 9、a = 10、a = 11 の6通りです。
私の答えでも基本的にはすべての処理をテストすることができますが、コードを書いている際に以下のような間違いをしてしまったらどうでしょうか。
if a < 2 # =を書き忘れてしまった
# 処理
elsif a >= 10
# 処理
else
# 処理
end
人は誰しも間違いを犯す可能性があります。このようなミスがある場合、私の答えではすべての処理をテストできなくなってしまいます。
このように、境界値(a = 2 や a = 10)およびその前後の値でテストを行うことを境界値テストといいます。
まとめ
本日はテスト技法の中でも同値クラステストと境界値テストについて記事にしてみました。
同値クラステストは知らなくても自然にできましたが、境界値テストは知らないとテストコードを書けないことがわかりました。
このようなテスト技法の知識を深めることで、Railsで書くテストの質を向上させていきたいと思います。