Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
みんなで自動テストに取り組む ために必要だったこと / Essentials for Tea...
Search
コドモン開発チーム
March 27, 2025
0
130
みんなで自動テストに取り組む ために必要だったこと / Essentials for Team-Based Automated Testing
コドモン開発チーム
March 27, 2025
Tweet
Share
More Decks by コドモン開発チーム
See All by コドモン開発チーム
「石の上にも三年」 の石の上での三ヶ月(話題のペアプログラミングを4社が徹底的に語る!) / Three months on a rock.
codmoninc
2
87
コドモンのQAの今までとこれから / Codmon's QA Journey
codmoninc
1
330
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / SRE Challenges and Solutions at Codmon
codmoninc
0
27
XPってどんな感じ?コドモンでの導入経緯と現在地 / What is XP like? Background of introduction and current status in Codomon
codmoninc
2
680
GAS・関数地獄を脱出! TROCCO・dbt・BigQueryで ストレスフリーなデータ管理 / Stress-Free Data Management with TROCCO, dbt, and BigQuery
codmoninc
0
710
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築 / From EC2 to ECS: Migrating to Containers and Rebuilding a Massive Legacy PHP Application
codmoninc
0
700
コドモンの決済基盤のテストの紹介 / Introduction to the Payment Infrastructure Testing of Codmon
codmoninc
0
360
組織の変化とSREの役割進化 | 責務拡大にどう応えるか / Organizational Change and the Evolution of the SRE Role
codmoninc
0
77
コンテナイメージを複数のチームで扱うための、 ビルドフローの構築・運用 / Building and Managing a Container Image Workflow for Multiple Teams
codmoninc
0
100
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Thoughts on Productivity
jonyablonski
69
4.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
Product Roadmaps are Hard
iamctodd
PRO
52
11k
Scaling GitHub
holman
459
140k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
The Invisible Side of Design
smashingmag
299
50k
A Philosophy of Restraint
colly
203
16k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
みんなで自動テストに取り組む ために必要だったこと 2025年3月25日 株式会社コドモン 水落 光
2 経歴 元C++エンジニア。「自動化できるテストは自動化し、人が やらなければならないことに注力する」ためにQAエンジニアに。 歯科矯正が最近終わり、反動でキャラメルをよく食べている。 自己紹介 水落 光 みずおち ひかる
2020.01 コドモンにQAエンジニアとして入社 主にテスト自動化・パイプライン構築に従事 (シチウ @dashi_no_ajiwai)
3 Mission
4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。
5
6 はじめに
7 「みんなでテスト」 できてますか?
8 今回は実装前後の自動テストについて、 「みんなでテスト」するために 必要だったことを話します
9 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -
何をすべきだったのか 明らかになってきた次なる課題
10 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -
何をすべきだったのか 明らかになってきた次なる課題
11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 前提 -
5年前くらいの私の思想 • テストの自動化は必須 ◦ 毎度毎度実行すべきテストを手作業でやるのは無駄が多い • 開発エンジニアもテストを作るべき ◦ 実装時点で最も詳細まで仕様を把握しているのは 開発エンジニアのはず ◦ QAは最後の砦?それは負け戦では? 当初から開発エンジニアを巻き込んで 自動テストを作っていこうと思っていた
12 自動テスト頓挫史
13 CONFIDENTIAL - © 2022 CoDMON Inc. 13 自動テスト頓挫史 -
内製テスト基盤 • 内製テスト基盤 ◦ 複数回挑戦 ◦ 各種ツールの組み合わせ ▪ テストランナー: Jest, Gauge ▪ UIテスト: Puppeteer, Playwright ▪ APIテスト: Axios ◦ 初期データの持ち方 ▪ 初期: DBにあらかじめinsert ▪ 中期: CSVのデータをinsert テスト実行基盤 specs CSV DB front API runner tools
14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 自動テスト頓挫史 -
内製テスト基盤 頓挫 開発エンジニアによるテスト 作成の定着には至らず 実行環境・方法の課題 • そもそもの不安定性 ◦ CSSセレクタ依存 ◦ 無限に増えるwait • DOMの変更に追随できない ◦ テストが別リポジトリ など 安定性の課題 • ローカル実行のみ ◦ 手元で実施してもらう • 初期データの持ち方 ◦ DBは軽量にしたい ◦ CSVは並列実施できない など
15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 自動テスト頓挫史 -
外部サービス • 外部サービスによるテスト ◦ リリース集約時(デイリー)のテスト ◦ GitHub ActionsのWFからテスト用環境に デプロイ後テスト実施 ◦ テストデータ全部入りDB ▪ LocalDBとしても利用 テスト環境 DB プロダ クト 外部 サービス デプロイ Hook
16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 自動テスト頓挫史 -
外部サービス 利用終 了 開発エンジニアによるテスト 作成の定着には至らず シナリオ数(右軸) 利用料金 • シナリオ数の伸びの鈍化 ◦ リリース集約時点でFAILするため手 戻りが大きい →シナリオ増やしたくない心理 • 利用料金の大幅な増加 など (実際の利用状況)
17 再構築
18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 現在の再構築状況 setup.ts
DB 実行環境 front / API spec • 新テスト基盤('24 -) ◦ Gauge × Playwright / Axios ◦ プログラマブルなsetup specで閉じた初期データ作成 ▪ DB軽量化 ▪ 並列実行性・再実行性 spec単位で setupスクリプト によるデータ投入
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
20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 現在の再構築状況 CIできるの?
使ってみたい! これから始まるPJは厚めに リグレッションテストしたいから CIでテストし続けたいな あれはできる? これはできる? 開発エンジニアが積極的に 自動テストを作るようになってきた
21 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -
何をすべきだったのか 明らかになってきた次なる課題
22 CONFIDENTIAL - © 2022 CoDMON Inc. 22 この5年ほどのまとめ •
テストの作りやすさ重視 • テストの自動実行 新テスト基盤・ CI環境を整えた アジャイル開発の プラクティスの一般化 • ATDD・TDDが当然にな りつつある
23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 この5年ほどのまとめ •
テストの作りやすさ重視 • テストの自動実行 新テスト基盤・ CI環境を整えた アジャイル開発の プラクティスの一般化 • ATDD・TDDが当然にな りつつある 開発エンジニア自身が自動テストを実装し 安心感を得ながら開発する流れが広がっている
24 CONFIDENTIAL - © 2022 CoDMON Inc. 24 本当にやるべきだったこと 開発者体験の向上を念頭に
早くから環境を構築するべきだった • テストを作って実行しやすいこと • 開発エンジニアが安心感を得られること の両輪で
25 CONFIDENTIAL - © 2022 CoDMON Inc. 25 開発者体験の向上のために 理想的な
循環 自動テストを 作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる
26 CONFIDENTIAL - © 2022 CoDMON Inc. 26 開発者体験の向上のために 理想的な
循環 自動テストを 作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる 自動テストが作りやすくならないことには 何も始まらない • テスト環境・初期データの作りやすさ • 実行時間がかからない・並列実行 • メンテナンス容易性
27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 開発者体験の向上のために 自動テストを
作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる テスト作成とテスト実行は つながっていない • テスト自体より先に実行環境の構築 • 実行環境を見越したテスト基盤の構築 • 「おもしろそうなおもちゃ」のような
28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 開発者体験の向上のために 自動テストを
作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる 理想的な 循環 テストを作成し実行し続けなければ 安心にはつながらない • 動いていないテストは害悪でしかない • 「随時ローカルで実行してください」 ☝ 誰もやらない
29 今日話すこと 5年間のふりかえり - 頓挫と再構築 1 2 3 得られた教訓 -
何をすべきだったのか 明らかになってきた次なる課題
30 CONFIDENTIAL - © 2022 CoDMON Inc. 30 次なる課題 で
き 早めにやりたい つ つ あ る いつかやりたい… 結局まだ体系的な テストではない (特にテスト分析・テスト計画) 仕様のテストの定着 チーム最適化 →全体最適化 (データドリブン) 全社的な プロセス改善 (CREなど) なるべく早く 「包括的にテストせず開発するのはダサい」 くらいまで持っていきたい ATDD・TDDの定着 https://danashby.co.uk/2016/10/19/continuous-testing-in-devops/
31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 まとめ 開発エンジニアを巻き込んで自動テストに取り組むためには…
• 開発者体験の向上 を念頭に環境を構築する必要がある 開発エンジニアが自動テストに取り組むようになって見えてきたのは… • 体系的なテスト を行うためにはアシストが必要 • シフトレフト・シフトライトしてよりよくテストするための具体 的な工程・課題 がよりクリアになってくる
32 ちなみに
33 コドモン採用ページ コドモンでは一緒に働きたい仲間を募集しています! 開発チームX
34 JaSST '25 Tokyo スポンサーセッションで登壇します! 3/28(2日目) 14:00〜 Track03 弊社QAエンジニアの砂川が 登壇します!
エクストリーム・プログラミングを取り 入れた開発組織におけるQA活動に ついてお話します
35 ご清聴ありがとうございました!
None