今回はソフトウェアテスト勉強会~やってみよう!組み合わせテスト~と題しまして実施しました。
昨年の12月15日に秋山さんを招いて実施した組み合わせテストの復習会も兼ねています。
今日のおやつはシュークリーム!!
甘いもの食べると幸せになります。
今回は初めての方が3名。嬉しいですね ><
今回は前回の復習会も兼ねてますので、同じ問題は使わないようにしました。
まずは恒例のポジショニングマップで直交表やオールペア法の位置を確認。
これ毎回やってますけど、重要だと思います、ハイ。
ブラックボックスで網羅的なんですね。
JSTQBの定義を見てみますとALのほうにありました。
*********************************************************************
直交表、オールペア表
該当する因子や変数、とりうるオプションや値を識別し、これらのオプションまたは値について、
単一、二つ、三つ、またはそれ以上の組み合わせで識別する。
JSTQB ALシラバスより抜粋
*********************************************************************
うーん 難解である。。。
ところで組み合わせテスト技法というのは二つの定義があるようです。
組み合わせテストという単語が出た場合は、どちらの定義で話しているのか気をつけて話してみてください。前回の秋山さんの講義では①の定義を使っていました。
今回のブログでは②の定義を使っていきます。
どちらにしても無則(仕様上ロジックが無い)の組み合わせで使うというのは同じになります。
①広義の組み合わせの定義
組み合わせ
-有則
-デシジョンテーブル(CFD法、原因結果グラフ)
-無則
-直交表(HAYST法)
-オールペア法
②狭義の組み合わせの定義
組み合わせ
-直交表
-オールペア法
参考 http://gihyo.jp/dev/feature/01/sp-test/0001
今回はフリーのツールであるPictMasterを使って無則の組み合わせのテストケースを考えていきます。他にオールペア法のツールとしてはQumiasがあります。
まずは最初に組み合わせテストの例を出しました。
*********************************************************************
FreePowerPointの文字設定には飾りには、フォントが4種類(MS ゴシック, MS明朝, メイリオ, HG行書体)、太文字、斜体字、下線、影つきがあります。
このときの組み合わせのテストケースを考えてみましょう。
*********************************************************************
PictMasterを使用し、2因子間の組み合わせを保証した場合は9通りになります。
もし総当りを実施すると、64通りです。これくらいの数であればやったほうが良いというマネージャーは多いのではないでしょうか?
でも本当に総当りする必要ありますか?
これは自分の意見ですが、自分たちの製品のドメインや、コードの作り、プログラマのレベルに応じてどこまで担保するか決めたほうが良いと思っています。総当りの数によらず2因子間を保証するというような”筋が通っているテスト方針”がいいなぁと思います。
簡単な例を見せた後に、組み合わせテストのポイントを3つ伝えました。
組み合わせテストのポイント①
テストの目的は、ロジックがない(無則)はずの組み合わせがお互いに影響を及ぼし、特定の組み合わせにより生じるバグを見つけること。
ソフトウェアの作りによっては、えぇぇぇ こんなところからメソッドを呼んでいたということがありますよね?
組み合わせテストのポイント②
基本となるのは2因子間の網羅率。直交表もオールペア法も2因子は保障されています。もし3因子もある程度カバーしたいのであれば直交表、そうでなければオールペア法の方がテストケースが少ないぶんメリットがあると思います。
組み合わせテストのポイント③
組み合わせの深さ(2因子→3因子→4因子)より因子の考慮漏れをなくすことに重点を置く。因子の考慮は難しいですね。
これは前回の秋山さんの講義でも出てました。
では早速問題を!
*********************************************************************
問題①
ラーメンの自動券売機のチケット印刷のテストケースを作成します。
自動券売機で選択できる項目は以下の項目になります。
スープ: 「みそ」、「塩」、「しょうゆ」、「とんこつ」
麺 : 「細麺」、「中太麺」、「ちぢれ麺」、「太麺」
ゆで方: 「コナオトシ」「ハリガネ」「バリカタ」「カタ」「ヤワ」「バリヤワ」
トッピング: 「チャーシュー」、「ゆで卵」、「高菜」、「のり」
※ただし、トッピングはひとつまで
① 全ての組み合わせのテストケースだとどれくらいになるでしょうか?
ざっくりと暗算で見つもってください。
② PictMasterを使って、テストケースを出してください。
③ トッピングに「紅ショウガ(とんこつのみ)」を追加してください。
*********************************************************************
PictMasterの使い方で戸惑っている人がいましたが、結構サクサク進んでいたと思います。
ちょっと気になるのは仕様の「トッピングはひとつまで」というところですね。
水準として「なし」を入れるかどうか気になるところですね。
実際の業務のときは聞かないとマズイですよね。
① 4 * 4 * 6 * 4で384ケースですね。
② PictMasterでケースの数を出したところ、28ケースになりました。
③ 紅ショウガを追加したケース数は30ケースになりました。
2因子間の組み合わせだと②と③の数の差異が少ないですね。これも特徴だと思います。
その後、因子と水準を炙り出すラルフチャートの説明をしました。
秋山さんも言っていましたが、「ラルフチャートは組織の知恵を引き出すもの」です。
個人で書き出してもらったあと、グループでレビューをしてもらいました。
やっぱり自分では思いつかない考え方など聞くと面白いですね。
詳細ラルフチャートは以下のリンクにありますので是非見てください。
www.hayst.com/Documents/RalphChart.pdf
*********************************************************************
問題②
ラーメンの自動券売機のラルフチャートを作成してください。
機能概要:
□使えるお金は1000円札と100円、50円、10円。
□みそ、塩、しょうゆが、600円、とんこつが750円。
□スープ、麺、ゆで方、トッピングを選択し、「購入」ボタンを押す。
(選択できる項目については、下記参照)
□印刷し、発券する。
□おつりがある場合はおつりを出す。
スープ: 「みそ」、「塩」、「しょうゆ」、「とんこつ」
麺 : 「細麺」、「中太麺」、「ちぢれ麺」、「太麺」
ゆで方: 「コナオトシ」「ハリガネ」「バリカタ」「カタ」「ヤワ」「バリヤワ」
トッピング: 「チャーシュー」、「ゆで卵」、「高菜」、「のり」
※ただし、トッピングはひとつまで
*********************************************************************
面白かったノイズは、「蒸気」、「地震」、「濡れたお札」。
面白かったアクティブノイズは、「ひもつきコイン」ですね!!
さて、PictMasterの使い方とラルフチャートの使い方が分かったところで、総合問題に行きます。
出ました!Goコン会計っ!!今回は少しバージョンアップしています。
*********************************************************************
問題③
App Storeで350円で販売されているiphoneアプリの「Goコン会計 Ver.2」のテストケースを作成します。
① 因子と水準を洗い出してください。
② ラルフチャートを書いてください。
もし新しい因子があれば、追加してください。
→ 因子と水準をグループで確認
③ 組み合わせテストをPictMasterで作ってください。
*********************************************************************
ソフトウェアエンジニアとしては、初期値や異常系が気になる人が多い感じでした。初期値の確認や異常系は直交表やオールペア法の範囲外ですので、目的にあったテスト技法を使うようにしましょう。
隠れた因子のイメージとしては、iphoneのタイプ、電池残量、電波などを考えていましたが、なかなか出ませんでした。確かにラルフチャートのどこに出るんでしょうか??
ソフトウェアのノイズとしては主に外乱を取り扱うということで、ノイズから出ると思うのですが、、個人的にはちょっとしっくり来ないですね。
ということで、ラルフチャートのフォーマットを少し改良して、Environment(環境)をひとつ付けてみました。
例えば、CPU、メモリ、画面サイズや、Webアプリであれば、OS、ブラウザなどがNoiseと言われたときより想像しやすい感じがしました。どうでしょうか?
ということで、今回も無事に終わりました!!
参加してくれた皆さん、本当にありがとうございます。
是非、自分達の業務に生かしてみてください。


