Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テスト・設計研修【MIXI 23新卒技術研修】

テスト・設計研修【MIXI 23新卒技術研修】

23新卒技術研修で実施したテスト・設計研修の講義資料です。

動画:https://youtu.be/xR-LWJ4MAEM

資料の利用について
公開している資料は勉強会や企業の研修などで自由にご利用頂いて大丈夫ですが、以下の形での利用だけご遠慮ください。
・受講者から参加費や授業料などを集める形での利用(会場費や飲食費など勉強会運営に必要な実費を集めるのは問題ありません)
・出典を削除または改変しての利用

MIXI ENGINEERS
PRO

April 21, 2023
Tweet

More Decks by MIXI ENGINEERS

Other Decks in Technology

Transcript

  1. ©MIXI
    2023/04/21
    Vantageスタジオ Romi事業部 開発グループ
    加藤 修悟
    2023 テスト・設計研修

    View Slide

  2. ©MIXI
    2
    • 加藤 修悟 (@shugo.kato) a.k.a. ろぐみ
    • 21新卒
    • Vantage スタジオ Romi 事業部 開発グループ
    • サーバ/フロント/インフラ
    • なんでもやさん
    • 好きなキーボード
    • 7sPro
    • Keyball61
    • HHKB
    • 好きなエディタ
    • VS Code
    自己紹介

    View Slide

  3. ©MIXI
    3
    • 江畑 拓哉 (@takuya.ebata)
    • 21新卒
    • ソーシャルベッティング事業本部 開発室
    システム2G アーキテクトT
    • 運用と開発、あと雑務全般
    • 好きなキーボード
    • Keychron
    • 好きなエディタ
    • Emacs
    自己紹介

    View Slide

  4. ©MIXI
    4
    • 大倉 真一希 (@maiki.okura)
    • 22新卒
    • みてね事業部 プロダクト開発部
    プロダクト開発Mグループ アプリ開発チーム
    • server が多めでたまに iOS, Android など
    • 好きなキーボード
    • Mac 標準
    • 好きなエディタ
    • VS Code with Vim
    自己紹介

    View Slide

  5. ©MIXI
    5
    1. 講義
    2. 演習1 (ペアプログラミング)
    • 実装
    • 各チーム同士でコードレビュー & 修正
    3. 演習2、 3 …
    お昼は13:00頃〜を予定
    本日の流れ

    View Slide

  6. ©MIXI
    6
    講義

    View Slide

  7. ©MIXI
    7
    • テスト・ソフトウェアテストとは
    • ソフトウェアの品質の話
    • TDDの話
    • テスト技法の話
    • テストの7原則
    • ペアプログラミング
    • コードレビューの仕方とされ方
    本日の流れ

    View Slide

  8. ©MIXI
    8
    みなさん、テスト書いてますか?

    View Slide

  9. ©MIXI
    9
    テストと聞いて、
    どのようなことを思い浮かべますか?

    View Slide

  10. ©MIXI
    10
    テスト != デバッグ
    テスト: 不具合があることを示すことができるだけ
    デバッグ: 不具合を取り除くまでの一連の開発活動のこと
    テスト・ソフトウェアテストとは

    View Slide

  11. ©MIXI
    11
    テスト・ソフトウェアテストとは
    ソフトウェアテストはソフトウェアの品質 を評価して、
    運用時の不具合を低減するための 1 つの手段です

    View Slide

  12. ©MIXI
    12
    ソフトウェアの品質の話

    View Slide

  13. ©MIXI
    13
    ソフトウェア品質特性
    • 外部品質特性
    • システムの利用者が触れる、見える部分の品質
    • 内部品質特性
    • システムの利用者からは見えない内側の部分の品質
    ソフトウェアの品質

    View Slide

  14. ©MIXI
    14
    引用: 『つながる世界のソフトウェア品質ガイド あたらしい価値提供のための品質モデル活用のすすめ 』P30 図2.3-3
    (https://www.ipa.go.jp/publish/qv6pgp0000000wkj-att/000055008.pdf)
    ソフトウェアの品質

    View Slide

  15. ©MIXI
    15
    引用: https://iso25000.com/index.php/en/iso-25000-standards/iso-25010
    ソフトウェアの品質

    View Slide

  16. ©MIXI
    16
    TDD

    View Slide

  17. ©MIXI
    17
    • TDD (Test-Driven Development / テスト駆動開発)
    • Red, Green, Refactor のサイクルを回す
    1. まずはテストを書く (Red)
    a. 実装はないのでもちろんテストは落ちる
    2. テストを通すために、実装をする (Green)
    a. まずはテストを通すことを考えてみる
    3. リファクタリングする (Refactor)
    TDD
    Red
    Green
    Refactor

    View Slide

  18. ©MIXI
    18
    • テストが落ちること
    • 落ちるはずのテストが通っちゃうと・・・?
    • テストを通すことをだけを考えてみる
    • 通るはずのテストが通らないときは・・・?
    TDD

    View Slide

  19. ©MIXI
    19
    テスト駆動開発は、テストを書くことがゴールなのではなく、
    開発中に感じる様々な不安を自身でコントロールしていく手法
    TDD

    View Slide

  20. ©MIXI
    20
    • テストが書きづらいとき
    • 副作用が多くないか?
    • 責務を持ちすぎてないか? もしくは不明瞭ではないか?
    TDDのコツ

    View Slide

  21. ©MIXI
    21
    ライブコーディング

    View Slide

  22. ©MIXI
    22
    テスト技法の話

    View Slide

  23. ©MIXI
    23
    • テストのレベル
    • 単体テスト (Unit testing)
    • もっとも小さなテスト
    • クラス、メソッド単位 (言語・テストライブラリ等で異なる)
    • 統合テスト (Integration testing)
    • 単体テストよりも大きな範囲のテスト
    • システムテスト (System testing)
    • ソフトウェア全体のテスト
    • 受け入れテスト (User Acceptance Testing)
    • 顧客がソフトウェアを受け入れる時のテスト
    テスト技法

    View Slide

  24. ©MIXI
    24
    • テストの種別
    • ブラックボックステスト
    • 仕様や要件に基づいてテストを実施するテスト
    • 実装レベルの知識は必要としない
    • ホワイトボックステスト
    • 実装レベルの知識に基づいて実施するテスト
    • ソフトウェアの内部パス、構造、実装 ...
    • グレーボックステスト
    • 実装をある程度調べた上で、ブラックボックステストのテストケースを効率的に選択していく
    テスト技法

    View Slide

  25. ©MIXI
    25
    • ブラックボックステスト
    • 同値クラステスト
    • 境界値テスト
    • ….
    • ホワイトボックステスト
    • 制御フローテスト
    • データフローテスト
    テスト技法

    View Slide

  26. ©MIXI
    26
    同値クラステスト
    • 同値クラスに分け、代表値を選んでテストケースを作る
    • 例
    • 入力値は0~100
    • 0~19は未成年、20~100は成人 と返すプログラムを考える
    テスト技法

    View Slide

  27. ©MIXI
    27
    境界値テスト
    • 同値クラステストを元に、境界値に注目したテスト
    • パーティションの最小値と最大値、または最初の値と最後の値を選んでテストする
    • -1, 0, 19, 20, 100, 101
    テスト技法

    View Slide

  28. ©MIXI
    28
    1. テストは欠陥があることは示せるが、欠陥がないことは示せない
    2. 全数テストは不可能
    3. 早期テストで時間とコストを節約
    4. 欠陥の偏在
    5. 殺虫剤のパラドックスにご用心
    6. テストは状況次第
    7. 「バグゼロ」の落とし穴
    テストの7原則

    View Slide

  29. ©MIXI
    29
    ペアプログラミング

    View Slide

  30. ©MIXI
    30
    • ドライバー
    • 実際に操作する人
    • ナビゲーター
    • ドライバーの操作を眺めつつ、助ける人
    • 定期的に役割を入れ替えながら進める
    ペアプログラミング

    View Slide

  31. ©MIXI
    31
    うまくやるコツ
    • ドライバー
    • 今、何をやろうとしているか、やっているかを明確にする (発言する)
    • ナビゲーター
    • 良い方法を思いついたり、ミスに気づいたりしたときに、積極的に発言する
    • ドライバーが何をやろうとしていることが良くわからなくなったら、すぐに聞く
    commit & push してれば、役割交代はしやすいはず・・・?
    ペアプログラミング

    View Slide

  32. ©MIXI
    33
    (敬称略)
    チューター: A, B 加藤、C,D 江畑、E,F 大倉
    ペアプログラミング

    View Slide

  33. ©MIXI
    34
    コードレビューをしよう

    View Slide

  34. ©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
    コードレビューをしよう

    View Slide

  35. ©MIXI
    36
    • コードレビューの目的
    • コードの品質の保証
    • コードの共有
    • 設計や作戦の共有
    コードレビューをしよう

    View Slide

  36. ©MIXI
    37
    • どうすれば、レビューが通りやすいかを考えよう
    • PR の説明をしっかり書こう
    • どういう背景、理由で、どういうものを作った、など
    • 重点的にレビューして欲しいところや、実装していてよく分からなかったところ、など
    • 行単位でコメント/会話ができるのでそれも活用しよう
    • JIRA のチケットや、関連 PR, issue など
    • 背景の詳細や、仕様などを追いやすい
    • 監査などのときに、追いやすい、など
    • どういうタイミングでマージして欲しい、など (QA終わるまで待って、など)
    コードレビューをしよう

    View Slide

  37. ©MIXI
    38
    • レビューは人格攻撃ではない (心理的安全性)
    • レビューする側もされる側も攻撃ではないことを意識する
    • わからないところは聞こう
    • 褒めよう!
    • この人はこういうところをレビューしてくるだろうなぁと考えてみる
    コードレビューをしよう

    View Slide

  38. ©MIXI
    39
    • SQuBOK Guide V3
    • テスト駆動開発
    • はじめて学ぶソフトウェアのテスト技法
    • ソフトウェアテスト技法
    参考文献

    View Slide

  39. ©MIXI

    View Slide