狠狠撸

狠狠撸Share a Scribd company logo
ユースケース図&アクティビティ図
モデリングからテストまで
WACATE 2018 夏
2018/6/16-17 WACATE 2018 Summer
1
自己紹介
? 氏名:なかむら こうじ
? あなたとテストの関わり:
– この前まで小さなテストをたくさんしていました
? テストに関する資格:
– JSTQB AL TM/TA, JCSQE 中級
? 派閥
– 猫派
2018/6/16-17 WACATE 2018 Summer
2
おしながき
? ユースケース図
? アクティビティ図
? ユースケースとアクティビティに基づくテスト
? 小演習
2018/6/16-17 WACATE 2018 Summer
3
50分
30分
ユースケース図
全体像をつかもう
2018/6/16-17 WACATE 2018 Summer
4
ユースケース図とは
? 外部からの要求に対するシステムの振る舞い
? 誰がシステムを利用するのか(WHO)
? システムを利用して何ができるか(WHAT)
※細かな利用方法ではなく、利用者がシステムを
利用してどのような便益を得られるかが焦点
2018/6/16-17 WACATE 2018 Summer
5
ユースケース図の記法
? とてもシンプルなユースケース
2018/6/16-17 WACATE 2018 Summer
6
アクター(WHO)
システムを利用するユーザー
外部システムなどもアクター
ユースケース(WHAT)
アクターがシステムを利用して
実現すること
より詳細に表現するには①
? 複数のユースケースをまとめる
2018/6/16-17 WACATE 2018 Summer
7
サブジェクト
ユースケースをまとめる
パッケージ
再利用を目的とした単位
より詳細に表現するには
2018/6/16-17 WACATE 2018 Summer
8
包含(A has a Bの関係)
拡張(条件による振る舞いの追加)
汎化(B is a Aの関係)
管理職 is a 社員 残業申請 is a 申請
残業申請するということは必然的に
残業するというユースケースを含む
住宅ローンを組みます。
まだ口座がない場合は、新たに口座を開設します。
ユースケース図あるある
? 汎化とか包含、拡張とかうまく区別つかない
– 必須ではないのでおいおい理解していけばOK
– 使わなくて済むなら使わない方がいい
– 階層構造を持ち込むと複雑になってしまうので
? どんな粒度で書いたらいいか迷う
– アクターの目線でシステムから何を得られるか
– 「○○ボタンを押す」とかは何を得るかわからない
2018/6/16-17 WACATE 2018 Summer
9
アクティビティ図
流れをつかもう
2018/6/16-17 WACATE 2018 Summer
10
アクティビティ図とは
? 開始から終了までの処理の順序、手続き
? どのようにシステムを利用するのか(HOW)
? 順序立てた手続きの流れが焦点
2018/6/16-17 WACATE 2018 Summer
11
アクティビティ図の記法
? とてもシンプルなアクティビティ図
2018/6/16-17 WACATE 2018 Summer
12
初期ノード
アクション
ノード
ノード
流れに変化をつける
2018/6/16-17 WACATE 2018 Summer
13
デシジョン
(分岐)
フォーク
(非同期)
ガード
主体を明確にする
? パーティション(swimlane)
– アクティビティの特性や
リソースなどでグループ化
– パーティション間のやりとりが
明確になる
– 手続きの抜け漏れ、論理の飛躍
などが浮き出てくる
2018/6/16-17 WACATE 2018 Summer
14
アクティビティ図あるある
? どんな単位で作成すればいいかわからない
– 開始から終了まででひとつの意味を成す単位
– 例えばユースケース単位
– 例えば複数のユースケースの前後関係(流れ)
2018/6/16-17 WACATE 2018 Summer
15
アクティビティ図あるある
? 線が複雑になりすぎて見にくい
– 描きたい範囲に対して具体的に描きすぎている?
– 全体の流れに影響のない線がたくさんありませんか?
– しっかり厳選した上で複雑なら…そこが弱点かも。
2018/6/16-17 WACATE 2018 Summer
16
ユースケースとアクティビティ
に基づくテスト設計
テストで活かそう
2018/6/16-17 WACATE 2018 Summer
17
それではユースケースをテストしましょう
2018/6/16-17 WACATE 2018 Summer
18
何を確認したいですか?
? 社員が申請できること
? 管理職が承認できること
? 社員が申請したものを
管理職が承認できること
それではユースケースをテストしましょう
ユースケーステスト
? 個々のユースケースにフォーカス
? ユースケース記述でHOWを明確化
2018/6/16-17 WACATE 2018 Summer
19
申請する
目的 承認者に費用等の申請をしたい
事前 システムにログインし申請画面を開いていること
基本
フロー
1 社員が申請内容をフォームに入力する
2 社員がフォームの登録ボタンを押す
3 システムがDBに申請内容を保存する
4 システムが承認者に通知メールを送信する
事後 申請完了が通知され承認者がメールを受信する
それではユースケースをテストしましょう
ユースケーステスト
? 個々のユースケースにフォーカス
? アクティビティ図でHOWを明確化
2018/6/16-17 WACATE 2018 Summer
20
それではユースケースをテストしましょう
シナリオテスト(諸説あり)
? 複数のユースケースの連携にフォーカス
? アクティビティ図でHOWを明確化
2018/6/16-17 WACATE 2018 Summer
21
それでは合わせてテストしましょう
2018/6/16-17 WACATE 2018 Summer
22
「管理職」(WHO)は
「アクティビティ」(HOW)の手順で
「承認」(WHAT) ができること!
ユースケース(WHAT)アクター(WHO) アクティビティ(HOW)
アクティビティ図から操作手順を導出
? 分岐や繰り返しで複数の操作手順が存在する
1. 最もレギュラーなパス
– 成功しないと目的が達成できない
2. 各分岐、繰り返しを1回は通る
– 想定内のすべての操作に対応
3. 最も多くイレギュラーを通る
– 想定外のレアケースに対応
4. レギュラーとイレギュラーの組合せ
– あらゆる状況に対応できる
2018/6/16-17 WACATE 2018 Summer
23
例えば以下の3つのユースケーステスト
操作手順 1.検索 2.検索結果 3.詳細確認 4.承認判断 5.ステータス更新
#1
承認対象の申請が1件もない場合
1周目 検索する 該当なし表示 N/A N/A N/A
#2
承認対象の申請が1件のみで、承認する場合
1周目 検索する 申請一覧表示 内容確認 承認する 承認更新
2周目 再検索 該当なし表示 N/A N/A N/A
#3
承認対象の申請が2件で、1件目差戻し、2件目承認する場合
1周目 検索する 申請一覧表示 内容確認 差し戻す 差戻し更新
2周目 再検索 申請一覧表示 内容確認 承認する 承認更新
3周目 再検索 該当なし表示 N/A N/A N/A
2018/6/16-17 WACATE 2018 Summer
24
小演習
2018/6/16-17 WACATE 2018 Summer
25
小演習
? お題に対してモデリング~テストケースまで
– お題配布?説明 5分
– ユースケース作成 10分
– グループ内情報共有 5分
– アクティビティ図作成 15分
– テストケース作成 10分
– グループ内情報共有 5分
2018/6/16-17 WACATE 2018 Summer
26
お題
WACATE ECサイトはいわゆるインターネット通販サイトです。
注文者は当システムを利用して商品の注文とキャンセルができます。
注文時に選択できる決済方法には代金引換とクレジットカード決済があり、
クレジットカード決済の場合は外部の決済代行会社のシステムと決済認証のやりとりが発生します。
当サイトの会員の場合、会員登録で登録済みのカードを選択して注文を行うこともできます。
会員情報としては決済方法のほかに、会員住所と届け先情報を登録しておくことができます。
会員登録しなくても注文は可能ですが、登録しておくと注文時にカード情報などの入力の手間が省けます。
注文の仕方は簡単で、商品を検索して購入したい商品を買い物かごに追加し、注文者?届け先?支払方法など
を入力して注文を確定します。
注文者は注文受付メール内に記載のURLから注文内容や発送状況の確認をいつでも行えます。
会員の退会の手続きについてはシステム外の扱いとなり、電話対応でのみ受け付けます。
2018/6/16-17 WACATE 2018 Summer
27
回答例:ユースケース図
2018/6/16-17 WACATE 2018 Summer
28
@startuml "ユースケース図_WACATE ECサイト"
left to right direction
actor :注文者: as customer
actor :会員: as member
actor :決済代行会社: as card
customer <|- member
usecase (退会する) as (Leave)
note "退会はシステム外で手続きが必要" as N1
(Leave) .. N1
rectangle "WACATE ECサイト"{
usecase SignUp as "会員登録する
--
extension points
決済方法"
usecase AddCard as "カード情報を登録する"
(SignUp) <.. (AddCard) : <<extend>>
usecase EntryOrder as "商品を注文する
--
extension points
決済方法"
usecase CancelOrder as "注文をキャンセルする
--
extension points
決済方法"
usecase PayCard as "カード決済を行う"
(EntryOrder) <.. (PayCard): <<extend>>
(CancelOrder) <.. (PayCard): <<extend>>
usecase ShowOrder as "注文内容を確認する"
}
' 注文者 -----------------------------
customer -- (SignUp)
customer -- (EntryOrder)
customer -- (CancelOrder)
customer -- (ShowOrder)
member -- (Leave)
' 決済代行会社 -----------------------
(AddCard) -- card
(PayCard) -- card
@enduml
つづく
つづき
PlantUMLで写経してみてね。
解答例:アクティビティ図
2018/6/16-17 WACATE 2018 Summer
29
@startuml アクティビティ_商品を注文する(非会員)
scale 800 width
center header <back:lightgreen><color:black><b><size:24> 商品を注文する(非会
員) </size></b></color></back>
| 注文者(非会員) |
start
while (買いたい商品) is (まだある)
:1.商品を検索する;
|#lightyellow| システム |
floating note right
実線:主フロー
破線:代替フロー
end note
if (検索結果) then (1件以上)
:1'.商品リストを表示;
else (0件)
-[#gray,dashed]->
:1''.該当商品なしを表示;
-[#gray,dashed]->
:[1]へ戻る;
detach
endif
| 注文者(非会員) |
:2.商品を買い物かごに入れる;
endwhile (もうない)
:3.購入手続きへ進む;
| システム |
PlantUMLで写経してみてね。
if (買い物かごの中の商品) then (1件以上)
:3'.入力フォームを表示;
else (0件)
-[#gray,dashed]->
:3''.商品選択なしを表示;
-[#gray,dashed]->
:[1]へ戻る;
detach
endif
| 注文者(非会員) |
repeat
:4.注文者情報を入力する;
:5支払方法を選択する;
:6.入力内容を確認する;
| システム |
:7.入力チェック;
if (支払方法) then (カード決済)
|#lightgray| カード決済会社 |
:チェック処理;
| システム |
else (代引、振込)
-[#gray,dashed]->
endif
repeat while (チェック結果) is (不備あり) -[#gray,dashed]->
:8.確認画面を表示;
| 注文者(非会員) |
:9.注文を確定する;
| システム |
:10.注文内容をDB登録;
end
@enduml
つづく
つづき

More Related Content

ユースケースとアクティビティとテスト