[書籍]ソフトウェアテスト技法ドリル -立体で捉える- その2

試しに、直交表に割りつけてみた。

「今、食べたいラーメン」
腹が減りました。とてもラーメンが食べたいです。でも、どんなラーメンでもいいわけではありません。以下の条件を参考に、食べたいラーメンになるように原因結果グラフを作成してください。

  • 味はしょうゆか塩か味噌のいずれかが良い。普通の胃袋なので1 杯で十分です。
  • 昨日はステーキを食べたので、こってりではないほうが良い。
  • しょうゆか塩の場合は、とんこつベースが良い。
  • 味噌の場合は野菜がたっぷり入っているものが良い。
  • トッピングは絶対に付けたい。金に糸目はつけないので味玉、刻み玉ねぎ、焼き海苔の中から最低1つは付けたい。

  • Ramenoa

    16番目の組合せだけが説明文通りの「食べたいラーメン」だけど、他の15通りで「食べたいラーメン」があるかもしれないー。

    | | コメント (2) | トラックバック (0)

    [書籍]ソフトウェアテスト技法ドリル -立体で捉える-


    HAYST法も、デシジョンテーブルや原因結果グラフ、CFD法なども、どちらも組合せテストの一種ととらえることができますが、目的が違います。HAYST法は、関係ないだろうと思われる組合せに潜むバグを見つけるのが目的。デシジョンテーブルや、原因結果グラフ、CFD法は、関係性そのものが仕様書通りかどうかを確認するのが目的。デバッグ工学研究所の松尾谷先生はこれらを「無則」「有則」という言葉で表現しています。

    有則とは、動作が定義された入力条件の組。定義されているので、テスト空間も限定されたり、閉じたりしている。これらの組合せを効率的・網羅的に洗い出す技法が、デシジョンテーブル、原因結果グラフ、CFD法といえる。

    無則とは、何も影響を及ぼさない入力条件の組。数学的な用語に当てはめると「直交」と言い換えてもいい。この無則に該当するテスト空間は、広大で閉じていないため、万が一バグ(実は影響を及ぼす入力条件の組)がある場合、見つけることがなかなかしんどい。このバグを出現させる入力条件の組を限られた時間で見つけようとする技法が、直交表やペアワイズ(All-Pair)法、HAYST法である。

    また、禁則というのは、動作が禁止された入力条件の組合せであり、原因結果グラフでいえば制約と重なる部分ともいえる(禁則⊂制約?)。「微則」という言葉もあるらしいが、どういう意味なのだろうか。。。

    ==

    と、第4章については一旦ここで中断。
    先日、この本の勉強会の第3回目が開催されたのだが、そこで出題された原因結果グラフの演習問題が以下の問題。

    「今、食べたいラーメン」
    腹が減りました。とてもラーメンが食べたいです。でも、どんなラーメンでもいいわけではありません。以下の条件を参考に、食べたいラーメンになるように原因結果グラフを作成してください。

  • 味はしょうゆか塩か味噌のいずれかが良い。普通の胃袋なので1 杯で十分です。
  • 昨日はステーキを食べたので、こってりではないほうが良い。
  • しょうゆか塩の場合は、とんこつベースが良い。
  • 味噌の場合は野菜がたっぷり入っているものが良い。
  • トッピングは絶対に付けたい。金に糸目はつけないので味玉、刻み玉ねぎ、焼き海苔の中から最低1つは付けたい。

  • 僕が作った原因結果グラフとデシジョンテーブルはこちら(勉強会の時は「一杯」がなかったので追加)。

    Ramenceg

    最初は、トッピングにONE制約をつけていましたが、「最低一つ」だったのでつけるならINCL制約のが適切。でもそうすると、かならず「トッピングあり」が真になってしまって、個人的には気に入らなかったので、制約を外して、トッピングがない場合も出現するようにした。(制約をつける目的は、テスト条件を減らすことであり、実際にINCL制約をつけると列が減ります。)

    でもでも、本当にこれでいいのだろうか?トッピング2個の組合せで、実は嫌いなパターンがあるかもしれない。とんこつベースのしょうゆ味なら、こってりが合うのかもしれない。他にもテストしたくなる。これは、原因結果グラフが食べたいラーメンの説明文の「有則」部分を網羅しているだけで、説明文には見えてこない関係性が気になるということになるだろう。「無則」部分に隠れた定義があるように感じる。

    なので、「有則」を確認する組合せとともに、ここで「無則」に関するテスト設計が必要になってくる。HAYST法をここで適用するのは、単に「無則」を組み合わせるだけではなく、隠れた因子を見つけることにもつながる。勉強会に参加された方も、ぜひ同じ問題を、今度はHAYST法で分析してほしい~。


    ということで、次回はこの問題をドリル本に沿った手順でテスト設計していきたいと思います。まずは、テスト対象の因子・水準の整理をしまーす。

    # んー、自分が作った直交表割付ツールが見当たらない。。。

    | | コメント (0) | トラックバック (0)

    状態の洗い出しへHAYST法かpairwise法の適用

    状態遷移モデルを使ったソフトウェアテストを勉強するためのテキストとしてボーリス・バイザーの「ソフトウェアテスト技法」「実戦的プログラムテスト入門」などを読んでみた。手順の最初に出てくるのが、仕様書からの状態とイベントの洗い出し作業。そもそも状態遷移図や状態遷移表を作ることって設計工程のツールなので、上流工程でのこういった作業が作りこみを減らすことにつながる。

    で、ソフトウェアテスト技法のほうで状態の数を探るところ(第11章 4.2)があるのだけれど、具体例としてエンジンを題材にして、

    ギア   (R、N、1速、2速、3速、4速) = 6要素
    進行方向 (全身、後退、停止) = 3要素
    エンジン (動作中、停止) = 2要素
    トランスミッション (正常、異常) = 2要素
    エンジン (正常、異常) = 2要素

    合計 = 144要素

    という記述がある。ここでいっている不可能な状態への考察って、禁則の考え方じゃないのかしら?だとすると、HAYST法を使って状態を絞り込むことができるのかな。ただ、本質的には同じことだけどHAYST法(=直交表)の特徴である、「どの条件も同じ程度出現する」というのはいらないので、pairwise法のほうが状態数が少なくなるのかな。


    | | コメント (2) | トラックバック (1)

    [サイト]ソフトウェアテスト、HAYST法、などなどのサイト紹介

    2007年に引き続き、2008年もソフトウェアテストの重要な年になるかも?

    ==

    ブログ更新を怠っていましたが、その間にソフトウェアテストのサイトが立ち上がっているようです。

  • Software Testing
  • zohoで作られたソフトウェアテストのまとめ的サイト。主として動的テストに関する記述。体系的でもあり、用語の解説、参考文献なども付記されており、「興味を持ったから参考文献を調べてみよう」といった流れで勉強もできそう。文献以外にもインターえんっ途上に公開されている記事などもリンクされていて、非常にためになります。制御パステストテストツールのサイトもある模様。


  • 直交表によるソフトウェアテスト 『HAYST法』の解説と学習
  • 著者がHAYST法について、職場向けの資料を作成して、それを公開しているサイト。職場向けの資料ということで、非常に細かい説明が掲載されており、図表や演習問題まで揃っている。

    HAYST本とともに、自学用にはとても重要・貴重なサイトであろう。交互作用についての解説も少し載っているのは、HAYST本にはないポイントか。


    2008/02/04追記:

  • ソフトウェアテスト(ブラックボックステスト入門) - ディノオープンラボラトリ
  • ソフトウェアテストの社内勉強会資料を公開しているサイト。ブラックボックステストの「同値分割」「境界値分析」「デシジョンテーブル」「原因結果グラフ」についてのPDFが閲覧できます。pukiwikiの更新画面の原因結果グラフ、僕もためしにやってみました。僕はぱぱっとできないから、4テストケース7テストケースに落ち着くのに少し時間がかかりました。。。汗。続きが楽しみ~。


    2008/02/05追記:

    ちなみに、実際にやってみた感じの画像を貼る予定。(お昼過ぎに作成して一旦アップしたのですが、検算で間違い見つけたので、またやり直し~)

    | | コメント (4) | トラックバック (0)

    禁則は回避しないとテストできないのだ

    カップスターのギザギザはうそ。

    ==

    さてさて、禁則って実際考慮しないとどうなるんだろうか。
    2_2
    サーバーのポート番号/暗号化の指定について考えてみる。わかりやすくするためチェックボックスだけに注目すると、


    1. POP over SSLのチェックボックス

    2. SMTP over SSLのチェックボックス

    3. POPにおけるSSL2.0のチェックボックス

    4. POPにおけるSTARTTLSのチェックボックス

    5. SSL接続で、証明書の検証をしないチェックボックス

    6. SMTPにおけるSSL2.0のチェックボックス

    7. SMTPにおけるSTARTTLSのチェックボックス

    2水準因子が7個でちょうどL8直交表が使えるので、素直に割り付けてみる。そうすると、
    Photo
    このように禁則によってテストケース2,3,4,5,6はありえない条件となってしまう。すなわち、このままの状態でテストを実施しても組合せ網羅率は上がらないのだ。HAYST法はこの禁則回避について言及しており、その打開策として、

  • 相互排他因子融合手法

  • 多層化手法

  • 可変因子手法

  • 詳しくはこの教科書に載っているが、今後ここで解説していければいいな。

    | | コメント (0) | トラックバック (0)

    禁則を勉強して、実践へ その6

    今日はフェデラー決勝戦の再放送だ!!

    ==

    禁則を勉強して、実践へ その1
    禁則を勉強して、実践へ その2
    禁則を勉強して、実践へ その3
    禁則を勉強して、実践へ その4
    禁則を勉強して、実践へ その5
    の続き。

    メールサーバーの設定には下位に2つの設定パネルがある。まずは、メールサーバー - 詳細

    2_2

    まずは、サーバーのポート番号/暗号化の指定なのだが、さっきよりも禁則が複雑。
    2

    POP over SSLまたはSMTP over SSLがONの場合、証明書の検証をしないをONにできるので、このような5つの禁則マトリクスができると思われる。

    4

    割付はまた今度ということで。

    | | コメント (0) | トラックバック (0)

    禁則を勉強して、実践へ その5

    勉強会が終わりました。これからは自分勉強へ。

    ==

    禁則を勉強して、実践へ その1
    禁則を勉強して、実践へ その2
    禁則を勉強して、実践へ その3
    禁則を勉強して、実践へ その4
    の続き。

    1_2
    2_2

    Photo

    サーバにメールを残すかどうかの設定が禁則になっていた。禁則グラフから、この3因子をまとめて、「サーバに残す-一定期間で削除-5日後」「サーバに残す-一定期間で削除-0日後」「サーバに残す-一定期間で削除-30日後」「サーバに残す-一定期間で削除しない」の4水準とみなす。この因子を割り付けたあとに、分解して3因子にすればよい。ということは、

    Photo2


    最終的にはこのようなマトリクスとなる。
    3

    | | コメント (0) | トラックバック (0)

    禁則を勉強して、実践へ その4

    禁則を勉強して、実践へ その1
    禁則を勉強して、実践へ その2
    禁則を勉強して、実践へ その3
    の続き。

    途中まで作ってみた。まずは直交表を変形してみて、
    L45216
    これに禁則以外を割り付ける。
    1_4
    禁則分の割付はまた今度。


    | | コメント (0) | トラックバック (0)

    禁則を勉強して、実践へ その3

    久しぶりの更新。明日の朝は雨かあ。

    ==

    禁則を勉強して、実践へ その1
    禁則を勉強して、実践へ その2
    の続き。

    前回2因子間網羅率が56%になってしまって、どうしたもんかと悩んでいましたが、コメントにもあるとおり、指標としては「抽象化した状態での網羅率」を意識すれば十分であるとのこと。「ソフトウェアテストHAYST法入門」にも書いてありました。

    なので総当り表を書き換えてみるとこんな具合。

    2


    次は、メールサーバーの設定について考えてみる。
    1

    送信メールサーバーはテキスト入力なので、正常系(=smtp.nifmail.jp)正常エラー系(=存在しないドメイン名、smtp.softest.jpとか)空欄として3水準としよう。受信メールサーバー同様に正常系(=pop.nifmail.jp)正常エラー系(=存在しないドメイン名、pop.softest.jpとか)空欄3水準メールアカウントは「softest@nifmail.jp」「softest@gmail.com(ドメイン名と異なるメールアドレス)」「softest@softest.jp(存在しないメールアドレス)」「空欄」の4水準パスワードは「正しいパスワード」「間違ったパスワード」「空欄」の3水準パスワードを保存するチェックボックスは「ON」「OFF」の2水準

    さあ、やっとこさ禁則の登場。
    Photo

    受信したメールをサーバ上に残すONにすると、一定期間置いてから削除するを選択でき、それをONにすると、X日後の値を設定できる。これは禁則グラフ・禁則マトリックスを使ってみよう。禁則とは何かというと、「ありえない水準の組合せ」といっていい。この考慮は非常に重要で、複雑なシステムにHAYST法を適用しようとする場合、この禁則の考慮がされないと、まったくテストができなくなることがある。

    1_2
    2_2

    禁則グラフを作ってみると、最後の日数を指定する因子については若干網羅率・出現率が低下するだろう。

    1_3

    割付については次回へ。もう眠たいので。

    | | コメント (0) | トラックバック (0)

    禁則を勉強して、実践へ その2

    台風きてて、興奮気味。

    ==

    禁則を勉強して、実践へ その1
    の続き。

    直交表はL16にしましょうか。3つの4水準を多水準化してみる。

    4321
    4321_2
    Photo_4

    ぱぱ~とここまで割り付けちゃいました。ちなみに、イタリック体はダミー水準です。でも、これって8水準あった「アイコン」因子を抽象化してるので、2因子間網羅率が激下がり。。。どのくらい低下したかというと、、、

    Photo_5

    あーれま。56%になっちゃった。さてさて、どうしたもんかねえ。

    | | コメント (0) | トラックバック (0)