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
MagicPod開発におけるテスト自動化とCI
Search
Nozomi Ito
May 31, 2023
Technology
0
660
MagicPod開発における テスト自動化とCI
イベント「MagicPod開発におけるテスト自動化とCI」の発表資料です。
https://trident-qa.connpass.com/event/282323/
Nozomi Ito
May 31, 2023
Tweet
Share
More Decks by Nozomi Ito
See All by Nozomi Ito
ノーコードに学ぶE2Eテスト自動化ベストプラクティス
nozomiito
0
760
ノーコードE2Eテストで実現する高速開発
nozomiito
0
590
MagicPodで実現するE2Eテスト自動化
nozomiito
0
2.6k
最近のMagicPodまとめ
nozomiito
0
540
テスト自動化スタートアップがエバンジェリストを募集するワケ
nozomiito
0
250
MagicPodが取り組むテスト自動化最前線
nozomiito
0
420
ロケーターを学んでテスト自動化上級者を目指そう
nozomiito
1
5.7k
テスト自動化で起業した10年とテスト自動化普及の歴史を振り返る
nozomiito
4
2.1k
テスト自動化で起業した10年とテスト自動化普及の歴史を振り返る
nozomiito
8
5.2k
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
54k
Bring Your Own Container: When Containers Turn the Key to EDR Bypass/byoc-avtokyo2024
tkmru
0
860
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
150
月間60万ユーザーを抱える 個人開発サービス「Walica」の 技術スタック変遷
miyachin
1
140
2024年活動報告会(人材育成推進WG・ビジネスサブWG) / 20250114-OIDF-J-EduWG-BizSWG
oidfj
0
230
AWSの生成AIサービス Amazon Bedrock入門!(2025年1月版)
minorun365
PRO
7
470
re:Invent 2024のふりかえり
beli68
0
110
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
12k
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
140
生成AIのビジネス活用
seosoft
0
110
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
120
機械学習を「社会実装」するということ 2025年版 / Social Implementation of Machine Learning 2025 Version
moepy_stats
5
1.2k
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
GraphQLとの向き合い方2022年版
quramy
44
13k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
173
51k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
Agile that works and the tools we love
rasmusluckow
328
21k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Scaling GitHub
holman
459
140k
Transcript
MagicPod開発における テスト⾃動化とCI 2023.05.31 MagicPod CEO 伊藤望
About me §伊藤 望 (Ito Nozomi) §株式会社MagicPod CEO §⾃動テストツール歴:約13年 §Twitter:@ito_nozomi
• 著書
1. MagicPodとは 2. MagicPodのシステム開発環境&体制 3. MagicPod開発のテスト⾃動化 4. MagicPod開発のCI運⽤ Agenda
1. MagicPodとは 2. MagicPodのシステム開発環境&体制 3. MagicPod開発のテスト⾃動化 4. MagicPod開発のCI運⽤
MagicPod §Web & モバイルアプリのE2Eテスト⾃動化SasS §ノーコードで簡単にテスト作成 §柔軟性とメンテナンス性が強み (magicpod.com) 1. MagicPodとは
エキスパートが作ったテストツール 著者 翻訳者 コミッター 1. MagicPodとは
ユーザーさんのブログ記事‧発表 MagicPod実⾏後の本番デプロイを ⾃動化するための⾃作GitHub Actions みてねのE2E⾃動テスト導⼊戦略 【インターンレポート】⾃動テストを 実装したら衝撃を受けた学⽣の話 1. MagicPodとは 実⾏⾃動E2Eテストを活⽤した
デプロイフロー改善 MagicPodで⾃動化率を 爆上げしたハナシ MagicPodのUIテストを GitHub Actionsで⾃動化してみた
1. MagicPodとは 2. MagicPodの開発環境&体制 3. MagicPod開発のテスト⾃動化 4. MagicPod開発のCI運⽤
技術スタック 2. MagicPodの開発環境&体制 ⾃動テストエンジン Node.js Selenium Appium インフラ AWS Docker
サーバ‧AIエンジン Python Django React TypeScript MySQL
多様なテスト実⾏環境 2. MagicPodの開発環境&体制 Webサーバ クラウドブラウザ クラウド端末 Worker ローカルPC 外部クラウド
開発体制 2. MagicPodの開発環境&体制 新規開発1 (サーバ寄り) 新規開発2 (⾃動テスト‧AI寄り) 品質改善 (ユーザートラブル) インフラ
デザイナー
開発体制 2. MagicPodの開発環境&体制 §QA:0⼈ • ただしテスト⾃動化のエキスパートは多数 • 本書いている⼈とか、Selenium/Appiumコントリビュータとか §リモート +
ときどき出社 §読み書き(Slack、GitHub等)と朝会は英語
開発フロー 2. MagicPodの開発環境&体制 §アジャイル的開発 §2週間ごとのスプリント & リリース §ビルド、デプロイは⾃動化
テストフロー 2. MagicPodの開発環境&体制 §新規開発部分は各⾃⼿動テスト §リグレッションテストは⾃動テスト §リリース前の3⽇間は社内ドッグフーディング 3⽇前 main branch 次の開発
feature branches リリース 次の開発
1. MagicPodとは 2. MagicPodの開発環境&体制 3. MagicPod開発のテスト⾃動化 4. MagicPod開発のCI運⽤
全テスト⾃動化はできないので、絞って⾃動化 3. MagicPod開発のテスト⾃動化 ⼿動テストとリグレッションバグの削減が⽬的
3. MagicPod開発のテスト⾃動化 どのテストを⾃動化するか ⾃動化コストが 低いところ 処理が 複雑なところ 重要な ところ 1
2 3
3. MagicPod開発のテスト⾃動化 どのテストを⾃動化するか ⾃動化コストが 低いところ 処理が 複雑なところ 重要な ところ 1
2 3 静的解析 AIエンジン セキュリティ ⾃動テスト エンジン 主要画⾯
1.⾃動化コストが低いところ 3. MagicPod開発のテスト⾃動化 §ツールを設定するだけでチェックができるもの §スクリプトのメンテナンスが(ほぼ)不要なもの やっていないもの § Botでサイトリンクをたどり404エラー検出(モンキーテスト) § アプリクラッシュ検知(Firebase
Crashlytics) MagicPodでやっているもの § ソースコード静的解析 § 型チェック
ソースコード静的解析‧型チェック 3. MagicPod開発のテスト⾃動化 Linter 型チェック その他 動的型⾔語のPythonも mypyで型チェック 型チェックがあるので、 書式統⼀以上のメリットは
少ないかも nginx構⽂チェック mypy TypeScript コンパイル ESLint Pylint 構⽂が間違っていると サーバが起動しない
2.処理が複雑なところ 3. MagicPod開発のテスト⾃動化 §複雑すぎて⼈⼒では品質を担保できないロジック §テストコードを書きながら開発を進めることが不可⽋ MagicPodでやっているもの § AIエンジンのユニットテスト § AIエンジンの結合テスト(Integration
Test)
3. MagicPod開発のテスト⾃動化 AIエンジンのユニットテスト - UI解析AI §UI画像とツリーを解析し、操作できる要素をリスト アップするAI §特殊な画⾯のパターンを多数テスト
3. MagicPod開発のテスト⾃動化 AIエンジンのユニットテスト - ⾃動修復AI §テスト対象画⾯のUI変更でテストが失敗しそうになった ときに、スクリプトを⾃動修正するAI §どんな失敗をどう修正するかのパターンを多数テスト
3. MagicPod開発のテスト⾃動化 AIエンジンの結合テスト - ⾃動修復AI §複数のテストで使いまわされているUI要素の修復など §DBを使ったテスト § レコード数を少なくすれば、DBアクセスしても⼗分⾼速 MySQL
テストコード (pytest) ①データ投⼊ ②テスト実⾏
3. MagicPod開発のテスト⾃動化 3.重要なところ §不具合があるとビジネスインパクトが⼤きいところ MagicPodでやっているもの § セキュリティテスト(結合テスト) § ⾃動テストエンジンのテスト(E2Eテスト) §
主要な画⾯のテスト(E2Eテスト)
3. MagicPod開発のテスト⾃動化 セキュリティテスト(結合テスト) §ふだん⽬に⾒えないので軽視しがちなので注意 §問題が起きると最悪サービス終了くらいのインパクト §テスト内容は割愛 § 最近VAddyを導⼊しようかと思っている。
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) ⾃動テストツールがもっとも避けるべきこと テスト対象にバグが無いのにテスト失敗すること
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) 偽のテスト失敗が続くと… テスト結果をチェックする 優先度が下がる テストのエラーが 放置されるようになる ⾃動化プロジェクト 失敗
😓 😫 💥
ユーザーのテストがMagicPodの バージョンアップで落ちないことはとても重要 3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) 対策 MagicPod社内で⼤量の MagicPodテストを流してチェック
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) 各コマンド 各ブラウザ‧OS 各環境 × × Magic Podクラウド
ローカル端末
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) 各コマンドのテスト(モバイルアプリテスト)
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) 各コマンドのテスト(ブラウザテスト)
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) ひたすら⾊々なブラウザ‧OS‧環境で実⾏ モバイルアプリテスト (On CircleCI) ブラウザテスト (On CircleCI)
ブラウザテスト (On AppVeyor)
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) テスト結果(iOSアプリテスト)
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) テスト結果(ブラウザテスト)
3. MagicPod開発のテスト⾃動化 ⾃動テストエンジンのテスト(E2Eテスト) §MagicPod内スケジューラからのテスト実⾏ §Bitriseからのモバイルアプリテスト実⾏ §下位バージョンクライアントの互換性テスト
3. MagicPod開発のテスト⾃動化 主要な画⾯のテスト(E2Eテスト) §ユーザー登録、テスト作成&編集、有料プラン申込、 などなど §MagicPodでMagicPodの画⾯テストを⾃動化 § ドッグフーディングにもなる
3. MagicPod開発のテスト⾃動化 主要な画⾯のテスト(E2Eテスト) MagicPodによるMagicPod画⾯のテスト
3. MagicPod開発のテスト⾃動化 主要な画⾯のテスト(E2Eテスト) MagicPodによるMagicPod画⾯のテスト
3. MagicPod開発のテスト⾃動化 主要な画⾯のテスト(E2Eテスト) MagicPodによるMagicPod画⾯のテスト(テスト結果)
3. MagicPod開発のテスト⾃動化 主要な画⾯のテスト(E2Eテスト) §画像差分チェックもMagicPodで実施 §正解画像1枚で画⾯全体の項⽬とレイアウトがチェッ クできるので、コスパが良い
3. MagicPod開発のテスト⾃動化 主要な画⾯のテスト(E2Eテスト) §画像差分チェック
3. MagicPod開発のテスト⾃動化 どのテストを⾃動化するか ‒ まとめ ⾃動化コストが 低いところ 処理が 複雑なところ 重要な
ところ 1 2 3 静的解析 AIエンジン セキュリティ ⾃動テスト エンジン 主要画⾯
3. MagicPod開発のテスト⾃動化 テスト作成は誰がやる? §新機能追加のタイミングで、エンジニアがテストも追加 §作ることで、テスト⾃動化のユーザー業務を理解 §E2Eテストケースの管理が雑という課題はある
1. MagicPodとは 2. MagicPodの開発環境&体制 3. MagicPod開発のテスト⾃動化 4. MagicPod開発のCI運⽤
4. MagicPod開発のCI運⽤ MagicPod開発のCI運⽤ §GitHubにプルリクエストを出しながら開発を進める §変更がコミットされた各タイミングでCircleCIによるビ ルドを実施 main branch プルリクエスト プルリクエスト
feature branches
4. MagicPod開発のCI運⽤ プルリクエストをマージする前 §feature branchでは、⾼速に終わる「静的解析」「ユ ニットテスト」を実施 §コードレビュー前に⼀定の品質を担保 main branch プルリクエスト
プルリクエスト feature branches
4. MagicPod開発のCI運⽤ プルリクエストをマージした後 §main branchでは、さらに「Dockerコンテナのビルド」 「結合テスト」も実施 §変更がコミットされるたび
4. MagicPod開発のCI運⽤ E2Eテスト §1⽇ 1〜2回実施
4. MagicPod開発のCI運⽤ CIの結果は誰が⾒る? §2週間スプリントごとの担当制 §メンテナンスを通じ、テスト⾃動化のユーザー業務を理解 §エラー調査⼒向上、知識平準化の効果も
まとめ §⾃動テストツールも⾃動テスト‧CIしてます §範囲を絞って⾃動化 § ⾃動化コストが低いところ § 処理が複雑なところ § 重要なところ
Thank you!