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
1.4k
みんなで自動テストに取り組む ために必要だったこと / Essentials for Team-Based Automated Testing
コドモン開発チーム
March 27, 2025
Tweet
Share
More Decks by コドモン開発チーム
See All by コドモン開発チーム
4年間、組織に向き合う中で出会った リアルな悩みと乗り越え方 / Facing Organizational Challenges: Real Struggles and Solutions
codmoninc
1
190
ひとりめEMとして70人組織になるまでにやったこと / What I did to help the organization grow to 70 people as the first EM
codmoninc
0
130
コドモンAnalyticsグループの、 2年間の成果と課題 / Codmon Analytics Group: Achievements and Challenges Over Two Years
codmoninc
0
94
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
3
26k
組織&チームで取り組むプロポーザル企画の実践法 / Crafting Winning Proposals: A Practical Guide for Organizations and Teams
codmoninc
0
41
WebからモバイルへVue.js × Capacitor 活用事例
codmoninc
0
51
コードに語らせよう 自己ドキュメント化が内包する楽しさについて / Let the Code Speak: The Joy of Self-Documenting Code
codmoninc
0
55
コードリーディング入門! 先人たちに思いを馳せれば プログラミングがもっと楽しくなる / Introduction to Code Reading!
codmoninc
1
430
子育てインフラの構築と子どもを取り巻く市場の拡大に向けて / Building child-rearing infrastructure and expanding the children's market
codmoninc
0
620
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Rails Girls Zürich Keynote
gr2m
95
14k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Why Our Code Smells
bkeepers
PRO
339
57k
Being A Developer After 40
akosma
90
590k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Practical Orchestrator
shlominoach
190
11k
Done Done
chrislema
185
16k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Agile that works and the tools we love
rasmusluckow
330
21k
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