Save 37% off PRO during our Black Friday Sale! »

スモークE2Eテストで20年モノのシステムからバグを燻し出す方法 / smokeE2E

D2fc63bbbd6f87ef73444b870dc43b9c?s=47 kuwacchi
April 21, 2021
680

スモークE2Eテストで20年モノのシステムからバグを燻し出す方法 / smokeE2E

D2fc63bbbd6f87ef73444b870dc43b9c?s=128

kuwacchi

April 21, 2021
Tweet

Transcript

  1. #RAKUSMeetup ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. スモークE2Eテストで

    20年モノのシステムから バグを 燻し出す方法 桑原健悟
  2. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 自己紹介 •氏名 :桑原 健悟(くわはら けんご)

    •所属 :株式会社ラクス •お仕事:Mail Dealerの開発
  3. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 皆さん、バグを見つけていますか?

  4. #RAKUSMeetup ©2020 RAKUS Co., Ltd. バグを見つけるのって難しいですよね… ・どこに潜んでいる分からない… ・コードが複雑で読み解け無い… etc

  5. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 弊社の は 20年モノなので 特に大変…

  6. #RAKUSMeetup ©2020 RAKUS Co., Ltd. とは(表側) • メール管理システム • メールの送受信

    • 担当者や顧客情報の管理 • 20年のロングセラー商材 ★サポート満足度:95% ★機能満足度 :95% ★継続利用率 :99% https://www.maildealer.jp/
  7. #RAKUSMeetup ©2020 RAKUS Co., Ltd. とは(裏側) • 20年間かけて増設された機能数の多さ • テストをしても漏れに気づきにくい

    • ノンフレームワークでコードが複雑 • 影響範囲を見逃す可能性がある 経験と努力と改善をしながら なんとか品質を担保している
  8. #RAKUSMeetup ©2020 RAKUS Co., Ltd. そのような状況で頑張っていたが…

  9. #RAKUSMeetup ©2020 RAKUS Co., Ltd. バグ発生 • 関係ないと思っていた画面でバグが発生 少し触れば気づけたのに、誰も気づけなかった アドレス帳を修正

    テンプレートの 添付ファイルが開けない!? イメージ
  10. #RAKUSMeetup ©2020 RAKUS Co., Ltd. どうやってバグを検知すればいい? • E2Eテスト? • 全画面シナリオを作る?コストが高い…

    • Unitテスト? • 依存関係が複雑でテストが困難な箇所も • 人力で全画面調べる? • 絶対やりたくない 最低限のレベルでいいので手広く実施したい…
  11. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 「スモークE2Eテスト」というテストを 実施してみることに

  12. #RAKUSMeetup ©2020 RAKUS Co., Ltd. スモークE2Eテストとは • スモークテスト • 「基本機能が動作する」ことを確認する最低限のテスト

    • E2Eテスト • End to End test のこと。ユーザの操作に近い状況でテストする方法 • スモークテスト + E2Eテスト => 最低限の簡単なE2Eテスト 語源:ハードウェア製品に電気を流し、煙がでたり発火しないことを確認すること。 転じて「最初の簡易テスト」を意味する言葉として使われる
  13. #RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト対象画面 • メールの送受信など重要機能 → 人が入念にテストするためスモークE2Eテストは不要

    • アドレス帳など人がテストしない可能性のある機能 → 「最低限」を担保するためスモークE2Eテストが必要
  14. #RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト項目 「最低限」に絞ってテスト ・表示 ・エラーなく、問題なく最後まで画面が表示される ・検索

    ・デフォルト検索条件でテスト ・登録 ・更新 ・削除 ・ファイルのDL
  15. #RAKUSMeetup ©2020 RAKUS Co., Ltd. やることは決まった テストを作成しよう!

  16. #RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発メンバは開発が忙しく、テストを作成する余裕がない • 開発が遅れて炎上している

    • バグ対応 • リリース準備… etc
  17. #RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発待ちのテスターは手が空いている • テスター:テスト専任メンバ。開発経験なし

    • 開発待ちで手が空くこともある 簡単なテストが目的の スモークE2Eテストならテスターでも実装できる!(はず)
  18. #RAKUSMeetup ©2020 RAKUS Co., Ltd. テスト作成上の考慮点 できるだけ簡単に、機械的に • 日本語の利用 •

    レビュアー(日本の開発者)の工数削減 • 後で見た際に分かりやすい(保守性・可読性) • セレクタやファイル名の命名規則を決める • 質問や手戻りを抑える
  19. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 準備はできた、いざテスト作成!!

  20. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 実装環境 • Java( Selenide)

  21. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード

  22. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード アドレス帳画面へ遷移 編集リンクから編集画面を表示

  23. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード 項目を編集して 変更ボタンクリック

  24. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード 一覧画面に表示される各項目を確認

  25. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード(命名規則) 複数行に同じ要素(編集リンク)がある場合は 「x行目」を明記する → 同名の要素があっても場所がひと目でわかる

    最後に「テキストボックス」、「ボタン」など 要素の種類を明記する → 何をする要素か分かりやすくする 要素名は画面の表示からコピーする → 別の人が作っても名前が統一される
  26. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 実施してみた結果 • テストコードがシンプル • 日本語で読みやすい

    • 命名規則が決まっており、セレクタの命名に迷わない → 勉強すればテスターでも増産、修正可能 • テスト作成数 • 7機能分(129ケース)テスト作成済み • 今も絶賛量産中(むしろレビューが追いつかない…) 増産体制が整って「最低限」のテストができてきた
  27. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 成果 • 作成済みの7機能(129ケース)を手動で行った場合、 想定で3.5時間程 →

    スモークE2Eテスト作成により、 リリースごとに3.5時間の短縮が可能になった
  28. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 展望 • 新規開発のプロセスに組み込む • コードの変更に追従してテストも修正

    • 新規開発のバグをすぐに発見できる • エンジニアが実施している工程を任せたい • テスト環境のデータの更新