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

みんなで自動テストに取り組む ために必要だったこと / Essentials for Tea...

みんなで自動テストに取り組む ために必要だったこと / Essentials for Team-Based Automated Testing

More Decks by コドモン開発チーム

Transcript

  1. 5

  2. 9 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -

    何をすべきだったのか 明らかになってきた次なる課題
  3. 10 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -

    何をすべきだったのか 明らかになってきた次なる課題
  4. 11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 前提 -

    5年前くらいの私の思想 • テストの自動化は必須 ◦ 毎度毎度実行すべきテストを手作業でやるのは無駄が多い • 開発エンジニアもテストを作るべき ◦ 実装時点で最も詳細まで仕様を把握しているのは 開発エンジニアのはず ◦ QAは最後の砦?それは負け戦では? 当初から開発エンジニアを巻き込んで 自動テストを作っていこうと思っていた
  5. 13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 自動テスト頓挫史 -

    内製テスト基盤 • 内製テスト基盤 ◦ 複数回挑戦 ◦ 各種ツールの組み合わせ ▪ テストランナー: Jest, Gauge ▪ UIテスト: Puppeteer, Playwright ▪ APIテスト: Axios ◦ 初期データの持ち方 ▪ 初期: DBにあらかじめinsert ▪ 中期: CSVのデータをinsert テスト実行基盤 specs CSV DB front API runner tools
  6. 14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 自動テスト頓挫史 -

    内製テスト基盤 頓挫
 開発エンジニアによるテスト 作成の定着には至らず 実行環境・方法の課題 • そもそもの不安定性 ◦ CSSセレクタ依存 ◦ 無限に増えるwait • DOMの変更に追随できない ◦ テストが別リポジトリ など 安定性の課題 • ローカル実行のみ ◦ 手元で実施してもらう • 初期データの持ち方 ◦ DBは軽量にしたい ◦ CSVは並列実施できない など
  7. 15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 自動テスト頓挫史 -

    外部サービス • 外部サービスによるテスト ◦ リリース集約時(デイリー)のテスト ◦ GitHub ActionsのWFからテスト用環境に デプロイ後テスト実施 ◦ テストデータ全部入りDB ▪ LocalDBとしても利用 テスト環境 DB プロダ クト 外部 サービス デプロイ Hook
  8. 16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 自動テスト頓挫史 -

    外部サービス 利用終 了
 開発エンジニアによるテスト 作成の定着には至らず シナリオ数(右軸) 利用料金 • シナリオ数の伸びの鈍化 ◦ リリース集約時点でFAILするため手 戻りが大きい →シナリオ増やしたくない心理 • 利用料金の大幅な増加 など (実際の利用状況)
  9. 18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 現在の再構築状況 setup.ts

    DB 実行環境 front / API spec • 新テスト基盤('24 -) ◦ Gauge × Playwright / Axios ◦ プログラマブルなsetup specで閉じた初期データ作成 ▪ DB軽量化 ▪ 並列実行性・再実行性 spec単位で setupスクリプト によるデータ投入
  10. 19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 現在の再構築状況 •

    CI環境('24 -) ◦ GitHub Actionsからトリガーして k8sにより自動環境構築 ◦ 境界を区切り選択的にテストを 作成・実行可能 ▪ 各チームの守備範囲明示 DB front / API Gauge test apply trigger コドモンSREによる詳細 → https://tech.codmon.com/entry/2024/02/21/090546
  11. 20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 現在の再構築状況 CIできるの?

    使ってみたい! これから始まるPJは厚めに リグレッションテストしたいから CIでテストし続けたいな あれはできる? これはできる? 開発エンジニアが積極的に 自動テストを作るようになってきた
  12. 21 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -

    何をすべきだったのか 明らかになってきた次なる課題
  13. 22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 この5年ほどのまとめ •

    テストの作りやすさ重視 • テストの自動実行 新テスト基盤・ CI環境を整えた アジャイル開発の プラクティスの一般化 • ATDD・TDDが当然にな りつつある
  14. 23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 この5年ほどのまとめ •

    テストの作りやすさ重視 • テストの自動実行 新テスト基盤・ CI環境を整えた アジャイル開発の プラクティスの一般化 • ATDD・TDDが当然にな りつつある 開発エンジニア自身が自動テストを実装し 安心感を得ながら開発する流れが広がっている
  15. 24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 本当にやるべきだったこと 開発者体験の向上を念頭に

    早くから環境を構築するべきだった • テストを作って実行しやすいこと • 開発エンジニアが安心感を得られること の両輪で
  16. 25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 開発者体験の向上のために 理想的な

    循環 自動テストを 作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる
  17. 26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 開発者体験の向上のために 理想的な

    循環 自動テストを 作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる 自動テストが作りやすくならないことには 何も始まらない • テスト環境・初期データの作りやすさ • 実行時間がかからない・並列実行 • メンテナンス容易性
  18. 27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 開発者体験の向上のために 自動テストを

    作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる テスト作成とテスト実行は つながっていない • テスト自体より先に実行環境の構築 • 実行環境を見越したテスト基盤の構築 • 「おもしろそうなおもちゃ」のような
  19. 28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 開発者体験の向上のために 自動テストを

    作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる 理想的な 循環 テストを作成し実行し続けなければ 安心にはつながらない • 動いていないテストは害悪でしかない • 「随時ローカルで実行してください」  ☝ 誰もやらない
  20. 29 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -

    何をすべきだったのか 明らかになってきた次なる課題
  21. 30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 次なる課題 で

    き 早めにやりたい つ つ あ る いつかやりたい… 結局まだ体系的な テストではない (特にテスト分析・テスト計画) 仕様のテストの定着 チーム最適化 →全体最適化 (データドリブン) 全社的な プロセス改善 (CREなど) なるべく早く 「包括的にテストせず開発するのはダサい」 くらいまで持っていきたい ATDD・TDDの定着 https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/
  22. 31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 まとめ 開発エンジニアを巻き込んで自動テストに取り組むためには…

    • 開発者体験の向上 を念頭に環境を構築する必要がある 開発エンジニアが自動テストに取り組むようになって見えてきたのは… • 体系的なテスト を行うためにはアシストが必要 • シフトレフト・シフトライトしてよりよくテストするための具体 的な工程・課題 がよりクリアになってくる
  23. 34 JaSST '25 Tokyo スポンサーセッションで登壇します! 3/28(2日目) 14:00〜 Track03 弊社QAエンジニアの砂川が 登壇します!

    エクストリーム・プログラミングを取り 入れた開発組織におけるQA活動に ついてお話します