Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
試験に役立つモデリングの紹介/The Introduction to Modeling for Testing
Search
Cybozu
PRO
September 12, 2020
Technology
0
240
試験に役立つモデリングの紹介/The Introduction to Modeling for Testing
Cybozu
PRO
September 12, 2020
Tweet
Share
More Decks by Cybozu
See All by Cybozu
Recruitment Pitch in New Business Division
cybozuinsideout
PRO
0
12
サイボウズ Office/メールワイズチームの改善の取り組み「困りごと共有会」
cybozuinsideout
PRO
1
16
サイボウズのOSPO
cybozuinsideout
PRO
1
91
非エンジニアの私が試行錯誤の末見出したスクラムマスターの道
cybozuinsideout
PRO
2
130
Kubernetes でもJava アプリでTLS 接続を終端したい
cybozuinsideout
PRO
2
150
Google I/O - 2024 What’s new in flutter
cybozuinsideout
PRO
2
260
Waffle Festival2024(斉藤裕希)
cybozuinsideout
PRO
3
560
主体的な活動で巨大な影響範囲のテストを乗りこなしていく話
cybozuinsideout
PRO
2
360
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
40k
Other Decks in Technology
See All in Technology
テスト・設計研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
170
GoとアクターモデルでES+CQRSを実践! / proto_actor_es_cqrs
ytake
1
160
データ分析を支える技術 生成AI再入門
ishikawa_satoru
0
380
Flutter研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
160
ソフトウェアエンジニアリングの知見を活かして データ基盤をいい感じにする on Snowflake [MIERUNE BBQ #10]
mtpooh
2
150
累計ダウンロード数1億8000万を超えるアプリケーションプラットフォームのレガシーシステム脱却とモダン化への道
kmitsuhashi
0
120
What if...? 처음부터 다시 LLM 어플리케이션을 개발한다면
huffon
0
1k
E2Eテスト自動化プラットフォームにおけるAIの活用
shift_evolve
0
190
大規模ドラレコデータ収集・機械学習基盤を支える AWS CDK 〜導入・運用事例紹介〜
pemugi
0
110
プレイドにおけるDatadog APMの活用方法
plaidtech
PRO
2
120
たくさん本を読んだけど 1年後には綺麗サッパリ!を乗り越えて 学習の鬼になるぞ👹
yum3
0
160
「我々はどこに向かっているのか」を問い続けるための仕組みづくり / Establishing a System for Continuous Inquiry about where we are
daitasu
0
170
Featured
See All Featured
WebSockets: Embracing the real-time Web
robhawkes
59
7.2k
Thoughts on Productivity
jonyablonski
64
4.1k
BBQ
matthewcrist
82
9k
Bash Introduction
62gerente
607
210k
For a Future-Friendly Web
brad_frost
173
9.2k
Optimizing for Happiness
mojombo
373
69k
Leading Effective Engineering Teams 2024
addyosmani
3
300
XXLCSS - How to scale CSS and keep your sanity
sugarenia
245
1.2M
Done Done
chrislema
179
15k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
How GitHub Uses GitHub to Build GitHub
holman
471
290k
Code Reviewing Like a Champion
maltzj
517
39k
Transcript
試験に役⽴つ モデリングの紹介 サイボウズ 株式会社 渡邉 豊幹
渡邉 豊幹 ⾃⼰紹介 2011年新卒⼊社、QA 現在は販売管理システムを担当 サイボウズ株式会社 開発本部
中⼩企業向けグループウェア ⼤企業向けグループウェア 業務アプリ構築クラウド メール共有システム 製品紹介
• モデルを作成し、試験に活⽤した話 • メリットと作成時のポイント お話しすること
アジェンダ 担当プロダクト/チームの紹介と抱えていた問題 実施した解決策「モデルセットを作成する」 作成時のポイントとコストについて 今後の展望
担当プロダクト • ⽶国市場向けの販売管理システム • ユーザー 1. 製品のエンドユーザー • 試⽤申し込みや契約 など
2. 社内のセールスチーム • 特別価格での発注やライセンス管理、 キャンペーンの設定 など ൢചཧγεςϜ ֎෦αʔϏε End User Sales Team
チームの紹介 チーム構成 開発スタイル 状況
チームの紹介 チーム構成 開発スタイル 状況 • 開発チームは6名(うち QAは3⼈) • セキュリティ検証は社内専⾨チームに依頼 QA
チームの紹介 チーム構成 開発スタイル 状況 • スクラム開発(1スプリント1週間) • リリース頻度は約2回/週 試験後に QA
がリリース
チームの紹介 チーム構成 開発スタイル 状況 実装前に全て設計することや、内部の詳細な ドキュメントを作成することはせず、 段階的に開発を⾏いリリースしている 事前に全てを 設計しない
チームの紹介 開発スタイル 状況 1. 開発が進むにつれて処理が複雑になる 2. 各機能の仕様書はあるが、全体像を把握で きるドキュメントが無い チーム構成 個々の
機能仕様書は あるけど…
開発上の問題点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い
開発上の問題点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い 連携している外部サービスとのシステム境界が 複雑になり、試験設計の難易度が上がる
開発上の問題点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い 個々の機能の詳細な仕様書はあるが、 全体像を把握するための資料が無い
開発上の問題点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い 基本的なケースのモデルを 作成して解決できないか
なぜモデルが必要? ひも? • ⽂書よりイメージの⽅が概要をうまく掴める • 細かい点だけに着⽬すると全体像を掴みにくい かべ?
モデルに着⽬したきっかけ 平鍋健児さんを招いて開催された社内勉強会 • アジャイルにおいて必要⼗分な設計とは? • ⼀貫性を保って開発するには? • 効果的な対話のために必要なものは? → シンプルなモデルセット(Keeps)を
作成する、というアイディアを知る Keeps!
Keeps? モデル モデルとして残すもの ・安定している ・寿命が⻑い Keeps 残さないもの ・実装中に変わる ・⼀度共有して捨てる Temps
Keeps? モデル モデルとして残すもの ・安定している ・寿命が⻑い Keeps 残さないもの ・実装中に変わる ・⼀度共有して捨てる Temps
共通理解を促す シンプルな モデルセット
作成したKeepsの紹介 Keeps システム全体の構造を表すもの Architecture 業務で扱う対象とそれらの繋がりを表したもの Domain Model ユーザーから⾒たシステムの代表的な使い⽅ Key Use
Cases
作成したKeepsの紹介 Keeps システム全体の構造を表すもの Architecture 業務で扱う対象とそれらの繋がりを表したもの Domain Model ユーザーから⾒たシステムの代表的な使い⽅ Key Use
Cases
作成したKeepsの紹介 Keeps システム全体の構造を表すもの Architecture 業務で扱う対象とそれらの繋がりを表したもの Domain Model ユーザーから⾒たシステムの代表的な使い⽅ Key Use
Cases
作成したKeepsの紹介 Keeps システム全体の構造を表すもの Architecture 業務で扱う対象とそれらの繋がりを表したもの Domain Model ユーザーから⾒たシステムの代表的な使い⽅ Key Use
Cases
作成したKeepsの紹介 Keeps システム全体の構造を表すもの Architecture 業務で扱う対象とそれらの繋がりを表したもの Domain Model ユーザーから⾒たシステムの代表的な使い⽅ Key Use
Cases ユースケース図 コミュニケーション図
ユースケース図 ※⼀部秘密情報のため、実際の表現を変えています
ユースケース図 特定の操作の 影響範囲がわかる ※⼀部秘密情報のため、実際の表現を変えています
コミュニケーション図 渡されるデータや 実⾏ API を記載 ※⼀部秘密情報のため、実際の表現を変えています
改善できた点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い
改善できた点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い 1. 連携サービスとの境界や、サービスが実⾏される タイミングが分かりやすくなった 2. 仕様書では細かい挙動に注⽬しがちだが、 俯瞰して影響範囲を⾒ることができる
改善できた点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い 1. システム全体で各ユーザーがどのような操作を ⾏うのか、俯瞰して⾒ることができる 2. 各ユースケースごとのシステムの振る舞いに ついても概要が把握しやすい
改善できた点 試験の影響範囲が把握しにくい 新規メンバー/他チームへの教育コストが⾼い その他 1. モニタリング対象の API を洗い出す際に活⽤ 2. E2E
のテストの改善で活⽤
作成時のポイント ⽬的を明確にする チーム内で合意をとる ツールを活⽤する
作成時のポイント ⽬的を明確にする チーム内で合意をとる ツールを活⽤する 1. スコープを明確にし、作りすぎを防ぐ 2. 作成するケースを最⼩限に抑える ゴール
作成時のポイント ⽬的を明確にする チーム内で合意をとる ツールを活⽤する 1. メンテナンスコスト含めて検討する 2. 更新すべき情報について共有する 協⼒が不可⽋
作成時のポイント ⽬的を明確にする チーム内で合意をとる ツールを活⽤する PlantUML を使⽤し作成コストを抑えた
作成時のポイント 1. 誰でも同じような図を作成できる 2. コードなので git でバージョン管理できる ⾒た⽬の微調整が難しいが、厳密な表現より 概要を把握できることを優先して使⽤ PlantUML
コードで UML を作成するツール
メンテナンスについて ルール 作成コスト メンテナンスコスト
メンテナンスについて ルール 作成コスト メンテナンスコスト • 開発時(仕様変更時)に PG/QA が修正 • 上記ルールは他の機能仕様書などと同様
既存のプロセスに 合わせる形で開始
メンテナンスについて ルール 作成コスト メンテナンスコスト • 10⼈⽇程度 • 計11枚の図と説明を作成 クラス図 ×1
オブジェクト図×1 ER図×1 コミュニケーション図×1 ユースケース図×7
メンテナンスについて ルール 作成コスト メンテナンスコスト • 2020年6⽉の運⽤開始後、誤りを⼀度修正 • 仕様変更による修正はまだ無し
今後の展望 チーム内⽤語を記載 ADR の記載
今後の展望 チーム内⽤語を記載 ADR の記載 チーム特有の⽤語を定義し記載することで 認識に齟齬が⽣じることを防ぐ
今後の展望 チーム内⽤語を記載 ADR の記載 Architecture Decision Records と呼ばれる、 アーキテクチャ上重要な意思決定の 背景を記載し、暗黙知が増えることを防ぐ
まとめ • 下記問題を解決するために Keeps を作成した • 試験の影響範囲が把握しにくい • 新規メンバー/他チームの教育コストが⾼い •
作成ポイント • ⽬的を明確にする • チーム内で作成について合意をとる • 楽に作成できるツールを活⽤する • メンテナンスのルールを決める • 今後の展望 • ⽤語の定義と ADR を記載する
参考情報 • 平鍋健児さんの資料 「 Modeling in the Agile Age」 https://www.slideshare.net/hiranabe/modelin
g-in-the-agile-age-228224347 • PlantUML https://plantuml.com/