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