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
クラウドE2Eテスト環境を構築してQA業務の効率化アップ
Search
gremito
December 07, 2024
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラウドE2Eテスト環境を構築してQA業務の効率化アップ
イベントURL:
https://testautomationresearch.connpass.com/event/333442/
gremito
December 07, 2024
More Decks by gremito
See All by gremito
Unity Fukuoka 17 - (非公式)Unityプログラミング・バイブルR6 発売記念イベント
gremito
0
75
QAエンジニアになる必要な知識とスキル
gremito
0
610
JaSST'20 Tokyo RejectCon for Session
gremito
0
1.7k
3Dゲーム開発で気をつけるべきこと
gremito
1
440
できることが多いUnityの落とし穴について - Unity Fukuoka 15
gremito
0
300
運用と開発が同時並行で進んでいるRailsアプリケーションをDocker対応した事例について
gremito
1
1.6k
令和で脱サラ 転職LT#5 #jobchanger
gremito
1
490
Unityのインストラクターはじめました - Gotanda.unity #13 #gotandaunity
gremito
1
860
福岡のUnity界隈を盛り上げるイベント『Unity Fukuoka』 #edayfuk
gremito
0
3.2k
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Embracing the Ebb and Flow
colly
88
5.1k
A designer walks into a library…
pauljervisheath
211
24k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Designing for Timeless Needs
cassininazir
1
270
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Tell your own story through comics
letsgokoyo
1
980
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
180
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Curse of the Amulet
leimatthew05
2
13k
Transcript
クラウドE2Eテスト環境を構築して QA業務の効率化アップ ソフトウェアテスト自動化カンファレンス2024 2024/12/07 gremito
イントロ • クラウドE2Eテストをテーマにしていますが、実装方法の詳細やハンズオンな どについて解説することはありません。 • 本公演では、登壇者がこれまで各現場で経験してきたクラウドE2Eテストの体 験談と課題の対策や計画していることなどをご紹介したいと考えております。
クラウドE2Eテスト環境を構築して QA業務の効率化アップしたこと/できなかったこと体 験談 ソフトウェアテスト自動化カンファレンス2024 2024/12/07 gremito
ターゲット • プロダクトに関われているメンバー全員 ◦ ツールを用いて誰でもテストを作れて管理できるようにしたい ◦ スクラムならデイリースクラムでプレイ会をやって日々品質チェックをメンバー全員でやること もある ◦
最後の砦にならないQAライフにしたい © Scrum.org.
プロフィール • 岩本 拓也 | gremito(@grem_ito) • フリーランス エンジニア ◦
2014~2019に3社経験して2019/7よりフリーランス ◦ Webやスマホのアプリ開発 / QAエンジニア / CSM • これまでのQA業務について ◦ Web/スマホ/タブレットのアプリでサービスやソシャゲアプリなど ◦ QA業務の課題調査、改善提案、QAエンジニア業務支援 • イベント ◦ Unity Fukuoka ◦ QAエンジニア勉強会 X / Twitter Wantedly LinkdIn
QAエンジニアについては...
https://youtu.be/zgIikXWyQd8 ASTERソフトウェアテストチャンネル https://www.youtube.com/@aster7016/videos
アジェンダ • イントロ • ターゲット • プロフィール • テストとQA •
クラウドE2Eテスト • 事例紹介 • 課題 • クロージング
テストとQAについて
テスト≠QA • テストは手法であって目的ではなく、またテストだけではQA(品質保証)を網羅できな い ◦ テスト=QAになってしまう原因は、品質チェックの手法がテスト(試験, 検査, etc)しかないこと やリリース前のテストがQA作業というイメージが強いため。
• テストの他にもQA業務があってエンジニア並みに大変 ◦ プロセス改善、テストデータ管理、QA見積もり、dev/stg/pro環境毎の品質管理、…etc • テスト ◦ テストの種類 ▪ エンジニアサイド: 単体テスト、結合テスト、機能テスト、…etc ▪ QAサイド: システムテスト、受け入れテスト、E2Eテスト、リグレッションテスト、パフォーマンステス ト、セキュリティテスト、ユーザビリティテスト、..etc ◦ テストフロー: 計画、設計、作成、実行、評価
テスト≠QA 要件策定 要件レビュー、テスト計画 設計 システム設計レビュー、テスト要件洗い出し、テストケース設計、テストツール要件洗い出し 開発 スプリントレビュー、テストツール依頼、テストデータ準備、テストケース作成、テスト見積もり レベルデザイン データ作成 レベルデザインレビュー、マスタデータレビュー
テスト Unit/APIテスト把握、テスト実施、テストFB、品質状況管理 リリース リリースフローレビュー、本番テスト準備 デプロイ 本番テスト実施、品質状況管理 振り返り 不具合と仕様の品質状況管理Fix、QA課題の整理と改善、テストふりかえり
QAが関わる範囲とは • 品質に関わる工程は全て、DevOps前提で参画する • 開発QAと運用QAのチーム分けして、開発から運用と運用から開発とローテーション でQAを回すと課題を共有しやすい https://daipresents.com/2020/06/04/continuous-testing-in-devops/
テストが最後の砦にならないように • リリース前のテストで品質の保証を全て担保しようとすると危険 ◦ 設計や開発の段階からこまめにテストすることが大切 • 外注する場合 ◦ テストの計画や設計から丸投げしてしまうと逆にコストがかかって障害が起きる品質になり
かねないのでご注意を ◦ テスト実施のみ外注するのがオススメ
クラウド E2Eテスト
E2E(End to End)テストについて • クライアントからアプリを操作して製品の品質に問題がないか動作確認するテスト ◦ UIテストや受け入れテストなどとも呼ばれる ▪ UIテストはエンジニアが使用するテストツールで実装するためQAは把握するだけで管理はしな
い ▪ 受け入れテスト(ビジネス/顧客要件を満たすことを確認する)でE2Eテスト(システム全体を確認 する)をやっている • ツール ◦ Web: Selenium, Cypress, Playwright, Puppeteer, …etc ◦ Mobile: Appium, Airtest, …etc
クラウド対応するE2Eテストとは • クラウドE2Eテスト=テスト自動化 • サービス ◦ SaaS ▪ mabl, Autfy,
MagicPod, Ghost Inspector, …etc ◦ PaaS ▪ Remote TestKit, AnyTest, AWS DeviceFarm, Firebase Test Lab, Visual Studio App Center(2025/3/31廃止で以降はBrowserStack App Automate), …etc • トレードオフについて ◦ イニシャルコストが高くかかるものの自動化やマニュアル化を徹底することでラーニングコストを低コス トに抑えることができ、安定したQAフローが完成する
事例紹介
• 背景について ◦ 古いソシャゲタイトルでCocos2d-xが用いられており、リリース前テストやデバッグテストなど でE2Eテストの自動化をやりたいがCocos2d-xをサポートしているツールがほとんどなかった ため作ることに。 1. Cocos2d-x向けE2Eテスト自動化ツール開発
• Cocos Consoleで起動されるTCPサー バに接続してtouchやswipeなどのコマ ンドを実行することで遠隔操作=E2Eテ ストツールができる 1. Cocos2d-x向けE2Eテスト自動化ツール開発 https://developers.wonderpla.net/entry/2014/11/28/113257
• 座標を前もって準備しなくてもいいようにutils::captureScreenで取得できるスクショ画 像とUI要素の画像(アイコンやテキストなど)をOpenCVを用いて座標を取得してTCPコ マンドで遠隔操作する機能を作って改善 1. Cocos2d-x向けE2Eテスト自動化ツール開発 https://qiita.com/blankblank/items/2e5ae8c15c3d6f6a484d https://qiita.com/shu223/items/c91019281fa660d1fa6d
1. Cocos2d-x向けE2Eテスト自動化ツール開発 • EventListenerTouchOneByOneで実機の操 作ログを作ることで手動テスト時に起きた不 具合を再度自動テストで再現できるように 対策 • 効果測定前やクラウド対応前にプロジェクト を抜けたため結果どうなったか不明...
• 背景について ◦ リグレッションテストを自動化してCI実行することでテストコストを最適化する目的として、まず は使用されていないMacにAppiumとJenkinsを入れてテスト用実機をUSB接続して定期実行 する環境を作った ◦ コロナ禍になったタイミングでJenkinsからAzure Pipelinesに移行してクラウド化することで iOS/Androidを並行実行に対応
2. Azure Pipelinesでアプリをビルド後に AppiumのE2Eテストを実行するCIツール開発
2. Azure Pipelinesでアプリをビルド後に AppiumのE2Eテストを実行するCIツール開発 • 根本的な課題としてQA業務の属人化により アプリビルドを手動で対応されていたため、 起動テストを実行して正常であればアプリの ビルドとデプロイを行う環境を作るだけでも 大きな改善になった
• クライアントの経営方針が変わったことでテ ストフローの整備ができないなど課題が残っ たまま案件終了... https://qiita.com/gremito/items/f2c981a05b8df1a21acb
3. Autify / mabl / MagicPodなどでAIによるE2Eテスト自動化対応 • 背景について ◦ E2Eテストを自動化するためにツール選定およびAIによる自動更新機能付きサービスの調
査、検証、計画、導入、ドキュメント整備、引き継ぎの対応を数社で経験(2020〜2023年) ◦ 所感 i. mabl: 多機能で慣れが必要、ドキュメントが豊富、サポート良き、プランちょい高 ii. Autify: 十分な機能で直感的に使える、ドキュメントが豊富、サポート良き、プランちょい 高 iii. MagicPod: シンプル機能で直感的に使える、ドキュメント少なめ、サポート普、プラン普
• アプリのインストールやセットアップがなく、Web上で利用するツールなので簡単安全 • どのサービスも基本的にIDEのツール操作でテストを作って管理でき、ツールを覚え てしまえば誰でもテストを作成して管理することができる ◦ ループ処理 / 条件式 /
ランダム要素 / 異なる複数のテストデータなどSeleniumやCypress などのツールでは難しいテストをGUI操作で柔軟に作成できる ▪ テストの作成 – mablヘルプ ▪ Autify University • ただし各サービスで同じテストを作って動作確認すると、テスト結果が異なるケース があってプロダクトとツールとの相性があった 3. Autify / mabl / MagicPodなどでAIによるE2Eテスト自動化対応
3. Autify / mabl / MagicPodなどでAIによるE2Eテスト自動化対応 • AIによるテストシナリオのアプデ機能は、UI変更が色・形・文言などの小さい変更であ ればほぼ自動アプデで対応できるがセレクトがプルダウンになるUX変更レベルは手 動対応が必要になる
• ツールで作れない箇所は、XPathやJavaScriptを扱う必要がある出てくるためフロント エンドとプログラミングのスキルが必要になる https://autify.jp/products/nocode https://www.mabl.com/ja/ai-test-automation https://magicpod.com/
3. Autify / mabl / MagicPodなどでAIによるE2Eテスト自動化対応 • すでにあるテストケースを全て自動化することはできず、E2Eテスト自動化するために テストシナリオ作成に移行する必要があった •
唯一1件だけリリース前テストをAIテストサービスで自動化と一部手動テストの両立で 問題なく引き継ぐことができた
4. Airtest IDEで作ったテストをJenkinsからAWS DeviceFarmに E2Eテストを実行するCIツール開発 • 背景について ◦ 複数のUnityアプリで活用できるE2Eテスト自動化環境を作る ◦
エンジニアもテスター/デバッガーも一緒にテストを管理してリリース前テストのコストを少しで も減らしたい Airtest IDE AWS Device Farm
4. Airtest IDEで作ったテストをJenkinsからAWS DeviceFarmに E2Eテストを実行するCIツール開発 • アカツキさんの知見を参考に開発 • .airディレクトリ内の.pyファイルがAirtest専用 スクリプトになっているため、共通化や機能追
加しやすいようにPyTestに変換するシェルス クリプトを作成 https://hackerslab.aktsk.jp/2023/12/10/070000
4. Airtest IDEで作ったテストをJenkinsからAWS DeviceFarmに E2Eテストを実行するCIツール開発 • テスト結果通知はAWS DeviceFarmからではなく Jenkinsで全テストをまとめて1通知で送信するように対 応
• 現在も改善しながら導入対応中 ◦ DeviceFarmの従来のテストスペックが2024/10に使用 できなくなったため android_test_host: amazon_linux_2 にアプデ対応 ◦ AndroidのみでiOSテスト未対応 ◦ テストパッケージを各テストで作成する際に必要なライ ブラリをZIP化するためテストが増える=テスト時間が 増加するため事前にZIPファイルを作っておきたい
課題
テストデータについて • 新規アカウントと既存アカウント、テストデータが準備されたアカウントやバンされたア カウントなどのテストデータを準備した上でE2EテストをCI実行して、全テストが終われ ばテストデータを実行前の状態に初期化するサーバー実装が必要 • テスト環境が複数あった際にDBがそれぞれ独立したシステム構成になっていると、 サーバーAで準備したテストデータをテストで使用したいサーバーBにコピーする作業 が発生し、テスター/デバッガーさんにエンジニアスキルがなくてもSQLスキルを持っ ているととてもありがたい
テストパターンについて • ランダムや確率や分岐などの毎回結果が変わる要素があると期待通りのテストを作 れないケースが出てくる ◦ 例1: 宿題生成アプリ(ChatGPT APIに特定のパラメータを渡して宿題を作ってExcelやPDFなどを生成 する)のQAでは、問題の内容以外のE2Eテストは作れるものの問題の内容が正確なものか品質チェッ クするのは難しい。A
to A(Agent to Agent)で問題を解いてその内容が正しいかまで全てAIに任せる ことができれば自動化できる。 ◦ 例2: ソシャゲアプリでガチャの確率が正しいかガチャのE2Eテスト内で排出されるアイテムの内容が正 確なものか品質チェックするのは難しい。ひたすらガチャを引くテストを作って、E2Eテストが終わった後 にその結果排出されたアイテムを集計して引いたガチャの回数とアイテムの数の割合を計算するサー バー実装が必要。 • テスト量が多いとテスト時間も長いため諸々コストがかかってしまう ◦ DeviceFarmの最大テスト時間は150分(2時間半)だが1テスト30分以内に設計する ◦ スモークテストをデイリーではなくウィークリーや半月に1回実行するなど調整する
イニシャルorラーニングで体力切れが起きやすい • 自動E2Eテストを作りたい気持ちが先行してるとだいたい失敗する/した • イニシャルとラーニングのコストを算出して費用対効果も概算見積もって万全に事を 進んでも会社やプロダクトの方針が変わることがあるため、なる早で作りきるかなるよ うになるさ精神で柔軟に対応する • すぐに作れるものを量産してCI稼働して、その分の効果が出てもアプデ作業や他のテ スト作成にコストを払えないのであれば自動E2Eには手をつけず、DevOpsとスクラム
を真っ当にやればいいと思うケースがあった
クロージング
まとめ • クラウドE2Eテストについて ◦ テスト自動化とクラウド化だけでなく、CI対応やE2Eテスト運用などやることが多く導入コスト が高いため、プロダクト状況にマッチするQAプランを考えるだけでも一苦労する。 ◦ テストを自動化することでテストコストを最適化する以外にも、属人化の改善やテスト品質の 最適化にも効果的であるため、コストだけに洗脳されないように。
◦ Airtest IDEやmabl/Autify/MagicPodなどのE2EテストIDEツールを活用して、ツールを覚えれ ば誰でもテストを作成して管理できるQA環境を作ることで、リリース前テストを最後の砦にし ない対策ができる。 ▪ ※誰が作ってもある一定のテスト品質になるようにQAのテストフローにもレビュー文化を作る
まとめ • テスター/デバッガーの方にもテストスクリプトを扱えるようにGoogle ColabやGoogle Apps Scriptを 活用すると学びやすいし実践的に使える。 ◦ ※過去のQAエンジニア勉強会でGASのハンズオンがあります
https://qa-engineer-meetup .connpass.com/
ご視聴ありがとうございました🙏 X / Twitter Wantedly LinkdIn