ソフトウェアの品質を学びまくる2.0

ソフトウェアの品質、テストなどについて学んだことを記録するブログです。

境界値分析に関する話題にちょっと便乗

 仙台ソフトウェアテスト勉強会のブログコチラのエントリーでは、境界値分析(Boundary Value Analysis)を扱っています。

ameblo.jp

 このエントリーと、境界値分析のon/off、in/outに関するツイートまとめを合わせて読むと、すっきり理解した気になれるのでオススメです。

togetter.com

BS7925-2をチラ見する

 この記事の中でも紹介されているBS7925-2の境界値分析の解説を読んでみました。Annex Bというのが該当します。
 最初に出てくる絵からわかるように、0点~75点という範囲に対して、「0」と「75」を境界とし、その両脇と合わせて各3つを使うとしていますね*1
For each boundary three values are used, one on the boundary itself and one either side of it, the smallest significant distance away, …
 さらっと「on」って書いてますね。境界上そのものの値(75)と、境界を挟んであっち側の値(76)と、重要さには劣るが75から見て76の向こう隣の値(74)ということになります。
 なおここの例題は「75点満点のテストと、25点満点の課題を合わせて成績を算出する」という内容で、2つの境界値をどのように組み合わせるべきかの説明も書かれています。0~75と0~25でそれぞれ6個ずつ境界値があるのだから、単純に組み合わせると36パターンになってしまいますが、実際には12パターン。

秋山さんの演習問題

 テストケースが全組み合わせにならないというのは、上のまとめでも言及されていた、JaSST'11四国での秋山浩一さんのワークショップの資料(pdf)にある演習と、本質的に同じ話と考えています。
 演習の文章を引用します。
二つの正の数a、b(ただし、どちらも1~9までとする)を入力されると、その和を出力するプログラムのテストデータを境界値分析から求めよ。
 この例では、BS7925-2の3値ではなく、「Beizer方式」の2値(上述のまとめ参照)、つまり境界をはさんだ両側2つの値を使うことを前提としているので、a・bともに値の候補が4つずつ、素直に掛け合わせると16のテストデータとなります。下図の◯。

1-1_5d264573

 しかし変数が2つあったとしても、異常系と異常系を組み合わせない。ドリル本にも、「有効な値(正常系)は複数同時に確認できるが無効な値(異常系)については1回に一つずつしか確認できない」とあります。
ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

ソフトウェアテスト技法ドリル―テスト設計の考え方と実際

 

  てことでぼくの回答は以下です。下図の黄色部分。

1-2_3975898c

 ×のついているものは、異常*異常なのでダメ。丸数字の同じものは、テストケースとして等価という意味です。たとえば①は(1, 1)と(1, 9)ですが、a=1という境界を試すためにb=1だろうと=9だろうと、あるいは=5だろうと同じ観点になるということですね。
 で、この件をくっきーさんと答え合わせさせていただいたのですが、JaSSTのページに普通に回答のpdfもおいてありましたw とりあえず考え方は間違ってなさそうです。勉強になりました。

*1:ところでこの絵の、「S」に逆ハットがついている記号って何?イコール含みの不等号というか、●的な意味をもつのでしょうか?