Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity + Airtest+Poco入門

うどん
March 24, 2021
3.9k

Unity + Airtest+Poco入門

うどん

March 24, 2021
Tweet

Transcript

  1. Unity+Airtest+Poco入門
    〜お手軽実機でUnityの自動テスト〜
     住田直樹

    View full-size slide

  2. 株式会社QualiArts (サイバーエージェントグループ)
    Unityクライアントエンジニア
    Unity/C#/Jenkins/Blender/Rust
    #UniTips #CA.unity
    住田直樹
    @udon_qu
    @nitudon

    View full-size slide

  3. 本日話すこと
    ● AirtestとPocoの紹介
    ○ Airtestって?Pocoって?
    ○ AirtestとPocoができること
    ● 注意
    ○ Androidのケースのみ紹介(iOSも可能ですが、ちょっと手順が異なります)
    ○ 本LTの自動テスト = UIテスト
    ■ データと連動したE2Eテストではないです

    View full-size slide

  4. 1. AirtestとPoco

    View full-size slide

  5. Airtest
    ● NetEase社のモバイルゲーム向け自動テスト用フレームワーク(Python)
    ○ https://airtest.netease.com/
    ○ IDEも公式で用意されている
    ● シンプルな記述でUIのテストを実装できる
    ○ タップやスワイプなどのUI操作
    ○ 画像認識ベースのUI検出

    View full-size slide

  6. Airtest
    Airtest IDE
    ● Airtest APIの補完
    ● 端末との接続機能
    ● 端末のキャプチャとUI操作
    ● テストの実行
    ● Pocoによるヒエラルキー解析
    ● テストレポート生成
    etc...

    View full-size slide

  7. Airtestのやり方
    1. IDEでスクリプト書いて
    2. 端末を接続して
    3. IDE上で再生ボタンをポチる
    これだけ!

    View full-size slide

  8. とてもシンプルなAirtest API
    ● 画面をタップしたい!
    ○ touch([0.1, 0.1]);
    ● 待機したい!
    ○ sleep(3);
    ● 文字を入力したい!
    ○ text(“hogehoge”);
    ● スクリーンショットを撮りたい!
    ○ snapshot(msg="hogehoge")

    View full-size slide

  9. 画像認識ベースのUIテストの実装
    ● 画像認識して特定のUIをタッチしたり待ったりしたい!
    ○ IDEで用意されているAirtest Assistantを活用

    View full-size slide

  10. Poco
    ● 同じく提供されているUIの自動テスト用のフレームワーク
    ○ https://github.com/AirtestProject/Poco
    ○ Unity、cocos、ネイティブアプリなどに対応
    ■ uGUI、nGUI、FairyGUIに対応

    View full-size slide

  11. Pocoの機能
    ● ヒエラルキー解析によるUI処理
    ○ Unity上のヒエラルキーでの階層とGameObject名を取得
    ■ 特定のGameObjectのタップ
    ● 親子関係も把握できる
    ● Component名も取れる
    ● Textの中身も取れる
    アプリケーションの実装に対してメタ的なテストを実現

    View full-size slide

  12. ヒエラルキーベースのUIテストの実装
    ● オブジェクトをタップしたい!
    ○ poco(“hoge”).click();
    ● オブジェクトの子をタップしたい!
    ○ poco(“hoge”).child().click();
    ● オブジェクトがあるか確かめたい!
    ○ poco(“hoge”).is_exists();
    ● オブジェクトが出てくるまで待ちたい!
    ○ poco(“hoge”).wait_appearance();

    View full-size slide

  13. 2. Airtestの使い方

    View full-size slide

  14. Airtestの環境構築
    ● Airtest IDEのインストール
    ○ https://airtest.netease.com/
    ● Android端末の用意と接続
    ○ USBデバッグができるところまで

    View full-size slide

  15. Airtest IDEと
    端末の接続
    1. 「Mobile Phone Connection」で
    端末を確認
    2. 「connect」を押して接続
    3. 端末の画面が表示されること
    を確認

    View full-size slide

  16. 実装と実行
    1. Script Editorにコードを書く
    2. 再生ボタンを押す

    View full-size slide

  17. Airtest
    レポートの生成
    実行した後に
    を押す
    (再生ボタンの2つ横)

    View full-size slide

  18. 3. Pocoの使い方

    View full-size slide

  19. Pocoを使うために必要なこと
    ● Pocoのライブラリのインポート
    ○ pip install pocoui
    ● Unityアプリケーション側へのSDK導入
    ○ GitHubで公開されているので導入(次のスライド)

    View full-size slide

  20. Unityアプリケーション側でのSDK導入
    ● https://github.com/AirtestProject/Poco-SDK/tree/master/Unit
    y3D
    ○ 基本的に全てAssetsに入れる
    ■ ※GUIだけ使うものだけ入れる
    ● 「fairygui」「ngui」「ugui」から一つ

    View full-size slide

  21. シーンの調整
    ● PocoManagerをシーンに配置するだけ
    ○ 後はビルドして反応するか確認

    View full-size slide

  22. Poco Assistant

    Poco Assistant
    IDE上でのUnity側のヒエラル
    キー解析機能
    アプリを起動してヒエラルキーを
    確認しながらスクリプトが書ける!
    控えめに言って神機能

    View full-size slide

  23. 4. まとめ

    View full-size slide

  24. Airtest+Pocoの自動テストはいいぞ
    ● 利点
    ○ UIのテストが直感的に実装できる
    ■ 画像認識ベースとヒエラルキーベースの2つを実現
    ■ Pythonの経験がなくても余裕
    ○ 提供されている機能が豊富
    ■ 専用のIDEからHTMLレポートの生成まで
    ○ ヒエラルキーベースのテストの優秀さ
    ■ アセットの更新に強いテストを実現

    View full-size slide

  25. 活用事例
    ● チュートリアルの自動テスト
    ○ チュートリアルは各機能にアクセスしがち
    ○ 遷移が特殊なケースもあって、不意に壊れることも
    → Airtestで定期的に回して正常性のチェック

    View full-size slide

  26. 活用事例
    ● 多人数対戦の正常型チェック
    ○ 多人数が必要な機能はそもそも複数台操作したりして大変
    ■ 単純なケースでも人や時間を要する
    → 複数台の端末をAirtestで操作してbot操作を実現

    View full-size slide

  27. 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

    View full-size slide

  28. Qiitaも書いてます
    ● Airtest+Pocoで始めるUnityの自動テスト
    ○ https://qiita.com/Nitudon/items/0c5c527841388fec22ed
    ○ 内容
    ■ AirtestとPocoの説明
    ■ Airtest IDEの最低限の使い方
    ■ Pocoの機能紹介
    ■ スクリプトの例示
    こちらも良ければ!

    View full-size slide

  29. Airtestの自動テストはいいぞ
    Let’s
    Airtest

    View full-size slide