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

E2E 自動テストの布教に立ち塞がる5つの壁と打ち込んだ楔

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for ShooU ShooU
March 26, 2024

E2E 自動テストの布教に立ち塞がる5つの壁と打ち込んだ楔

Avatar for ShooU

ShooU

March 26, 2024
Tweet

More Decks by ShooU

Other Decks in Technology

Transcript

  1. 背景 • ちょうど一年ほど前に一人目 QAE として join (2023/03/15) • 会社ではE2E 自動テスト

    (以後「自動テスト」と表記)の 導入をはじめていたタイミング ◦ 週1~2時間ほどで有志メンバーがテストコード作成中 ◦ 使用ツールは Cypress ◦ 実運用まではできていない状態 • 開発メンバーが主体となって自動テストの運用を できるように仕組みを整えはじめた 2
  2. なぜ布教をしていたのか • 一人だけの QAE が自動テストの作成とメンテナンスを行うことは限 界がある • 仮に自動テストは整備できたとしても他のQA活動にリソースを使えな くなってしまう懸念 •

    一人の熱量で自動テストを進めてもいずれはシェルフウェアとなって 破綻しがち 開発メンバーが主体となって自動テストを運用できる必要があった 4
  3. 1の楔 : 自動テストの目的を定める • 自動テストのメンテナンスや整備をするメリットを考える ◦ OSSアップデートを気軽にできるようにする ◦ インフラのアップデートを気軽にできるようにする ◦

    リリース後の動作確認作業の負担を減らす ◦ 人が実施するテストの前に自動テストで動作保証 ... ect 目的を定めればなぜ自動テストを整備しているか説明できるし、どのよ うなテストが必要か不要かも判断できるようになる 7
  4. 2の楔 : テストシナリオを自動化の前に作成する • プロダクトにおけるクリティカルユーザージャーニー (CUJ) は何かを ヒアリングし、テストシナリオを作成 • テストシナリオは

    Notion 上に日本語で書いて管理 • Arrange-Act-Assert (AAA) パターンに沿って、テストの前提条件、 操作、アサーションを分かりやすく記述 9
  5. 4の楔 : ナレッジシェア・スキルトランスファーを行う • モチベーションが高めの有志数名でもくもく会を開催 ◦ お互いにコードレビューしてナレッジシェア ◦ 細かい書き方もある程度統一された •

    開発メンバーとモブプロを開催 ◦ 複数の開発メンバーが交代しながらドライバーとなって、テスト シナリオからコードを書く一連の作業を行い、 スキルトランスファーしつつ、テストコードを整備 13
  6. 5の楔 : テスト結果を分かりやすくフィードバック • テスト結果を分かりやすくフィードバック ◦ Slack にテストサマリを通知 • テスト結果のレポートを分かりやすく

    ◦ Cypress Cloud のテストレポートを利用 ◦ Test Replay 機能で失敗の原因を調査しやすく 誰にでもテスト結果がわかる状態へ 15
  7. 5の楔 : 自動テストの運用ガイドラインを策定 • テストの実行方法 • テスト結果をどのように確認するか • テスト失敗時の対応フロー •

    テスト追加時のフロー • テストコードリファクタ時のフロー 誰にでもテスト実行や 修正時のフローがわかる状態へ 16
  8. 自動テストの信頼性担保 • 一定期間テストが実行、メンテナンスされない状態が 続いてしまうと起こる問題点 ◦ 失敗の原因がリリース影響によるSUT側の問題か、テスト側の 問題か切り分けが難しい ◦ 切り分けが難しいとメンテナンスに対する障壁が高くなる ◦

    メンテナンスされなくなるとテスト自体の結果を誰も信頼できなく なる 定期的な実行でテスト自体をアップデートしたりテストコードを安定化さ せて信頼性を担保する活動が欠かせない 18