① ZUNDAの全体像はこれだっ！
【ZUNDA方針】
・W字モデルの開発プロセスでテスト分析/設計を行う
・テストレベルはシステムテスト～受け入れテストとする・王道に挑戦!?

ZUNDAメンバー
ZUNDAは5人のメンバー構成されている。
ZUNDA YELLOWこと根本紀之。スープカレーをこよなく愛す北海道出身エンジニア。

ZUNDA BLUEこと梅津正洋。近頃テストの面白さに目覚めた福島出身エンジニア。
ZUNDA PINKこと森智美。テニス大好き、宮城出身エンジニア。
ZUNDA GREENこと真鍋 俊之。テスト勉強会に出始めの茨城出身エンジニア。
ZUNDA REDこと今野 雄太。出張先の山梨から皆を支える宮城出身エンジニア。

テスト設計までのトレーサビリティー

② テスト分析/テスト設計コンセプト■テストレベル
本ドキュメントにおけるテストレベルはシステムテスト～受け入れテストとする。
なお、ユニットテスト、単体テストへの指針は別途記述する。

■品質/テストの重みづけ（品質8特性）
品質8特性の中から、重点を置くべき品質特性を出し、それぞれで有効なテストタイプを導き出す■トレーサビリティ
機能仕様書とユースケース仕様書から再構成した要求仕様からトレーサビリティの明記を行うことで、テスト設計時に漏れが無いことを確認する。

■お金を扱うテストに重点を置いた
機能組み合わせテスト
自動販売機の性質上、ユーザーの怪我や死亡につながる不具合は少ないが、お金を取り扱うため注意が必要である。
昨今はYouTubeなどにも自動販売機の裏技としてアップされることが多く、裏技が広まりやすい。
仮に不具合を出してしまうと全国でお金が抜かれるなど被害の拡大が懸念される。
そのため、返金処理ユースケースと他ユースケースの組み合わせなどに重点を置いて実施する。

■ユーザーが使うことを考慮したテスト設計
ユーザー分析を行うことで、さまざまなタイプのユーザーとシチュエーションを導出する。
それに基づき、ユーザーゴールを考えた「ユーザー視点のテスト」を実施する。

■やらないこと
本テスト設計では以下のことは実施しない。
・重要ではないと判断した品質に紐づくテスト（例：互換性や移植性など）
・開発部のユニットテストレベル、結合試験テストレベルで実施する予定のテスト
・ハードウェアのみのテスト（例：外観やボタン自体の耐久性など）■ご近所さんを探せ
本プロジェクトの関係を以下に図示する。

③ テスト対象分析
1．ステークホルダー分析
どのようなステークホルダーが存在するか、またそれらのユーザーがどのように振舞うかを考えることで、起こりうる使用方法を想定し、シナリオテスト、ユーザビリティテスト、理解性検証へのインプットとする。
■ステークホルダー
自動販売機に関わるステークホルダーは以下の5タイプと考えた。
① ハード作成者② ソフト作成者③ オーナー④ 管理者⑤ 購入者
今回のビジネス形態では、オーナーと管理者が同一と考え、④の管理者、⑤購入者についてさらに考察して、本テスト設計の想定ユーザーとする。
以下はFV表の因子と水準の考えを人に適用したものである。
初めからペルソナにしなかったのは、自動販売機の購入者は様々であること、またペルソナにしてしまうことで、ほかの因子が抜け落ちてしまうのを防ぐためである。
■管理者
管理者
年齢
言語
熟練度
性別
大人
日本語
新人
男性
外国語
ベテラン
女性
■購入者
購入者
年齢層
子ども
学生
大人
老人

言語
日本語
外国語

時間
急いでいる
余裕がある

購入経験なし
1～3回
4回以上

身体
正常
背が小さい
しゃがみにくい
コインが持てない性別男性
女性

購入数
一つ大量

お釣りなし
お札のみ
500円玉
小銭のみ
汚いお金

2．過去不具合分析
今回はASTERの新事業であるため、過去不具合は存在しない。
そのため、ネットでの情報を洗い出し、過去不具合一覧（※成果物２参照）とした。
その一覧より自動販売機のビジネスにおけるバグの傾向を分析する。
■傾向分析
自動販売機の裏技として流通しているものには以下の傾向がみられた。
・ボタンの組み合わせ。特に商品ボタンと釣銭レバー。
・ボタンとセンサー感知の組み合わせ
これらは機能組み合わせテスト、意地悪テストで検証し、同様の不具合は出さないようにする。

ワル度
良い人
ちょいワル
ヤンキー
プロ

状況
寒い
暑い
適温
のど渇き

④ テスト対象分析
3．機能分析
■要求仕様書の再構築提出された機能仕様書、ユースケース仕様書を分析し、テストベースとなる「ASTER自動販売機 要求仕様書（以下、要求仕様書）」を作成する。
この要求仕様書（※成果物２参照）にはトレーサビリティーが取れるように各仕様にIDを割り当てる。
この再構築の作業により、二つの成果物をアウトプットした。
一つは問い合わせ一覧であり、もう一つはビジネス提案書（※成果物２参照）である。
■DFDの作成
データの流れを確認するため、DFDを作成した。
メインの機能である「販売管理」、「返金制御」、「金額管理」、「懸賞制御」、「故障管理」は要求仕様書の要求項目と対応している。

■分析モデルの作成
ソフトウェア内部の関係を確かめるため、分析モデルを開発部へヒアリングを行い作成した。
テスト設計する上での関連する機能を明確にした。

4．リスク分析
ユーザー分析をうけて、管理者、購入者の不利益となるリスクを考え、回復性テスト、信頼性テスト、堅牢性テストのインプットとする。
本分析では怪我や死亡に関連するリスクはほとんどない。
しかしながらお金の間違いや温・冷が逆の商品が入っている場合などは売り上げに直結する可能性が高い。
またユーザーを購入者と管理者に分けることで、リスクの洗い出しがより正確にできるようになった。
リスク分析
vm-001-2

vm-001-2

vm-001-3

vm-001-4

vm-001-5

vm-001-6

vm-001-6

購入者管理者

初期化処理
RISK-1-01 販売可能にならない✓✓

金額管理
RISK-2-01
RISK-2-02
RISK-2-03
RISK-2-04
RISK-2-05
RISK-2-06

古めのお金が認識されない。
お金がシステム的の不具合で認識されない。
硬貨が2枚飲み込まれる
想定したおつりが返ってこない投入した硬貨の合計と違うお金になる。
瞬時停電でリセットされてしまう

✓✓
✓
✓
✓
✓

✓
✓
✓
✓

✓

RISK-3-02
RISK-3-03
RISK-3-04
RISK-3-05
RISK-3-06
RISK-3-07
RISK-3-08
RISK-3-09
RISK-3-10

違う商品がでてくる
表示している価格と違う（120円を入れてもランプがつかない）
懸賞にならない
商品が出ない商品購入後の追加のお金が受け付けられない
商品購入後の追加のお金が飲み込まれる商品が選ばれたか分からない
1回しか押したつもりじゃないのに、2本出てくる
詰まっているか分からないで、購入してしまう。
適温でない商品が出てくる。

返金制御
RISK-4-01
RISK-4-02
RISK-4-03
RISK-4-04
RISK-4-05
RISK-4-06

想定の金額と違うお金が返金される
全て10円玉で返金される。
おつりが詰まって取れなくなる
偽札が返ってくる
偽札、偽硬貨で購入する
返金と商品の送出が同時に起こる

✓✓
✓✓

懸賞制御
RISK-5-01
RISK-5-02
RISK-5-03
RISK-5-04
RISK-5-05
RISK-5-06
RISK-5-07
RISK-5-08
RISK-5-09

懸賞の時間が短くて選ぶことができない
懸賞が連続して発生する
懸賞時に複数購入できる
懸賞時に投入した貨幣が飲み込まれる
懸賞が当たらない
懸賞が当たり続ける
対象商品以外でも懸賞が始まる
懸賞のルーレットが長い音がイライラする✓

故障管理
RISK-6-01
RISK-6-02RISK-6-03

故障から復帰できない。
故障時でも購入できる。
瞬時停電でリセットされてしまう✓

販売管理
RISK-3-01

メンテナンスモード時の管理機能
RISK-7-01 ちょっとした揺れでメンテナンスモードに入る✓
✓
✓
✓✓✓✓
✓✓✓✓

✓

✓✓✓
✓
✓✓✓
✓
✓✓✓
✓

✓✓✓
✓

✓✓

⑤ テスト概略設計

テスト分析から、品質8特性のうち何に重点を置いてテストすべきか見えてきた。
品質8特性の中から、下記の3つの品質に重点を置き、それぞれで有効なテストを行う。

＜機能適合性＞
・機能組み合わせテスト
・シナリオテスト

品質特性
機能適合性

副品質特性
機能完全性
正確性
適切性

＜信頼性＞
・回復性検証・堅牢性テスト（意地悪テスト）

テストタイプ
機能テスト
機能組み合わせテスト

テストカテゴリ

シナリオテスト

単機能試験※返金のみ組み合わせ
購入＋返金
購入＋懸賞
正常シナリオ試験
異常シナリオ試験

ストレステスト

連続稼動試験

■■□□□ リアルタイム性はそれほど求められない

性能効率性時間効率性
資源利用性
キャパシティ（*）□□□□□ 基本的にスタンドアロンなので必要なし。

互 換 性 （ *）
共存性
相互運用性
使用性
適切度認識性
習得性
運用性
ユーザエラー防止性（*）
ユーザインタフェースの快美性（*）
アクセシビリティ（*）-----■■■■□ 本機能としては、習熟するものではないため、最初の理解性が重要となる。

ユーザビリティテスト

理解性テスト(評価)
使用性テスト(評価)ユーザーエラー防止テスト（フェールセーフ）■■■■□ BtoCの製品のため信頼性は高い

信頼性

＜使用性＞
・ユーザビリティテスト
・理解性検証重要度
重要度の理由■■■■■ お金を扱う機能があるため5とする

成熟性
可用性（*）
障害許容性
回復性
セ キ ュ リ テ ィ （ *）機密保持性（*）
インテグリティ（*）
否認防止性（*）
責任追跡性（*）
真正性（*）
保守性
モジュール性（*）
再利用性（*）
解析性
変更性
試験性

回復性テスト
信頼性テスト
堅牢性テスト■□□□□ お金を扱うがハード的な側面が強く、ソフトウェアのセキュリティに関しては高くない。

■■□□□ 仕様変更は発生するので、保守性はできる限り高くしておきたい。

□□□□□ 今のところ移植の予定はない

移植性
順応性
設置性
置換性

セキュリティテスト

カバレッジの担保
CIの運用

条件組み合わせ割り込み

⑥ テスト設計(機能適合性)・機能組み合わせテスト
状態遷移図から状態遷移技法を使ってテスト設計を行った。※ここでは組み合わせテストについて紹介する。
・シナリオテスト
特に異常系に関して、“狭く深く”をコンセプトにシナリオを作成した。
ID
S1
S1-1
S1-2
S2
S3
S4
S5ID
F1
F2
F3
F4

フロー
(S1)<E1>(S1)<E5>(S2)<E7>(S1)(S1)<E1>(S1)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F1](S1-2)<E2>(S1-1)<E4>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F1](S1-2)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F1](S1-2)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F1](S1-2)<E1>(S1)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F1](S1-2)<E1>(S1)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F2](S1-2)<E2>(S1-1)<E4>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F2](S1-2)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F2](S1-2)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F2](S1-2)<E1>(S1)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F2](S1-2)<E1>(S1)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F3](S1-2)<E2>(S1-1)<E4>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F3](S1-2)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F3](S1-2)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F3](S1-2)<E1>(S1)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F3](S1-2)<E1>(S1)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F4](S1-2)<E2>(S1-1)<E4>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F4](S1-2)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F4](S1-2)<E6>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F4](S1-2)<E1>(S1)<E5>(S2)<E7>(S1)(S1)<E1>(S1-1)<E3>(S1-2)[F4](S1-2)<E1>(S1)<E6>(S2)<E7>(S1)

状態名
代金投入可能商品選択不可
商品選択可能
返金中
商品送出中
懸賞中
懸賞当たりIDE1E2E3E4E5E6E7E8E9E10E11E12E13E14

イベント名
貨幣投入/残高計算
商品選択判断結果[すべての商品選択不可]
商品選択判定結果[1つ以上の商品選択が可能][商品搬出後すべての商品選択不可]
販売後経過時間[販売後一定時間経過]
返金ボタン受付
返金金額送出済/残高計算
販売ボタン押下/残高計算
商品搬送完了[懸賞購入実績あり]
商品搬送完了[懸賞購入実績なし]
検証結果[懸賞はずれ]/はずれランプ点灯
検証結果[懸賞あたり]/あたりランプ点灯
販売ボタン押下あたり後経過時間[当たり後一定時間経過]

フロー(S1-2)<E8>(S3)<E9>(S1)(S1-2)<E8>(S3)<E10>(S4)<E11>(S1)(S1-2)<E8>(S3)<E10>(S4)<E12>(S5)<E13>(S3)<E9>(S1)(S1-2)<E8>(S3)<E10>(S4)<E12>(S5)<E14>(S1)

説明
懸賞対象外商品の購入する
懸賞対象商品を購入し、懸賞で外れる
懸賞対象商品を購入し、懸賞で当たり、商品を選択する
懸賞対象商品を購入し、懸賞で当たり、20秒が経過する

説明
貨幣投入後、一定時間経過して返金する。
貨幣投入後、返金ボタンを押して返金する。
貨幣投入後、懸賞対象外商品を購入し、購入後選択可能商品がなくなり返金する。
貨幣投入後、懸賞対象外商品を購入し、購入後一定時間経過して返金する。
貨幣投入後、懸賞対象外商品を購入し、購入後返金ボタンを押して返金する。
貨幣投入後、懸賞対象外商品を購入し、購入後貨幣を投入し、一定時間経過して返金する。
貨幣投入後、懸賞対象外商品を購入し、購入後貨幣を投入し、返金ボタンを押して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で外れ、選択可能商品がなくなり返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で外れ、一定時間経過して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で外れ、返金ボタンを押して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で外れ、貨幣を投入し、一定時間経過して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で外れ、貨幣を投入し、返金ボタンを押して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、当たり商品を回収した後、選択可能商品がなくなり返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、当たり商品を回収した後、一定時間経過して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、当たり商品を回収した後、返金ボタンを押して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、当たり商品を回収した後、貨幣を投入し、一定時間経過して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、当たり商品を回収した後、貨幣を投入し、返金ボタンを押して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、20秒経過した後、選択可能商品がなくなり返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、20秒経過した後、一定時間経過して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、20秒経過した後、返金ボタンを押して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、20秒経過した後、貨幣を投入し、一定時間経過して返金する。
貨幣投入後、懸賞対象商品を購入して懸賞で当たり、20秒経過した後、貨幣を投入し、返金ボタンを押して返金する。

⑦ テスト設計(使用性)
ペアワイズ法での利用者抽出（一部抽出）
・ユーザビリティテスト
タスクごとで利用者からのフィードバックが得られる見込みがある要求について整理した。
・理解性検証ステークホルダー分析時に出た因子から年齢層、言語、性別、購入経験、時間に関してペアワイズ法を行った。

年齢層 言語
大人
外国語
子ども 日本語
大人
日本語
老人
日本語
学生
日本語
大人
外国語
老人
日本語

性別 購入経験時間
男性 4回以上 急いでいる
女性 1～3回
急いでいる
女性 4回以上 余裕がある
男性 1～3回
急いでいる
女性 1～3回
急いでいる
女性 無し
余裕がある
女性 4回以上 余裕がある【理解性検証の判定基準】
以下についてはボタンを押し間違えない、または戸惑わずにできること。
検証が終了した後にフィードバックをもらい、戸惑ったことがないことを確認する。
＜正常系シナリオ＞
シナリオ
500円で、120円の冷たい商品を購入し、返金ボタンを押す。

検証のポイント
硬貨の投入口、目的の商品、返金ボタンの扱い方、釣り銭取り出し口の場所の視認性
10円24枚で120円の商品を二つ購入する。
お金の表示が見やすいか1000円札と10円2枚で商品を購入する。
紙幣の投入口、釣銭取り出し口の場所の視認性100円と10円2枚で、120円の冷たい商品を購入し、ルーレットが当 ルーレットの開始、当たりの表示、当たりによる購入可能な商品がたること。
理解しやすいか＜異常系シナリオ＞
シナリオ
検証のポイント
10円硬貨を30枚入れて、返金ボタンを押す。
100円硬貨ででてきたときに驚かないか。
100円と10円2枚で、120円の冷たい商品を購入し、ルーレットが 追加代金が受け付けられないことを確認できること。
回っているときに追加の代金を入れること。

⑧テスト設計(信頼性)・回復性検証
故障からの回復について検証する。主に故障時の処理が正常に動作するか。
・堅牢性テスト(意地悪テスト)
主にタイミングテストに関する意地悪テスト項目を出した。
以下は、意地悪テストの一例である。