Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT

5,460 views

Published on

エンドツーエンドテストを自動化したらチームがすごく良くなった お話です

Published in: Technology
  • Be the first to comment

エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT

  1. 1. エンドツーエンドテストを自動化したら チームがすごく良くなった @ XP祭り2015 LT 2015/09/12 楽天株式会社 トラベルサービス開発・運用部 渡邉太一
  2. 2. 2 About Me • Webエンジニア • 言語: Java • 楽天トラベル内の 一つの開発チームのリーダー twitter:@taichiw0424 Taichi Watanabe
  3. 3. 3 今日のお話 サーバ上に デプロイ済み 商品登録 コアAPI E2E test Tool (自作) HTTP これを作った。
  4. 4. 4 Our team & Our product Web 管理画面 外部連携用 API 商品登録 コアAPI ホテル ・ 旅館
  5. 5. 5 テストの例: 「部屋を作るAPI」のテストをする コアAPI DB E2E test Tool Start Test Scenario Verify 部屋を参照するAPI Select TearDown 部屋を削除するAPI Delete Assertion! Execute 部屋を作るAPI Insert/Update Test Result HTTP
  6. 6. 6 Number of test cases (始めてから9ヶ月経過) UTで見つけられなかったバグが時々出てくる
  7. 7. 7 何が変わった?
  8. 8. 8 良かったこと1 案件用に作ったテストがずっと使える UT & 実装 まず E2E test を作る E2E test 実行! QA QA Run Regression Test Project 1 Project 2 同じテストを 再利用 UT & 実装 まず E2E test を作る E2E test 実行!
  9. 9. 9 1年間で リグレッションによる 不具合 0件
  10. 10. 10 良かったこと2 コードレビューの効果が高まった UT & 実装 E2E test 実行! コード レビュー E2E test 実行! 【レビュア視点】 • 既に要件を満たすことがわかっている • レビュアがコードの書き方に集中できる • 何度でもテストできるので思い切った指摘ができる
  11. 11. 11 良かったこと3 メンバーのテスタビリティに対する意識向上 コアAPI DB E2E test Tool Start Test Scenario Verify 写真のメタデータを 取得するAPI Select TearDown 写真のメタデータを 削除するAPI Delete Assertion! Execute 写真のメタデータを 登録するAPI Insert/Update Test Result HTTP サービスでは使わないけど、テストに必要そうだから作る? という提案がメンバーから「自然に」出てくる
  12. 12. 12 良かったこと3 メンバーのテスタビリティに対する意識向上 コアAPI DB E2E test Tool Start Test Scenario Verify 写真のバイナリデータ を取得するAPI Select TearDown 写真のバイナリデータ を削除するAPI Delete Assertion! … どうやって? Execute 写真のバイナリデータ を登録するAPI Insert/Update Test Result HTTP どう自動化するか考えるという話が メンバーから「自然に」出てくる
  13. 13. 13 もともと良いチームだったけど すごく良いチームになった!
  14. 14. 14 … もうちょっとだけ続くんじゃ
  15. 15. 15 私 異動しました 2年間、APIばかり作ってたんだけど 久しぶりに画面のある世界へ。
  16. 16. 16 GUIのテスト自動化 難しいです
  17. 17. 17 APIと勝手が違うところ • 予約などはステートフル&複数ページから構成 されるため、1シナリオが長い • Seleniumなどブラウザを使うと1通信に時間が かかる → ケースの網羅性を上げるのが難しい • 画面内のパーツが多い • 細部の仕様は頻繁に変わる → 細かい部分までテストするのが難しい
  18. 18. 18 テスト改善よりもアーキテクチャ改善? 画面 コアAPIエンド ユーザ UI層と ロジック層と きっちり分けて ロジック層に対してたっぷりE2E test かなぁ… と思案中。
  19. 19. 19 是非、お知恵を ください!

×