Mindmapを利用するシナリオ洗い出し。


こんにちは。
先の投稿にはシュード・コードでTCを設計する方法をしめしましたがそれはTDD(Test Driven Development)を狙って作ったものでした。

今度は開発者の観点ではなくて、上流工程のテスト設計をする方法の1つを紹介します。

上流工程なので、一応画面をみながらテスト設計を考えてみましょう。

画面より考えられるテスト視点は二つです。
1. 環境と状況(Environment or Context)
2. Action

環境と状況(Environment or Context) Action
上の画面はモバイル・アプリなので、環境また状況は次のように想定しました。
1. ネットワーク切れ、また反応が弱いネットワーク
2. 言語環境:日本語、中国語、英語
対象はログイン画面です。
ログイン画面で洗い出されるActionは次のようです。
1. メール・アドレスを入力する(また空欄に残る)
2. メール・アドレス欄でメール形式ではない文字を入力する。
3. 未登録メール・アドレスを入力する。
4. 暗証番号を入力する(また空欄に残る)
5. 間違い暗証番号を入力する
6. 「パスワードをお忘れ方」をクリックする
7. 「会員登録」をクリックする。

今までの整理をマインド・マップでしてみました
ここで注意すべくのは

Actionは「Yes」,「No」で分けられるように書く

です。こう整理するのが文章を明確にします。

これから ActionItem間の従属関係を考えてみましょう。

一応

  • 「ログイン」ボタンをクリック
  • 「パスワードをお忘れ方」をクリック
  • 「会員登録」をクリック

の間は従属関係が見えません。2、3番目は下位で小枝がないのでそれ自体がチェック項目になります。

1番目の「ログイン。。。」の下位項目たちを見ましょう。

「メール・アドレス欄で入力」と「メール・アドレス欄でメール形式ではない文字を入力する」を比べると

「メール・アドレス欄で入力」:Yes

の場合「メール・アドレス欄でメール形式ではない文字を入力する」が成立します。なので、「メール・アドレス欄でメール形式ではない文字を入力する」は「メール・アドレス欄に入力」で従属されてます。

「未登録メール・アドレスを入力する」と「メール・アドレス欄でメール形式ではない文字を入力する」の関係も従属関係です。メールアドレスの形式のみ登録されたのかを確認できるからです。

全部整理すればこうなります。

マップの枝より「Yes」を含めているルーツを選んでみましょう。

Path+して「ログイン」ボタンをクリック
1 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(Yes)
2 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(Yes)
3 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(No)→暗証番号を入力する→(No)
4 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(No)→暗証番号を入力する→(Yes)→間違い暗証番号を入力する
→(Yes)
5 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(No)→暗証番号を入力する→(Yes)→間違い暗証番号を入力する
→(No)

各ケースを「ログイン1」〜「ログイン5」で名付けましょう。

Action、環境、状況はこれでまとめられます。

Action ログイン1〜ログイン5
「パスワードをお忘れ方。。」をクリックする
「会員登録」をクリックする。
環境 言語:日本語
言語:中国語
言語:英語
状況 ネットワーク:切られる
ネットワーク:弱い
ネットワーク:正常

最後のテストケースはこの3つの組み合わせで洗い出したす。

組み合わせはPICTMasterというツールを使いました。

ここでイシューが一つあります。
組み合わせのオプションの中て Number of Combined Parameterをいくらにすればいいかなんです。それは環境状況の軽さに従います。もし言語があんまりミッション・クリッチカルじゃない場合はこの値を1ですればいいです。でも、もし言語がクリッチカルな意味がある場合はこの値を2以上にして、網羅性を高める必要はあります。

これはparameter=1の結果です。

これはparameter=2の結果です。

僕はParameter=2の方が合理的に見えるのでそれでケースを整理します。
結果を環境をプライマリー・キーで、状況をセカンダリー・キーでソーティングして整理しました。

Action Scenario
ログイン1 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(Yes)
ログイン2 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(Yes)
ログイン3 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(No)→暗証番号を入力する→(No)
ログイン4 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(No)→暗証番号を入力する→(Yes)→間違い暗証番号を入力する
→(Yes)
ログイン5 メールアドレス欄で入力→(Yes)→メール・アドレス欄でメール形式ではない文字を入力する→(No)
→未登録メール・アドレスを入力する→(No)→暗証番号を入力する→(Yes)→間違い暗証番号を入力する
→(No)
No Action Scenario 状況(ネットワーク) 環境(言語)
1 ログイン5 弱い 中国語
2 ログイン1 弱い 中国語
3 ログイン3 切られる 中国語
4 ログイン2 正常 中国語
5 ログイン4 正常 中国語
6 ログイン3 弱い 英語
7 ログイン1 切られる 英語
8 ログイン2 切られる 英語
9 ログイン4 切られる 英語
10 ログイン5 正常 英語
11 ログイン2 弱い 日本語
12 ログイン4 弱い 日本語
13 ログイン5 切られる 日本語
14 ログイン3 正常 日本語
15 ログイン1 正常 日本語