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
1k
みんなで自動テストに取り組む ために必要だったこと / Essentials for Team-Based Automated Testing
コドモン開発チーム
March 27, 2025
Tweet
Share
More Decks by コドモン開発チーム
See All by コドモン開発チーム
現場のいちメンバーの視点からの技術的負債への向き合い方 / My approach to technical debt as an individual team member
codmoninc
0
160
コドモンPdM紹介資料.pdf
codmoninc
0
26
「石の上にも三年」 の石の上での三ヶ月(話題のペアプログラミングを4社が徹底的に語る!) / Three months on a rock.
codmoninc
3
130
コドモンのQAの今までとこれから / Codmon's QA Journey
codmoninc
1
880
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / SRE Challenges and Solutions at Codmon
codmoninc
0
42
XPってどんな感じ?コドモンでの導入経緯と現在地 / What is XP like? Background of introduction and current status in Codomon
codmoninc
2
780
GAS・関数地獄を脱出! TROCCO・dbt・BigQueryで ストレスフリーなデータ管理 / Stress-Free Data Management with TROCCO, dbt, and BigQuery
codmoninc
0
760
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築 / From EC2 to ECS: Migrating to Containers and Rebuilding a Massive Legacy PHP Application
codmoninc
0
790
コドモンの決済基盤のテストの紹介 / Introduction to the Payment Infrastructure Testing of Codmon
codmoninc
0
390
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Faster Mobile Websites
deanohume
306
31k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Rails Girls Zürich Keynote
gr2m
94
13k
How to train your dragon (web standard)
notwaldorf
91
6k
What's in a price? How to price your products and services
michaelherold
245
12k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
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