Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
©MIXI 2023/04/21 Vantageスタジオ Romi事業部 開発グループ 加藤 修悟 2023 テスト・設計研修
Slide 2
Slide 2 text
©MIXI 2 • 加藤 修悟 (@shugo.kato) a.k.a. ろぐみ • 21新卒 • Vantage スタジオ Romi 事業部 開発グループ • サーバ/フロント/インフラ • なんでもやさん • 好きなキーボード • 7sPro • Keyball61 • HHKB • 好きなエディタ • VS Code 自己紹介
Slide 3
Slide 3 text
©MIXI 3 • 江畑 拓哉 (@takuya.ebata) • 21新卒 • ソーシャルベッティング事業本部 開発室 システム2G アーキテクトT • 運用と開発、あと雑務全般 • 好きなキーボード • Keychron • 好きなエディタ • Emacs 自己紹介
Slide 4
Slide 4 text
©MIXI 4 • 大倉 真一希 (@maiki.okura) • 22新卒 • みてね事業部 プロダクト開発部 プロダクト開発Mグループ アプリ開発チーム • server が多めでたまに iOS, Android など • 好きなキーボード • Mac 標準 • 好きなエディタ • VS Code with Vim 自己紹介
Slide 5
Slide 5 text
©MIXI 5 1. 講義 2. 演習1 (ペアプログラミング) • 実装 • 各チーム同士でコードレビュー & 修正 3. 演習2、 3 … お昼は13:00頃〜を予定 本日の流れ
Slide 6
Slide 6 text
©MIXI 6 講義
Slide 7
Slide 7 text
©MIXI 7 • テスト・ソフトウェアテストとは • ソフトウェアの品質の話 • TDDの話 • テスト技法の話 • テストの7原則 • ペアプログラミング • コードレビューの仕方とされ方 本日の流れ
Slide 8
Slide 8 text
©MIXI 8 みなさん、テスト書いてますか?
Slide 9
Slide 9 text
©MIXI 9 テストと聞いて、 どのようなことを思い浮かべますか?
Slide 10
Slide 10 text
©MIXI 10 テスト != デバッグ テスト: 不具合があることを示すことができるだけ デバッグ: 不具合を取り除くまでの一連の開発活動のこと テスト・ソフトウェアテストとは
Slide 11
Slide 11 text
©MIXI 11 テスト・ソフトウェアテストとは ソフトウェアテストはソフトウェアの品質 を評価して、 運用時の不具合を低減するための 1 つの手段です
Slide 12
Slide 12 text
©MIXI 12 ソフトウェアの品質の話
Slide 13
Slide 13 text
©MIXI 13 ソフトウェア品質特性 • 外部品質特性 • システムの利用者が触れる、見える部分の品質 • 内部品質特性 • システムの利用者からは見えない内側の部分の品質 ソフトウェアの品質
Slide 14
Slide 14 text
©MIXI 14 引用: 『つながる世界のソフトウェア品質ガイド あたらしい価値提供のための品質モデル活用のすすめ 』P30 図2.3-3 (https://www.ipa.go.jp/publish/qv6pgp0000000wkj-att/000055008.pdf) ソフトウェアの品質
Slide 15
Slide 15 text
©MIXI 15 引用: https://iso25000.com/index.php/en/iso-25000-standards/iso-25010 ソフトウェアの品質
Slide 16
Slide 16 text
©MIXI 16 TDD
Slide 17
Slide 17 text
©MIXI 17 • TDD (Test-Driven Development / テスト駆動開発) • Red, Green, Refactor のサイクルを回す 1. まずはテストを書く (Red) a. 実装はないのでもちろんテストは落ちる 2. テストを通すために、実装をする (Green) a. まずはテストを通すことを考えてみる 3. リファクタリングする (Refactor) TDD Red Green Refactor
Slide 18
Slide 18 text
©MIXI 18 • テストが落ちること • 落ちるはずのテストが通っちゃうと・・・? • テストを通すことをだけを考えてみる • 通るはずのテストが通らないときは・・・? TDD
Slide 19
Slide 19 text
©MIXI 19 テスト駆動開発は、テストを書くことがゴールなのではなく、 開発中に感じる様々な不安を自身でコントロールしていく手法 TDD
Slide 20
Slide 20 text
©MIXI 20 • テストが書きづらいとき • 副作用が多くないか? • 責務を持ちすぎてないか? もしくは不明瞭ではないか? TDDのコツ
Slide 21
Slide 21 text
©MIXI 21 ライブコーディング
Slide 22
Slide 22 text
©MIXI 22 テスト技法の話
Slide 23
Slide 23 text
©MIXI 23 • テストのレベル • 単体テスト (Unit testing) • もっとも小さなテスト • クラス、メソッド単位 (言語・テストライブラリ等で異なる) • 統合テスト (Integration testing) • 単体テストよりも大きな範囲のテスト • システムテスト (System testing) • ソフトウェア全体のテスト • 受け入れテスト (User Acceptance Testing) • 顧客がソフトウェアを受け入れる時のテスト テスト技法
Slide 24
Slide 24 text
©MIXI 24 • テストの種別 • ブラックボックステスト • 仕様や要件に基づいてテストを実施するテスト • 実装レベルの知識は必要としない • ホワイトボックステスト • 実装レベルの知識に基づいて実施するテスト • ソフトウェアの内部パス、構造、実装 ... • グレーボックステスト • 実装をある程度調べた上で、ブラックボックステストのテストケースを効率的に選択していく テスト技法
Slide 25
Slide 25 text
©MIXI 25 • ブラックボックステスト • 同値クラステスト • 境界値テスト • …. • ホワイトボックステスト • 制御フローテスト • データフローテスト テスト技法
Slide 26
Slide 26 text
©MIXI 26 同値クラステスト • 同値クラスに分け、代表値を選んでテストケースを作る • 例 • 入力値は0~100 • 0~19は未成年、20~100は成人 と返すプログラムを考える テスト技法
Slide 27
Slide 27 text
©MIXI 27 境界値テスト • 同値クラステストを元に、境界値に注目したテスト • パーティションの最小値と最大値、または最初の値と最後の値を選んでテストする • -1, 0, 19, 20, 100, 101 テスト技法
Slide 28
Slide 28 text
©MIXI 28 1. テストは欠陥があることは示せるが、欠陥がないことは示せない 2. 全数テストは不可能 3. 早期テストで時間とコストを節約 4. 欠陥の偏在 5. 殺虫剤のパラドックスにご用心 6. テストは状況次第 7. 「バグゼロ」の落とし穴 テストの7原則
Slide 29
Slide 29 text
©MIXI 29 ペアプログラミング
Slide 30
Slide 30 text
©MIXI 30 • ドライバー • 実際に操作する人 • ナビゲーター • ドライバーの操作を眺めつつ、助ける人 • 定期的に役割を入れ替えながら進める ペアプログラミング
Slide 31
Slide 31 text
©MIXI 31 うまくやるコツ • ドライバー • 今、何をやろうとしているか、やっているかを明確にする (発言する) • ナビゲーター • 良い方法を思いついたり、ミスに気づいたりしたときに、積極的に発言する • ドライバーが何をやろうとしていることが良くわからなくなったら、すぐに聞く commit & push してれば、役割交代はしやすいはず・・・? ペアプログラミング
Slide 32
Slide 32 text
©MIXI 33 (敬称略) チューター: A, B 加藤、C,D 江畑、E,F 大倉 ペアプログラミング
Slide 33
Slide 33 text
©MIXI 34 コードレビューをしよう
Slide 34
Slide 34 text
©MIXI 35 • チームごとに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 コードレビューをしよう
Slide 35
Slide 35 text
©MIXI 36 • コードレビューの目的 • コードの品質の保証 • コードの共有 • 設計や作戦の共有 コードレビューをしよう
Slide 36
Slide 36 text
©MIXI 37 • どうすれば、レビューが通りやすいかを考えよう • PR の説明をしっかり書こう • どういう背景、理由で、どういうものを作った、など • 重点的にレビューして欲しいところや、実装していてよく分からなかったところ、など • 行単位でコメント/会話ができるのでそれも活用しよう • JIRA のチケットや、関連 PR, issue など • 背景の詳細や、仕様などを追いやすい • 監査などのときに、追いやすい、など • どういうタイミングでマージして欲しい、など (QA終わるまで待って、など) コードレビューをしよう
Slide 37
Slide 37 text
©MIXI 38 • レビューは人格攻撃ではない (心理的安全性) • レビューする側もされる側も攻撃ではないことを意識する • わからないところは聞こう • 褒めよう! • この人はこういうところをレビューしてくるだろうなぁと考えてみる コードレビューをしよう
Slide 38
Slide 38 text
©MIXI 39 • SQuBOK Guide V3 • テスト駆動開発 • はじめて学ぶソフトウェアのテスト技法 • ソフトウェアテスト技法 参考文献
Slide 39
Slide 39 text
©MIXI