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
Unity + Airtest+Poco入門
Search
うどん
March 24, 2021
0
4.6k
Unity + Airtest+Poco入門
うどん
March 24, 2021
Tweet
Share
More Decks by うどん
See All by うどん
モバイルゲーム事業における 内製デバイスファームの開発/運用事例
nitudon
0
110
【CEDEC2023】モバイルゲームのQA課題に組織でチャレンジ!〜子会社を跨いで挑戦するQA効率化の道のり〜
nitudon
0
3.1k
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
How GitHub (no longer) Works
holman
310
140k
Designing for Performance
lara
604
68k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
The Cult of Friendly URLs
andyhume
78
6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Raft: Consensus for Rubyists
vanstee
136
6.6k
Practical Orchestrator
shlominoach
186
10k
What's new in Ruby 2.0
geeforr
343
31k
Transcript
Unity+Airtest+Poco入門 〜お手軽実機でUnityの自動テスト〜 住田直樹
株式会社QualiArts (サイバーエージェントグループ) Unityクライアントエンジニア Unity/C#/Jenkins/Blender/Rust #UniTips #CA.unity 住田直樹 @udon_qu @nitudon
本日話すこと • AirtestとPocoの紹介 ◦ Airtestって?Pocoって? ◦ AirtestとPocoができること • 注意 ◦
Androidのケースのみ紹介(iOSも可能ですが、ちょっと手順が異なります) ◦ 本LTの自動テスト = UIテスト ▪ データと連動したE2Eテストではないです
1. AirtestとPoco
Airtest • NetEase社のモバイルゲーム向け自動テスト用フレームワーク(Python) ◦ https://airtest.netease.com/ ◦ IDEも公式で用意されている • シンプルな記述でUIのテストを実装できる ◦
タップやスワイプなどのUI操作 ◦ 画像認識ベースのUI検出
Airtest Airtest IDE • Airtest APIの補完 • 端末との接続機能 • 端末のキャプチャとUI操作
• テストの実行 • Pocoによるヒエラルキー解析 • テストレポート生成 etc...
Airtestのやり方 1. IDEでスクリプト書いて 2. 端末を接続して 3. IDE上で再生ボタンをポチる これだけ!
とてもシンプルなAirtest API • 画面をタップしたい! ◦ touch([0.1, 0.1]); • 待機したい! ◦
sleep(3); • 文字を入力したい! ◦ text(“hogehoge”); • スクリーンショットを撮りたい! ◦ snapshot(msg="hogehoge")
画像認識ベースのUIテストの実装 • 画像認識して特定のUIをタッチしたり待ったりしたい! ◦ IDEで用意されているAirtest Assistantを活用
Poco • 同じく提供されているUIの自動テスト用のフレームワーク ◦ https://github.com/AirtestProject/Poco ◦ Unity、cocos、ネイティブアプリなどに対応 ▪ uGUI、nGUI、FairyGUIに対応
Pocoの機能 • ヒエラルキー解析によるUI処理 ◦ Unity上のヒエラルキーでの階層とGameObject名を取得 ▪ 特定のGameObjectのタップ • 親子関係も把握できる •
Component名も取れる • Textの中身も取れる アプリケーションの実装に対してメタ的なテストを実現
ヒエラルキーベースのUIテストの実装 • オブジェクトをタップしたい! ◦ poco(“hoge”).click(); • オブジェクトの子をタップしたい! ◦ poco(“hoge”).child().click(); •
オブジェクトがあるか確かめたい! ◦ poco(“hoge”).is_exists(); • オブジェクトが出てくるまで待ちたい! ◦ poco(“hoge”).wait_appearance();
2. Airtestの使い方
Airtestの環境構築 • Airtest IDEのインストール ◦ https://airtest.netease.com/ • Android端末の用意と接続 ◦ USBデバッグができるところまで
Airtest IDEと 端末の接続 1. 「Mobile Phone Connection」で 端末を確認 2. 「connect」を押して接続
3. 端末の画面が表示されること を確認
実装と実行 1. Script Editorにコードを書く 2. 再生ボタンを押す
Airtest レポートの生成 実行した後に を押す (再生ボタンの2つ横)
3. Pocoの使い方
Pocoを使うために必要なこと • Pocoのライブラリのインポート ◦ pip install pocoui • Unityアプリケーション側へのSDK導入 ◦
GitHubで公開されているので導入(次のスライド)
Unityアプリケーション側でのSDK導入 • https://github.com/AirtestProject/Poco-SDK/tree/master/Unit y3D ◦ 基本的に全てAssetsに入れる ▪ ※GUIだけ使うものだけ入れる • 「fairygui」「ngui」「ugui」から一つ
シーンの調整 • PocoManagerをシーンに配置するだけ ◦ 後はビルドして反応するか確認
Poco Assistant • Poco Assistant IDE上でのUnity側のヒエラル キー解析機能 アプリを起動してヒエラルキーを 確認しながらスクリプトが書ける! 控えめに言って神機能
4. まとめ
Airtest+Pocoの自動テストはいいぞ • 利点 ◦ UIのテストが直感的に実装できる ▪ 画像認識ベースとヒエラルキーベースの2つを実現 ▪ Pythonの経験がなくても余裕 ◦
提供されている機能が豊富 ▪ 専用のIDEからHTMLレポートの生成まで ◦ ヒエラルキーベースのテストの優秀さ ▪ アセットの更新に強いテストを実現
活用事例 • チュートリアルの自動テスト ◦ チュートリアルは各機能にアクセスしがち ◦ 遷移が特殊なケースもあって、不意に壊れることも → Airtestで定期的に回して正常性のチェック
活用事例 • 多人数対戦の正常型チェック ◦ 多人数が必要な機能はそもそも複数台操作したりして大変 ▪ 単純なケースでも人や時間を要する → 複数台の端末をAirtestで操作してbot操作を実現
APIドキュメント • Airtest ◦ https://airtest.readthedocs.io/en/latest/all_module/airtest .core.api.html • Poco ◦ https://poco.readthedocs.io/en/latest/source/poco.pocof
w.html
Qiitaも書いてます • Airtest+Pocoで始めるUnityの自動テスト ◦ https://qiita.com/Nitudon/items/0c5c527841388fec22ed ◦ 内容 ▪ AirtestとPocoの説明 ▪
Airtest IDEの最低限の使い方 ▪ Pocoの機能紹介 ▪ スクリプトの例示 こちらも良ければ!
Airtestの自動テストはいいぞ Let’s Airtest