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.7k
Unity + Airtest+Poco入門
うどん
March 24, 2021
Tweet
Share
More Decks by うどん
See All by うどん
モバイルゲーム事業における 内製デバイスファームの開発/運用事例
nitudon
0
130
【CEDEC2023】モバイルゲームのQA課題に組織でチャレンジ!〜子会社を跨いで挑戦するQA効率化の道のり〜
nitudon
0
3.2k
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
KATA
mclloyd
29
14k
Optimizing for Happiness
mojombo
376
70k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Building Adaptive Systems
keathley
38
2.3k
Done Done
chrislema
181
16k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Become a Pro
speakerdeck
PRO
26
5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
520
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