境界値テストについてSoftware2022.01.16ソフトウェアの品質向上のため、ソフトウェアテストの設計についてしっかり勉強したいと思い、「ソフトウェアテストの教科書」という本で勉強しました。2「さまざまなテスト技法」では、様々なテスト技法の解説と注意点が網羅的に書かれていて、非常にわかりやすかったのでおすすめです。テストコードを書いてみます。参考図書では、以下のテスト技法がそれぞれ紹介されています。境界値テストを解説します。※極論すべての入出力をテストケースとしてテストをすればすべてのバグを発見できるのですが、これは現実的には不可能です。そこで、上記のテスト技法を用いてテストケース数を減らし、効率よくバグを発見するというのがテスト技法を導入する目的です。同値クラスとは、同じ動作をする条件の集まりとして定義されます。各同値クラスから最低限1つの代表値を用いてテストを行うテスト技法を、同値クラステストと呼びます。代表値として、以下の値を使うケースが多いそうです。例ロボットの赤外線センサで壁との距離を計測して、一定の距離内に入ったらロボットの速度を落とし(slow)、さらに近づくと停止する(stop)例を考えます。この例ではセンサの読み取り値に応じて、ロボットの状態が以下の表のように遷移します。未満の値を出力しているときは、センサの読み取りエラー等が発生しているはずなので、エラー状態(error)とします。ロボットの状態遷移をソースコードで記述すると、以下のようになります。state;}この場合、それぞれの状態が実現される距離(dist)を代表値としてテストケースを作成すると、たとえば以下のような4つのテストケースを作ることができます。cm「テストケース」の列がテスト入力に対応し、「状態」の列が期待結果(出力)に対応します。仕様書とソフトウェアの内部構造が一致しているとは限らないため、仕様書を元にした同値クラスの分類は不十分である可能性があります。以下のソースコードは上の例題の仕様を満たしたコードですが、分岐が余分に1つあります。以上のテストケースを導入する必要があります。境界値テストは、仕様条件の境界の値とその隣の値に対してテストを行うテスト技法です。境界付近にバグが潜んでいる可能性は高いため、境界値テストは重要です。テストする値は以下の3パターンあります。境界値の1つ上(境界値と同値クラスなら省略可)境界値の1つ下(境界値と同値クラスなら省略可)境界値の隣の値を考えるときは、最小単位に気をつける必要があります。先と同様の例に対して、境界値テストのテストケースを考えます。cm「テストケース」の列がテスト入力に対応し、「状態」の列が期待結果(出力)に対応します。