Slide 1

Slide 1 text

みんなで自動テストに取り組む ために必要だったこと 2025年3月25日 株式会社コドモン 水落 光

Slide 2

Slide 2 text

2 経歴 元C++エンジニア。「自動化できるテストは自動化し、人が やらなければならないことに注力する」ためにQAエンジニアに。 歯科矯正が最近終わり、反動でキャラメルをよく食べている。 自己紹介 水落 光 みずおち ひかる 2020.01 コドモンにQAエンジニアとして入社       主にテスト自動化・パイプライン構築に従事 (シチウ @dashi_no_ajiwai)

Slide 3

Slide 3 text

3 Mission

Slide 4

Slide 4 text

4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

6 はじめに

Slide 7

Slide 7 text

7 「みんなでテスト」 できてますか?

Slide 8

Slide 8 text

8 今回は実装前後の自動テストについて、 「みんなでテスト」するために 必要だったことを話します

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

12 自動テスト頓挫史

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

17 再構築

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 現在の再構築状況 CIできるの? 使ってみたい! これから始まるPJは厚めに リグレッションテストしたいから CIでテストし続けたいな あれはできる? これはできる? 開発エンジニアが積極的に 自動テストを作るようになってきた

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

23 CONFIDENTIAL - © 2022 CoDMON Inc. 23 この5年ほどのまとめ ● テストの作りやすさ重視 ● テストの自動実行 新テスト基盤・ CI環境を整えた アジャイル開発の プラクティスの一般化 ● ATDD・TDDが当然にな りつつある 開発エンジニア自身が自動テストを実装し 安心感を得ながら開発する流れが広がっている

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 開発者体験の向上のために 自動テストを 作成する 自動テストが 実行され続ける 自動テストで 動作が保証 される テストがある 安心感が 得られる 理想的な 循環 テストを作成し実行し続けなければ 安心にはつながらない ● 動いていないテストは害悪でしかない ● 「随時ローカルで実行してください」  ☝ 誰もやらない

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 まとめ 開発エンジニアを巻き込んで自動テストに取り組むためには… ● 開発者体験の向上 を念頭に環境を構築する必要がある 開発エンジニアが自動テストに取り組むようになって見えてきたのは… ● 体系的なテスト を行うためにはアシストが必要 ● シフトレフト・シフトライトしてよりよくテストするための具体 的な工程・課題 がよりクリアになってくる

Slide 32

Slide 32 text

32 ちなみに

Slide 33

Slide 33 text

33 コドモン採用ページ コドモンでは一緒に働きたい仲間を募集しています! 開発チームX

Slide 34

Slide 34 text

34 JaSST '25 Tokyo スポンサーセッションで登壇します! 3/28(2日目) 14:00〜 Track03 弊社QAエンジニアの砂川が 登壇します! エクストリーム・プログラミングを取り 入れた開発組織におけるQA活動に ついてお話します

Slide 35

Slide 35 text

35 ご清聴ありがとうございました!

Slide 36

Slide 36 text

No content