テスト設計コンテスト ’14

NTTデータ流テスト設計プロセスの策定と実践～自動販売機のシステムテストを例に～2014年3月8日
株式会社ＮＴＴデータ
技術開発本部 プロアクティブ・テスティングCOEチーム「らくてす」

Copyright © 2014 NTT DATA Corporation

0. チーム「らくてす」の紹介
 メンバーの所属
 株式会社NTTデータ 技術開発本部
プロアクティブ・テスティングCOE•

NTTデータグループ向けのソフトウェアテスト（主に機能テスト）に関するR&Dを行う組織– テストプロセスの策定・普及展開– 上記プロセスを実現したツールの開発・普及展開

 出場の目的 普段の業務は仕様書／設計書ベースのテスト詳細設計が中心
テスト設計コンテストはテスト要求分析／テストアーキテクチャについてじっくり考えて、かつ、手を動かすのに非常にいい機会

Copyright © 2014 NTT DATA Corporation

2目次
1. テスト方針

2. テスト要求分析
3. テストアーキテクチャ設計

4. テスト詳細設計
5. テスト実装
6. まとめCopyright © 2014 NTT DATA Corporation3

1. テスト方針

Copyright © 2014 NTT DATA Corporation

41.1 工程定義
 Test.SSFにおける統合テストを想定与えられたテストベースが詳細設計相当であると考えられるため「SSFに基づくテスト技術フレームワーク」より
Copyright © 2014 NTT DATA Corporation5

1.2 全体方針
 以下の4点を全体方針とする
1. 業界標準に準拠したプロセスとする
JIS X 25010をベースにテスト設計を行う
2. 仕様書の情報に閉じない仕様書に明記されていない情報も極力推測して補完する
3. 成果物間のトレーサビリティをしっかりとる
成果物を見るだけで設計の意図がわかるようなプロセスにする
4. 客観的にわかりやすい成果物間の関連が複雑でないシンプルなプロセスにする
Copyright © 2014 NTT DATA Corporation

6

1.3 テスト設計作業の全体フロー テスト設計作業を4つのタスクに分解して実施する

Copyright © 2014 NTT DATA Corporation

7

2. テスト要求分析

Copyright © 2014 NTT DATA Corporation8

2.0 テスト要求分析の作業フロー
 テスト要求分析作業を6つのタスクに分解して実施する

Copyright © 2014 NTT DATA Corporation

92.1 ステークホルダーの抽出 自動販売機のライフサイクルを想定し、ステークホルダーを抽出
ライフサイクル

ステークホルダ

判定

理由

設置

設置業者

×

ソフトウェアは関連しないため、テスト対象外とする

販売準備

販売者

○

販売者が準備する際のユースケースおよび関係する自動販売機の機能をテスト対象とする。
ただし、ソフトウェアが関連しない範囲は対象外とする

販売中

商品購入者

○

商品を購入する際のユースケースおよび関係する自動販売機の機能をテスト対象とする

修理中

販売者

○

自動販売機を修理する際のユースケースおよび関係する自動販売機の機能をテスト対象とする

情報活用

情報解析担当者

×

売上データに関連する機能は対象外と明記されている

運用終了

撤去業者

×

ソフトウェアは関連しないため、テスト対象外とする

Copyright © 2014 NTT DATA Corporation10

2.2 仕様の分析(1/2)
 記述された振る舞いをUMLを用いて表現
クラス図：構成要素をクラス、振る舞いをメソッドとして整理Copyright © 2014 NTT DATA Corporation

11

2.2 仕様の分析(2/2)
 記述された振る舞いをUMLを用いて表現
シーケンス図：振る舞いごとにクラス間の相互作用を整理

Copyright © 2014 NTT DATA Corporation

122.3 テストレベル・目的の決定（1/2）
 仕様分析の結果からテストレベルを決定
統合テスト テスト対象のレベルの単位
レベル1

機能

レベル2

アクション

Copyright © 2014 NTT DATA Corporation定義

当初計画時のテスト対象の単位

シーケンス図において自動販 ハードウェア構成要素／販売売機の構成要素によって開 者機能始され、かつその結果が確認できるまでを範囲とする。
シーケンス図においてアクター ユースケース（ステークホルダ）の1回の操作によって行われる一連の機能とする。

13

2.3 テストレベル・目的の決定（2/2）
 品質特性をベースにテスト目体を決定
テスト対象の単位

品質特性

機能機能適合性 機能が期待通りに動作することを確認する。
性能効率性 機能の実行時間、および実行時の使用リソースが適切であることを確認する。
機能適合性 想定されるアクターが期待通りにアクションからの一連のユースケースを実行できることを確認する。
性能効率性 アクションからの一連のユースケースの実行時間、および実行時の使用リソースが適切であることを確認する。
使用性想定されるアクターがアクションからの一連のユースケースを理解し、正しく実行できることを確認する。
信頼性
アクションからの一連のユースケースを実行中に故障が発生した場合に、適切にリカバリができることを確認する。
セキュリティ
適切なアクター以外ではアクションからの一連のユースケースを実行できないことを確認する。

アクション

Copyright © 2014 NTT DATA Corporation

テスト目的

14

2.4 テスト対象の決定(1/3)
 テスト対象を列挙
レベル1：ハードウェアの機能を中心に列挙
テスト対象（機能）販売ボタン点灯

テストベース名

テストベースの該当箇所

ハードウェア仕様書

1.2販売ボタン

ユースケース仕様書

3.3販売ボタン

硬貨受理

ハードウェア仕様書

1.3貨幣投入口

紙幣受理

ハードウェア仕様書

1.3貨幣投入口

金額表示

ハードウェア仕様書

1.4金額表示機

商品送出－－

返金

ハードウェア仕様書

懸賞ハードウェア仕様書

1.3貨幣投入口
1.8返金ボタン
1.9懸賞ルーレット機

ユースケース仕様書
釣銭切れ表示Copyright © 2014 NTT DATA Corporation

ハードウェア仕様書

3.2自動販売機
3.3販売ボタン
1.6釣銭取り出し口
1.7釣銭関係表示器
15

2.4 テスト対象の決定(2/3)
 テスト対象を列挙

レベル2（1/3）：商品購入者のとれるアクション

テスト対象（アクション）

テストベース名

テストベースの該当箇所

硬貨を投入する

ユースケース仕様書 2.1代金投入ユースケース

紙幣を投入する

ユースケース仕様書 2.1代金投入ユースケース

販売ボタンを押下する

ユースケース仕様書 2.2商品選択ユースケース
2.4懸賞ユースケース
ユースケース仕様書 2.3返金ユースケース

返金ボタンを押下する

レベル2（2/3）：センサー類のとれるアクション
テスト対象（ユースケース）
抽出元
該当箇所
販売ボタン押下なしを検知する

ハードウェア仕様書

1.3貨幣投入口

商品詰まりを検知する

ハードウェア仕様書

1.5商品取り出し口

温度制御異常を検知する

ハードウェア仕様書

その他故障を検知する

ハードウェア仕様書
ユースケース仕様書

2.1販売管理者用の内部キーボード（各商品の設定）
全体

Copyright © 2014 NTT DATA Corporation

16

2.4 テスト対象の決定(3/3)
 テスト対象を列挙

レベル2（3/3）：販売者のとれるアクション

テスト対象（アクション）

テストベース名

メンテナンスを開始する

TR_IT2-41-F01

商品を補充する

TR_IT2-42-F01

商品名を設定する

TR_IT2-44-F01

商品価格を設定する

TR_IT2-45-F01

テストベースの該当箇所
自動販売機がメンテナンス可能となることを確認する
商品が正しく補充されることを確認する
商品名が正しく設定されることを確認する
商品ごとの価格が正しく設定されることを確認する

以下、省略

Copyright © 2014 NTT DATA Corporation

17

2.5 テスト観点の洗い出し 5W1Hをベースに思考を発散

Copyright © 2014 NTT DATA Corporation18

2.6 テスト要求の抽出
 2.3のテスト目的と2.4のテスト対象を対応づける
機能に対する機能性のテスト要求の例
テスト対象（機能）テスト要求ID

販売ボタン点灯

TR_IT1-01-F01

硬貨受理

TR_IT1-02-F01

紙幣受理

TR_IT1-03-F01

販売ボタンの点灯が正しく実施されることを確認する
硬貨の受理が正しく実施されることを確認する
紙幣の受理／非受理が正しく実施されることを確認する

アクションに対する性能効率性の例
テスト対象（アクション）

ID

硬貨を投入する

TR_IT2-01-P01

紙幣を投入する

TR_IT2-02-P01

Copyright © 2014 NTT DATA Corporation

テスト要求
硬貨の連続投入間隔が仕様を満たしていることを確認する
紙幣の連続投入間隔が仕様を満たしていることを確認する
19

3. テストアーキテクチャ設計

Copyright © 2014 NTT DATA Corporation20

3.0 テストアーキテクチャ設計の作業フロー
 テストアーキテクチャ設計作業を3つのタスクに分解して実施する

Copyright © 2014 NTT DATA Corporation

21

3.1 テスト要求間の関係整理
 重複するテストの発見／テスト順序の決定のために、テスト要求間の依存関係を整理機能とアクション間の整理
テスト対象（機能）テスト対象（アクション）

販 硬 紙 金 商 返 懸 釣売 貨 幣 額 品 金 賞 銭
ボ 受 受 表 送切
タ 理 理 示 出れン
表点示灯

硬貨を投入する
紙幣を投入する
販売ボタンを押下する
返金ボタンを押下する

○ ○
○
○
○○ ○
○
○ ○
○ ○ ○ ○ ○○○○○Copyright © 2014 NTT DATA Corporation

22

3.2 リスク分析(1/2)
 テストの優先度を決定するために、ステークホルダに発生しえるリスクを分析想定される事象および危害（ステークホルダが“販売者”のテスト対象）

テスト対象
メンテナンスを開始する

商品を補充する

Copyright © 2014 NTT DATA Corporation

テスト要求

想定される事象想定される危害

自動販売機がメン メンテナンス状態にならない メンテナンスを実施できテナンス可能となるないことを確認する
商品が正しく補充 商品が入らない
商品を補充できないされることを確認す 商品が「販売可能」状態に 商品を販売できないならないる商 品 が 妥 当 な 時 販売可能になるまで時間が 商品を販売できない
間 内 で 最 適 温 度 かかるになる（「販売中」 加熱/冷却の電力効率が 電 気 代 が 多 く か か るになる）ことを確認 悪い
法令・ガイドラ インに違する反する

23

3.2 リスク分析(2/2)
 高／中／低で三段階評価しアクションを決定
リスク度

テスト設計・実装・実行の順序

高

1番目

中

2番目

低

Copyright © 2014 NTT DATA Corporation

3番目

作業方針
テスト設計のレテスト設計者
ビュー方針のスキル

テスト実行時の証跡保存

レビューでの指摘内容を修正後、再レビューの必要が必要テスト責任者の承認が必要
自動販売機のテスレビューでの指摘内容をト設計の経験があ修正後、再レビューの必ること
要が必要
テスト責任者の承認が不要

全てのテストケースの証跡を保存する
テスト責任者が証跡を確認する
全てのテストケースの証跡を保存する

レビューでの指摘内容を修正後、再レビューの必特になし
要なし
テスト責任者の承認が不要

インシデントが発生した場合にのみ証跡を保存する

24

3.3 テストアーキテクチャ③テスト対象間の関係①テスト対象②テスト目的④リスクにもとづく優先度

Copyright © 2014 NTT DATA Corporation25

4. テスト詳細設計

Copyright © 2014 NTT DATA Corporation

26

4.0 テスト詳細設計の作業フロー
 テスト詳細設計作業を2つのタスクに分解して実施する

Copyright © 2014 NTT DATA Corporation27

4.1 テスト詳細設計（機能テスト）
 状態遷移テスト＋デシジョンテーブルテスト
例：販売ボタン点灯機能

機能のライフサイクルを状態遷移図でモデリング遷移ごとの詳細な振る舞いをデシジョンテーブルで整理

Copyright © 2014 NTT DATA Corporation

28

4.2 テスト詳細設計（非機能テスト）
 テスト要求ごとにテスト観点にもとづいて作成
例：商品を補充する（性能テスト）
事前条件
・商品状態が「準備中」であること。
・商品が「あたたか～い」対象商品であること。
・外気温が24度（春・秋を想定）であること。

テストケース
入力値
商品が最適温度（あたたか～い）になるまで待機する。

環境（Where）から作成

Copyright © 2014 NTT DATA Corporation

期待結果
商品が妥当な時間内（1時間）で「販売中」になること。

テスト要求に対応づくテストケースを作成

29

5. テスト実装

Copyright © 2014 NTT DATA Corporation30

5.0 テスト実装の作業フロー
 テスト実装作業を2つのタスクに分解して実施する

Copyright © 2014 NTT DATA Corporation31

5.1 テスト実行順の決定
 テストアーキテクチャにもとづいて実行順序を整理
テストレベル

テストタイプ

リスク分析結果

Copyright © 2014 NTT DATA Corporation32

5.2 テスト手順書の作成
 テスト手順書には以下の内容を記述
 まとめて実行するテストケースのセットの定義•

テストスイートとして作成する

 実行するテストケースの順序•

テストケースのIDやテストケースのファイル名などにより示す

 すべてのテストケースを実行する前、および実行した後に行う作業•

テスト環境構築…etc

 各テストケースを実行する間に行う作業••

テスト実行順の決定

初期化
事前状態の設定…etc

テスト手順
書の作成
Copyright © 2014 NTT DATA Corporation

33

6. まとめ

Copyright © 2014 NTT DATA Corporation34

6.1 テスト設計作業の全体フロー（再掲） テスト設計作業を4つのタスクに分解して実施した

Copyright © 2014 NTT DATA Corporation35

6.2 全体方針
 以下の4点を全体方針とした
1. 業界標準に準拠したプロセスとする
JIS X 25010の品質特性をベースにテスト設計を行った
2. 仕様書の情報に閉じない管理者振る舞いを中心に明記のない仕様についても考慮した
3. 成果物間のトレーサビリティをしっかりとる
全ての成果物の入出力関係を明確にした
4. 客観的にわかりやすい成果物の入出力関係な明快なプロセスとした
Copyright © 2014 NTT DATA Corporation

36

Copyright © 2011 NTT DATA Corporation

Copyright © 2014 NTT DATA Corporation

本資料には、当社の秘密情報が含まれております。当社の許可なく第三者へ開示することはご遠慮ください。