Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

889 views

Published on

WACATE 2018 夏セッション資料

Published in: Software
  • Be the first to comment

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

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

×