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
アジャイル・スクラム勉強会_スクラム開発のテスト
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satoshi Harada
September 07, 2020
Programming
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アジャイル・スクラム勉強会_スクラム開発のテスト
Satoshi Harada
September 07, 2020
More Decks by Satoshi Harada
See All by Satoshi Harada
心理学を学び活用することで偉大なスクラムマスターを目指す − 大学とコミュニティを組み合わせた学びの循環 / Becoming a great Scrum Master by learning and using psychology
psj59129
1
2.2k
アジャイル社内普及ご近所さんマップを作ろう / Let's create an agile neighborhood map
psj59129
1
200
製造業メカアジャイルへの挑戦!社内コミュニティを軸にした巻き込み / The challenge of mecha-agile manufacturing
psj59129
1
210
保育士チームが実践している連続的な観察と多面的な観察を共有するための振り返り / Reflection to share “continuous and multifaceted observations” as practiced by a team of childcare professionals
psj59129
1
5.9k
保育とふりかえりをコネクト! / connect childcare and retrospectives!
psj59129
1
1.4k
Whyから始めよう!スクラムチームが力強く前に進むための「なぜやるのか」を考える
psj59129
1
2.8k
その心理的安全性は間違っている!心理的安全性で陥りやすい間違いとその対策
psj59129
1
1.7k
これからのスクラムマスターのキャリアプランの話をしよう - スクラムマスターの前に広がる世界
psj59129
0
3.2k
ファーストペンギンを志すものに伝えたい - 1人目のアジャイル推進者がたどった成功と失敗
psj59129
0
490
Other Decks in Programming
See All in Programming
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
140
AIで効率化できた業務・日常
ochtum
0
140
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
360
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
250
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
260
A2UI という光を覗いてみる
satohjohn
1
140
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
550
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.6k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
210
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
It's Worth the Effort
3n
188
29k
Why Our Code Smells
bkeepers
PRO
340
58k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Unsuck your backbone
ammeep
672
58k
The Cult of Friendly URLs
andyhume
79
6.9k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
150
Visualization
eitanlees
152
17k
Transcript
スクラム開発入門 スクラム開発のテスト アジャイル・スクラム勉強会 Satoshi Harada
WF開発のテストをおさらい • WF開発の設計は工程毎に区切って順番に進める • テストは、各設計工程に対応する内容でこちらも順番に 進める • 設計同様に、テストも前工程に戻ることは良しとしない ► つまり各テストは1回だけ行う想定となっている
※図の出典 https://webrage.jp/techblog/v_shaped_mode/
スクラム開発のテストは? • スクラム開発はスプリントという単位で繰り返し機能を 開発する ► 1つのスプリント内で機能に対する要件定義・設計・実装 ・テストまで行い、機能を完成させる ► 1つのスプリント内で単体テスト・結合テスト・システム テスト・受け入れテストを行う
► スクラムはスプリントの最終日にスプリントレビューを行 うので、これが受け入れテストとなる ※図の出典 https://webrage.jp/techblog/v_shaped_mode/
WFとスクラムで何が異なるのか • テストの回数が異なる ► WFでは、単体テスト・結合テスト・システムテスト・受け入れテストをそ れぞれ1回だけ行う ► スクラムでは、1スプリントで最低1回はテストを行うので、4スプリント あれば最低4回はテストを行う •
テストにかけられる時間が異なる ► WFでは、テスト工程という比較的長期の期間を確保してテストを行う ► スクラムでは、テストのためだけの期間を確保せず、スプリントという限ら れた時間の中でテストを行う必要がある • リグレッションテストの頻度が異なる ► 過去に完成させた機能について、新たに追加した機能で意図しない影響が及 んでいないか確認する必要がある ► WFでも変更があればリグレッションテストは行うが、スクラム開発ではス プリント毎にリグレッションテストを行うためテスト項目数が増えていく これらの理由から、スクラム開発(アジャイル開発)では頻 繁に・短時間で・大量のテスト項目を実施できるしくみを整 える必要がある。
テストの実施方法 手動テスト 自動テスト テストの 実施方法 テストケースの実施手順に 沿って手動で実施 テストコードに沿って自動 で実施 テスト結果の
確認方法 テストケースの確認手順に 沿って目視で結果の正しさ を確認 テストコード内で結果の正 しさが自動で検証されるの で、成功・失敗の結果サマ リーを確認 テスト実施・結果 確認の所要時間 長時間 短時間 テストの正確さ テスターに依存 正確 テストの成果物 • テスト観点 • テストケース • エビデンス • テスト観点 • テストケース • テストコード テストの実施方法は手動テストと自動テストがある。 テストコードが既にある状態であれば、自動テストが断然効率的。 まだテストコードが無い状態だと、まずはテストコード作成に時間 と人的リソースを投資する必要がある。
全てのテストを自動化する? • フロントエンド(HTML, CSS, JavaScriptなど) ► 見栄えに関するコード(HTMLやCSS)は、変更の頻度が多くI/Oで検証でき ないためテスト自動化は難しい ✔ テスト自動化による工数削減よりも、テストコードのメンテナンスコストのほう
が大きくなる場合が多い ✔ デザインが確定したタイミングでUIのスナップショットを作成し、E2Eテストと スナップショットテストを組み合わせてデザインを壊していないか確認するのは 有用 ► ロジックに関するコード(JavaScript)は、UIほど変更頻度が多くなくI/O で検証できるためテスト自動化を進める • バックエンド(Java, C#, PHPなど) ► I/Oで検証ができるため、テスト自動化を進める ✔ DB操作やファイル操作を伴うテストは難易度が上がるが、モックやスタブを駆使 してテスト自動化を進める 自動テストは全パターンのテストケース網羅(テストカバレッジ100%)を目 指すことが目的ではない。 壊れやすい箇所や、壊れたらヤバい箇所を頻繁に・短時間で検証できるよう にすることが目的。そのため、必要だと思う箇所を優先して自動テストを作 成し、必要ではないところには自動テストを作成しないという判断もアリ。
最初からテストコードを書く? • 最初からテストコードを書くのがベストではある ► 併せて、TDD(テスト駆動開発)でテストコードを書きな がら設計を行い、設計完了=テストコードの作成完了であ れば更に良い • 最初は手動テストとし、後からテストコードを追加する のでも良い
► プロジェクト序盤は時間的制約やスキルの問題でテスト コードまで手が回らないことはよくある ► テストコードが無いよりは、後出しでも良いのであったほ うが良い ✔ スプリントが進む毎にリグレッションテストの範囲が増えるの で、手動テストは確実に辛くなる ✔ リファクタリングをしようとしたときに手動テストでしか機能 を壊していないことを確認できないと、怖い&壊していないか どうかの検証が面倒なので手が出せない
テストエンジニアの役割 テストエンジニアというロールが開発チームに参加する場合、テスト エンジニアの役割はWFとスクラムで異なる。 • テストケースの検討やテストコード作成は開発エンジニアが行う ► 理想的には、TDD(テスト駆動開発)でテストコードを書くので、テ ストケースを考えたりテストコードを書くのは開発エンジニアの仕事 • では、テストエンジニアの役割とは?
► テストのルールや観点を考える ✔ どの範囲まではテストコードを書くべきで、どの範囲は手動テストで行う か取り纏める ✔ 単体テスト・結合テスト・システムテスト・受け入れテストではそれぞ れ、どのようなレベルのテストを行うかについて観点として取り纏める ► テスト自動化を推進する ✔ テスト自動化の重要性をチームメンバーに説く ✔ テスト自動化の下地を作る ✔ テストフレームワークの選定 ✔ テストコードの書き方を教育 ✔ アサーションの書き方の例を作る ✔ モックやスタブを使うちょっとむずかしいテストの書き方の例を作る などなど
質問Time ※全員に質問 テストコードを書いたことはありますか? 書いたことがある人は、テストコードを書くと きにどのあたりが難しいと感じましたか? テストコードがあると、ビジネスコードの改善 (リファクタリング)を安全に行うことができ ます。安全に行える理由を説明してください。 また、リファクタリングを行うとどのようなメ リットがありそうでしょうか?