Slide 1

Slide 1 text

2022/04/14 モンスト事業本部 開発室 モンストサーバG 岡住 和樹 2022 テスト・設計研修

Slide 2

Slide 2 text

• 岡住 和樹 (@zumin) • 19新卒 (4年目らしい) • モンスト事業本部 開発室 モンストサーバG • 好きなもの • お酒 • ゲーム • 好きなエディタ • Vim 自己紹介 2

Slide 3

Slide 3 text

• 加藤 修悟 (@shugo.kato) a.k.a. ろぐみ • 21新卒 • Vantage スタジオ Romi 事業部 開発グループ • サーバ/フロント/インフラもひとつまみ • 好きなキーボード • HHKB • 好きなエディタ • VSCode 3 自己紹介

Slide 4

Slide 4 text

• 江畑 拓哉 (@takuya.ebata) • 21新卒 • 次世代エンターテイメント事業本部 TIPSTAR開発部 システム2G アーキテクトT • 運用と開発、あと庶務 • 好きなキーボード • FILCO • 好きなエディタ • Emacs 4 自己紹介

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

6 講義

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

12 ソフトウェアの品質の話

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

16 TDD

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

21 ライブコーディング

Slide 22

Slide 22 text

22 テスト技法の話

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

29 ペアプログラミング

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

33 コードレビューの仕方とされ方

Slide 33

Slide 33 text

• チームごとに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 コードレビューの仕方とされ方

Slide 34

Slide 34 text

• どうすれば、マージされやすいかを考えてみる • PRの説明をしっかり書く • どういう背景で、どういう理由で、どういうものを作った、など • 重点的にレビューして欲しいところや、実装していてよく分からなかったところ、など • JIRAのチケットや、関連PR,issueなど • 背景の詳細や、仕様などを追いやすい • 監査などのときに、追いやすい、など • どういうタイミングでマージして欲しい、など (QAチームによるテストが終わってか ら、など) 35 コードレビューの仕方とされ方

Slide 35

Slide 35 text

• レビューは人格攻撃ではない (心理的安全性) • わからないところは聞こう • 褒めよう! • この人はこういうところをレビューしてくるだろうなぁと考えてみる 36 コードレビューの仕方とされ方

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

No content