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
テスト・設計研修【ミクシィ22新卒技術研修】
Search
MIXI ENGINEERS
PRO
April 14, 2022
Programming
10
90k
テスト・設計研修【ミクシィ22新卒技術研修】
22新卒技術研修で実施したテスト・設計研修の講義資料です。
動画:
https://youtu.be/T4sL4XXZ4Ug
MIXI ENGINEERS
PRO
April 14, 2022
Tweet
Share
More Decks by MIXI ENGINEERS
See All by MIXI ENGINEERS
セキュリティ監視の内製化 効率とリスク
mixi_engineers
PRO
7
910
「共闘ことばRPG コトダマン」 SREチーム流 アプリのユーザー体験向上を支えるオブザーバビリティ
mixi_engineers
PRO
1
170
MIXI M のこれまでとこれから / Welcome Fintech Community #2
mixi_engineers
PRO
1
110
Git 研修 Advanced【MIXI 24新卒技術研修】
mixi_engineers
PRO
3
560
データベース研修 DB基礎【MIXI 24新卒技術研修】
mixi_engineers
PRO
5
720
データベース研修 分析向けSQL入門【MIXI 24新卒技術研修】
mixi_engineers
PRO
4
360
テスト・設計研修【MIXI 24新卒技術研修】
mixi_engineers
PRO
3
460
コンテナ・K8s研修 - 前半 コンテナ基礎・ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
2
460
コンテナ・K8s研修 - 後半 Kubernetes 基礎&ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
4
290
Other Decks in Programming
See All in Programming
REXML改善のその後
naitoh
0
190
GenU導入でCDKに初挑戦し、悪戦苦闘した話
hideg
0
150
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
130
The Shape of a Service Object
inem
0
490
Swiftコードバトル必勝法
toshi0383
0
150
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
320
Increased Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
200
Modular Monolith Go Server with GraphQL Federation + gRPC
110y
1
580
2024 컴포즈 정원사
jisungbin
0
150
私のEbitengineの第一歩
qt_luigi
0
440
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
220
マルチモジュールにおけるテスト最適化
fxwx23
0
200
Featured
See All Featured
Building an army of robots
kneath
302
42k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
29
2.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
48k
Git: the NoSQL Database
bkeepers
PRO
425
64k
VelocityConf: Rendering Performance Case Studies
addyosmani
322
23k
Making the Leap to Tech Lead
cromwellryan
128
8.8k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Visualization
eitanlees
142
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
89
16k
A Tale of Four Properties
chriscoyier
155
22k
From Idea to $5000 a Month in 5 Months
shpigford
379
46k
Transcript
2022/04/14 モンスト事業本部 開発室 モンストサーバG 岡住 和樹 2022 テスト・設計研修
• 岡住 和樹 (@zumin) • 19新卒 (4年目らしい) • モンスト事業本部 開発室
モンストサーバG • 好きなもの • お酒 • ゲーム • 好きなエディタ • Vim 自己紹介 2
• 加藤 修悟 (@shugo.kato) a.k.a. ろぐみ • 21新卒 • Vantage
スタジオ Romi 事業部 開発グループ • サーバ/フロント/インフラもひとつまみ • 好きなキーボード • HHKB • 好きなエディタ • VSCode 3 自己紹介
• 江畑 拓哉 (@takuya.ebata) • 21新卒 • 次世代エンターテイメント事業本部 TIPSTAR開発部 システム2G
アーキテクトT • 運用と開発、あと庶務 • 好きなキーボード • FILCO • 好きなエディタ • Emacs 4 自己紹介
1. 講義 2. 演習1 (ペアプログラミング) • 実装 • 各チーム同士でコードレビュー &
修正 3. 演習2, 3 … お昼は13:00頃〜を予定 5 本日の流れ
6 講義
• テスト・ソフトウェアテストとは • ソフトウェアの品質の話 • TDDの話 • テスト技法の話 • テストの7原則
• ペアプログラミング • コードレビューの仕方とされ方 7 本日の流れ
8 みなさん、テスト書いてますか?
9 テストと聞いて、 どのようなことを思い浮かべますか?
テスト != デバッグ テスト: 不具合があることを示すことができるだけ デバッグ: 不具合を取り除くまでの一連の開発活動のこと 10 テスト・ソフトウェアテストとは
テスト・ソフトウェアテストとは ソフトウェアテストはソフトウェアの品質 を評価して、 運用時の不具合を低減するための 1 つの手段です 11
12 ソフトウェアの品質の話
ソフトウェア品質特性 • 外部品質特性 • システムの利用者が触れる、見える部分の品質 • 内部品質特性 • システムの利用者からは見えない内側の部分の品質 13
ソフトウェアの品質
引用: 『つながる世界のソフトウェア品質ガイド あたらしい価値提供のための品質モデル活用のすすめ 』P23 図2.3-3 (https://www.ipa.go.jp/files/000044964.pdf) 14 ソフトウェアの品質
引用: https://iso25000.com/index.php/en/iso-25000-standards/iso-25010 15 ソフトウェアの品質
16 TDD
• TDD (Test-driven development / テスト駆動開発) • Red, Green, Refactor
のサイクルを回す 1. まずはテストを書く (Red) a. 実装はないのでもちろんテストは落ちる 2. テストを通すために、実装をする (Green) a. ここでは、まずはテストを通すことを考えてみる 3. リファクタリングする (Refactor) 17 TDD
• テストが落ちること • 落ちるはずのテストが通っちゃうと・・・? • テストを通すことをだけを考えてみる • 通るはずのテストが通らないときは・・・? 18 TDD
テスト駆動開発は、テストを書くことがゴールなのではなく、 開発中に感じる様々な不安を自身でコントロールしていく手法 19 TDD
• テストが書きづらいとき • 副作用が多くないか? • 責務を持ちすぎてないか? もしくは不明瞭ではないか? 20 TDDのこつ
21 ライブコーディング
22 テスト技法の話
• テストのレベル • 単体テスト (Unit testing) • もっとも小さなテスト • クラス、メソッド単位
(言語で異なる) • 統合テスト (Integration testing) • 単体テストよりも大きな範囲のテスト • システムテスト (System testing) • ソフトウェア全体のテスト • 受け入れテスト (User Acceptance Testing) • 顧客がソフトウェアを受け入れる時のテスト 23 テスト技法
• テストの種別 • ブラックボックステスト • 仕様や要件に基づいてテストを実施するテスト • 実装レベルの知識は必要としない • ホワイトボックステスト
• 実装レベルの知識に基づいて実施するテスト • ソフトウェアの内部パス、構造、実装 ... • グレーボックステスト • 実装をある程度調べた上で、ブラックボックステストのテストケースを効率的に選択していく 24 テスト技法
• ブラックボックステスト • 同値クラステスト • 境界値テスト • …. • ホワイトボックステスト
• 制御フローテスト • データフローテスト 25 テスト技法
同値クラステスト • 同値クラスに分け、代表値を選んでテストケースを作る • 例 • 入力値は0~100 • 0~19は未成年、20~100は成人 と返すプログラムを考える
26 テスト技法
境界値テスト • 同値クラステストを元に、境界値に注目したテスト • パーティションの最小値と最大値、または最初の値と最後の値を選んでテストする • -1, 0, 19, 20,
100, 101 27 テスト技法
1. テストは欠陥があることは示せるが、欠陥がないことは示せない 2. 全数テストは不可能 3. 早期テストで時間とコストを節約 4. 欠陥の偏在 5. 殺虫剤のパラドックスにご用心
6. テストは状況次第 7. 「バグゼロ」の落とし穴 28 テストの7原則
29 ペアプログラミング
• ドライバー • 実際に操作する人 • ナビゲーター • ドライバーの操作を眺めつつ、助ける人 • 定期的に役割を入れ替えながら進める
30 ペアプログラミング
うまくやるこつ • ドライバー • 今、何をやろうとしているか、やっているかを明確にする (発言する) • ナビゲーター • 良い方法を思いついたり、ミスに気づいたりしたときに、積極的に発言する
• ドライバーが何をやろうとしていることが良くわからなくなったら、すぐに聞く commit & push してれば、役割交代はしやすいはず・・・? 31 ペアプログラミング
33 コードレビューの仕方とされ方
• チームごとにteam-A,B,C,D,E,F ブランチ向きにPRを作ってください • レビューするチーム • 演習1: A → B、
B → C、 C → D、 D → E、E → F、F → A • 演習2: A → C、 B → D、 C → A、 D → B … • 時間が余ったら他のチームをレビューしてもOK 34 コードレビューの仕方とされ方
• どうすれば、マージされやすいかを考えてみる • PRの説明をしっかり書く • どういう背景で、どういう理由で、どういうものを作った、など • 重点的にレビューして欲しいところや、実装していてよく分からなかったところ、など • JIRAのチケットや、関連PR,issueなど
• 背景の詳細や、仕様などを追いやすい • 監査などのときに、追いやすい、など • どういうタイミングでマージして欲しい、など (QAチームによるテストが終わってか ら、など) 35 コードレビューの仕方とされ方
• レビューは人格攻撃ではない (心理的安全性) • わからないところは聞こう • 褒めよう! • この人はこういうところをレビューしてくるだろうなぁと考えてみる 36
コードレビューの仕方とされ方
• SQuBOK Guide V3 • テスト駆動開発 • はじめて学ぶソフトウェアのテスト技法 • ソフトウェアテスト技法
37 参考文献
None