やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

Unity Automated QA攻略ガイド

UnityのUIテスト補助ライブラリであるAutomated QAパッケージの解説本を、 コミックマーケット99の2日目(金曜日)東ト38b*1いか小屋」で頒布します。

Automated QAパッケージは、今年4月にアルファ版としてv0.2.0がリリースされた後もバージョンアップが重ねられている実験的(Experimental)パッケージです。 本書は最新のv0.8.1での各機能の紹介からTips、実験的パッケージならではのトラブルシューティングまで盛り込みました。

B5判40ページで頒布価格は1,000円。 J-Coin PayおよびKyashでのお支払いに対応します。 C99は物理本のみで、電子版は来年1/22開催の技術書典12での頒布を予定しています。

BOOTHにて物理本の通販を開始しました[1/1追記]。電子版は1/22に追加予定です[1/18追記] ikagoya.booth.pm

技術書典マーケットはこちらです。1/22 10:00販売開始予定です[1/18追記] techbookfest.org

目次の紹介

各章の内容は次のとおりです。

第1章 Automated QA概要

Automated QAパッケージの概要、ユースケース(用途ごとに第2章以降で紹介している機能をどう使うか)、セットアップ方法を解説しています。

第2章 Recorded Playback

Automated QAパッケージの主要機能である、Unityエディター上でUI操作を記録し、再生する機能を解説しています。 基本機能のほか、ランダムな操作を行なうGame Crawler機能、HTMLレポート機能についても解説しています。

「2.6 Input Systemサポート」についてのフォローアップ記事を書きました [2022/11/11追記]

www.nowsprinting.com

第3章 Test Generation

Recorded Playback機能で記録した操作から、Unity Test Frameworkのテストコードを生成する機能を解説しています。 テストコードの生成方法は3パターン提供されており、それぞれの特徴を紹介しています。 また、生成されたテストによる検証のメカニズムと、より厳密な検証を行なうためのアサーションの書きかたを解説しています。

第4章 Test Driver API

Recorded Playback機能によらず、直接テストコードやランタイムからUI操作を行なうためのAPIを紹介しています。 ただし、現時点では制約も多く、またテストコードのメンテナンスを考えるとお勧めしづらい機能のため、ごく簡単に紹介するにとどめています。

第5章 Automators

複数の操作記録の再生を連続実行できる機能を解説しています。 また、記録の再生のほか、ランダムな操作を行なうGame CrawlerやSceneのロードを行なうAutomatorの紹介、カスタムAutomatorを自作する方法も紹介しています。

第6章 Unity Test Framework Tips

Test Generation機能で生成されたテストコードはUnity Test Framework上で実行されます。 拙著『Unity Test Framework完全攻略ガイド』(下参照)から、直接関連するTipsを一部抜粋して紹介しています。

www.nowsprinting.com

付録A トラブルシュート

Automated QAパッケージは実験的パッケージです。フォーラムで不具合報告などしてきましたが、機能開発を優先されているようで修正されていない問題も残っています。 Automated QAパッケージを使うにあたって遭遇するであろうエラーについて、その原因と回避方法を紹介しています。

付録B UPMパッケージにパッチをあてる

Automated QAはUPM(Unity Package Manager)パッケージとして提供されています*2。 これに対し、手元の開発環境で独自のパッチを当てて運用する方法について紹介しています。

付録C Test Runnerウィンドウの使いかた

UnityエディターのTest Runnerウィンドウの使いかたを紹介しています。 本章は『Unity Test Framework完全攻略ガイド』からの抜粋です。v1.1.0で追加しました。

表紙について

[1/22追記]

かわいいSDユニティちゃんを描いていただいたのは、りょふ彦(@ryofu1323)さん。 例の猫のポーズで検品を行なう姿には、Automated QAパッケージの限界を表現したいという意図があります。

それは、Recorded Playback機能によるUI操作の再生をTest Generation機能で自動テストとして動作させる、またGame Crawler機能によるモンキーテストで得られるものは

「とりあえずエラーが出てないからヨシ!」

という温度感だということです。

ゲームが本当に意図通り動作していることを確認し、安心してリリースするためには、「3.4.2 アサーション」で紹介している厳密なテストコードを書いたり、その他さまざまな観点でのテスト実施が必要です。 私はAutomated QAはとても役に立つパッケージだと信じていますが、万能ではないのだということを認識していただけたら嬉しいです。

また、書名の「完全」を黒線で消しているのは、Automated QAが実験的(Experimental)なパッケージであることに起因しています*3。 いつか正式リリースを迎え、本書も改版とともに黒線を消す日が来ることでしょう。

最後に

C99はチケット抽選制で、すでに二次販売も終了しています。 参加したかったがチケット確保できなかったという方もいらっしゃるでしょう(私も1日目のチケット取れませんでした)。 物理本の売れ残りはBOOTHで頒布予定ですので、ショップをフォローしてお待ちいただけますと幸いです。

ikagoya.booth.pm

*1:日本Androidの会Unity部さんのお隣です。UNIBOOK13のついでにお立ち寄りください

*2:しかも、2022年後半まで開発保留と発表されたので、その間バグフィックスされません

*3:実装されている機能をすべて網羅しきれていない意味もありますが