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
92k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト・設計研修【ミクシィ22新卒技術研修】
22新卒技術研修で実施したテスト・設計研修の講義資料です。
動画:
https://youtu.be/T4sL4XXZ4Ug
MIXI ENGINEERS
PRO
April 14, 2022
More Decks by MIXI ENGINEERS
See All by MIXI ENGINEERS
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
200
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
220
13年運用タイトルのサーバーサイドが辿り着いた現在地 ― モンスターストライクにおける技術・組織・AI活用から得た知見
mixi_engineers
PRO
1
370
脱Jenkins、インターン生が挑んだCIツールGitHubActions移行
mixi_engineers
PRO
1
300
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
32
27k
WEBフロントエンド研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
890
AI研修(Day1)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
3.1k
AI研修(Day2)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
1.6k
データ活用研修 問いの発見と仮説構築【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
720
Other Decks in Programming
See All in Programming
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
230
Foundation Models frameworkで画像分析
ryodeveloper
1
250
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
140
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.5k
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
190
今さら聞けない .NET CLI
htkym
0
170
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
790
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
450
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
140
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
130
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
4.2k
Featured
See All Featured
Design in an AI World
tapps
1
270
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Accessibility Awareness
sabderemane
1
170
The Mindset for Success: Future Career Progression
greggifford
PRO
0
430
Visualization
eitanlees
152
17k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Producing Creativity
orderedlist
PRO
348
40k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The Language of Interfaces
destraynor
162
27k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
250
Git: the NoSQL Database
bkeepers
PRO
432
67k
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