Slide 1

Slide 1 text

2023.04.05 Makuake 社内LT @mnuma 自動テストについて

Slide 2

Slide 2 text

@mnuma タモリ倶楽部が終了してしまって悲しいです。 自己紹介

Slide 3

Slide 3 text

信頼性の高い自動化テストの実施 開発者が主体となった承認テストの作成・管理、およ び承認テストの容易な複製・修正 「テスト自動化」は ハイパフォーマー達 のプラクティス インプレス出版「LeanとDevOpsの科学」 p.65

Slide 4

Slide 4 text

自動テストの「信頼性」

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

正しい 間違ってる 成功 OK 偽陰性 失敗 偽陽性 OK テスト結果 コード テストにおける偽陽性と偽陰性

Slide 7

Slide 7 text

テストにおける偽陽性と偽陰性 偽陽性: コードが正しいがテスト結果が失敗してしまう。誤検知。 ・脆いテスト (brittle test, fragile test) ・信頼不能テスト (flaky test) 偽陰性: プロダクトコードが誤っているにもかかわらずテストが成功してしまう。 ・空振り ・カバレッジ不足

Slide 8

Slide 8 text

https://testing.googleblog.com/2010/12/test-sizes.html テストサイズ における分類

Slide 9

Slide 9 text

「結合テスト」とは? 連携されるシステム動作全般? 「ユニットテスト」とは? ロンドン学派 vs デトロイト学派 「テストサイズ」 曖昧な概念なので計測可能な定義付けを行ったもの。 テスト範囲で語ると混乱が起きがち

Slide 10

Slide 10 text

Small Medium Large 単一プロセスで実行されるテスト。 上限: 60秒 単一マシン上で実行されるテスト。 上限: 300秒 制約なし。 上限: 900秒+ Enormous もっとやばいやつ

Slide 11

Slide 11 text

Small Medium Large 言語の実行環境だけで動かせるテスト コンテナを組み合わせて実行するテスト 本番同等の環境にデプロイして実施するテスト Enormous もっとやばいやつ

Slide 12

Slide 12 text

「忠実性」 どんどん本番 に近くなる Small Medium Large 単一プロセスで実行されるテスト。 上限: 60秒 単一マシン上で実行されるテスト。 上限: 300秒 制約なし。 上限: 900秒+ Enormous もっとやばいやつ 「スピード」 どんどん 遅くなる 「非決定的」 複雑化し 予測出来なくなる

Slide 13

Slide 13 text

「忠実性」 どんどん本番 に近くなる Small Medium Large 単一プロセスで実行されるテスト。 上限: 60秒 単一マシン上で実行されるテスト。 上限: 300秒 制約なし。 上限: 900秒+ Enormous もっとやばいやつ 「スピード」 どんどん 遅くなる 「非決定的」 複雑化し 予測出来なくなる より本番に近い状況でテスト可能になる反面、 準備が難しく、動作は遅く、非決定的になりがち。 テスト失敗時分析も難しくなる。

Slide 14

Slide 14 text

テストのコスパ ✗ ✗ ✗

Slide 15

Slide 15 text

理想的なテスト

Slide 16

Slide 16 text

テストピラミッド 70% 20% 10% https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html くらいの 比率が望 ましい

Slide 17

Slide 17 text

Manual base Manual base Large Medium Smalll

Slide 18

Slide 18 text

Manual base Large Medium Smalll 速度 決定性 70% 20% 10% コスト 忠実性

Slide 19

Slide 19 text

Inverted pyramid ice cream cone ✗ Hourglass pyramid ✗ ○

Slide 20

Slide 20 text

実際には色々な変遷を辿ると思う

Slide 21

Slide 21 text

Manual base Large Medium Smalll 速度 決定性 70% 20% 10% コスト 忠実性 サイズダウン 戦略

Slide 22

Slide 22 text

テスト自動化の 原則

Slide 23

Slide 23 text

テスト自動化の8原則 5. 自動テストシステムの開発は継続的 におこなうものである 6. 自動化検討はプロジェクト初期から 7. 自動テストで新種のバグが見つかる ことは稀である 8. 「テスト結果の分析」という新たな タスクが生まれる 1. 手動テストはなくならない 2. 手動でおこなって効果のないテス トを自動化しても無駄である 3. 自動テストは書いたことしかテス トしない 4. テスト自動化の効用はコスト削減 だけではない テスト自動化研究会 https://sites.google.com/site/testautomationresearch/test_automation_principle

Slide 24

Slide 24 text

繰り返し使われるテストのコストを削減 開発アクティビティへの効用 動いたはずの機能が壊れることを発見出来る 手動で実施したほうがテストの品質が高い 記述されたことしかテスト出来ない 運用に時間がかかる 最初から自動化が考慮されてない場合大変 テスト結果分析という新たなタスクが生まれる メリット (Pros) デメリット (Cons)

Slide 25

Slide 25 text

手動テストはなくならない ユーザビリティテストなど、そもそも自動化できないテストタイプが存在する。 システムに対してはじめて実行されるテストはテストケース自体の成熟度の観点 から、手動で実施したほうがテスト実行の品質が高いケースが多い。また、自動 化がうまく進行している機能テストの残り数%など、テストを自動化するコスト とベネフィットが釣り合わないケースもある。これらの事情によって、手動で実 施されるテストが無くなることはない。

Slide 26

Slide 26 text

まとめ 自動テストを行ってハイパフォーマーの仲間入りをしよう 偽陰性 / 偽陽性 でテストの信頼性を意識しよう テストサイズを意識してコスパのいいテストをしよう ピラミッド型を意識したテスト戦略を立てよう 高品質である手動テストを活かせるようにしよう

Slide 27

Slide 27 text

END