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

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

kuwacchi
April 21, 2021
1.4k

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

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. とは(表側) • メール管理システム • メールの送受信

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

    • ノンフレームワークでコードが複雑 • 影響範囲を見逃す可能性がある 経験と努力と改善をしながら なんとか品質を担保している
  5. #RAKUSMeetup ©2020 RAKUS Co., Ltd. どうやってバグを検知すればいい? • E2Eテスト? • 全画面シナリオを作る?コストが高い…

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

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

    • アドレス帳など人がテストしない可能性のある機能 → 「最低限」を担保するためスモークE2Eテストが必要
  8. #RAKUSMeetup ©2020 RAKUS Co., Ltd. テストを作成する要員が足りない • 開発待ちのテスターは手が空いている • テスター:テスト専任メンバ。開発経験なし

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

    レビュアー(日本の開発者)の工数削減 • 後で見た際に分かりやすい(保守性・可読性) • セレクタやファイル名の命名規則を決める • 質問や手戻りを抑える
  10. #RAKUSMeetup ©2020 RAKUS Co., Ltd. 作成してもらったコード(命名規則) 複数行に同じ要素(編集リンク)がある場合は 「x行目」を明記する → 同名の要素があっても場所がひと目でわかる

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

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

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

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