Unity3Dゲームに対して機能テストを実行するにはどうすればよいですか?


25

コンテキスト

私はUnity3dでゲームのレガシーコードを続けています。新しいものを実装するときやリファクタリングするときに物事を壊さないように、回帰を目的とした機能テストをいくつか書きたいと思います。

Unity3d用の「Unit Test Tools」スイートがアセットとして利用可能であることは既に知っています。単体テストスイートとして使用したので、モデル(クラス)をテストします。

私が考えているテストの種類の例

「機能テスト」の場合、次のようなことを意味します。

  • プログラムを実行する
  • メニューシーンで、「開始」というボタンがあることをアサートします。
  • クリックして
  • 次に、新しいシーンがロードされたことをアサートします
  • アサートピクセルXXXは赤
  • 座標XXXをクリックします
  • ピクセルが緑に変わったことを確認します

ご質問

Q1:ゲームの機能テストを作成して実行するにはどうすればよいですか?これは通常、UnityTestTools(UTT)でも行われますか?

Q2: UTTが単体テストに向いている場合、機能テスト用の別のスイートはありますか?どれ?

ノート:

私はAndroidをターゲットにしています Unity5.3.1f1


私が知る限り、組み込みUTTは単体テスト用です。アセットストアのニーズに合ったテストツールがあるかもしれません
-user3797758

3
実は違う。Unityテストツールには、統合テスト用のツールセットと、最初のバージョン以降の多くのアサーションが含まれています。組み込みUTTでこのようなものが表示されない場合は、Asset Storeから完全なUTTをダウンロードします。
マキシムカマロフ

テスト実行のドキュメントであるUnity Test Runner Docを見てください。プレイモードと編集モードの両方のテストが可能です。
Racksay

回答:


1

私が理解しているように、あなたはUnityの自動化テストを理解しようとしています。

ユニティテストツール

これはあなたのgotoメソッドでなければなりませんが、どのように掘り下げる前に、その理由を調べます。

自動化テストの任意の形式を実行するための好ましい方法は、可能な限り実稼働に近い環境でこれを実行することです。Unityテストツール(Unity Editor内にある)のようなものを使用することは、従来の統合テストを書いた人にとっては悪い考えのように思えます。

どうして?統合テストでは、ユーザーがアプリケーションを開いたときにそこにない余分なものを最小限に抑えたいためです。Unityエディターのパフォーマンスや動作は、iOSバージョンとは異なる場合があります(たとえば)。

では、なぜUnity Test Tools(UTT)を使用するのですか?

主な理由は利便性です。Unity EditorとUTTはどちらも、簡単で視覚的に使用できるように構築されています。テストを書いたり、特定のゲームにテストをフックしたり、テストがいつ失敗するかを理解したりするのは簡単です。

Unity Editorと製品版の動作の違いはどうですか?

結局のところ、Unity Editorはアプリケーションのラッパーです。つまり、エディターとプロダクションの間にはいくつかの違いがあります。しかし、統合テストは別として、Unity Editorは非常に長い間ラッパーになっています。何千ものゲームが組み込まれた成熟したプラットフォームです。エディター内で統合テストを実行して得られる結果は非常に正確です。

提供したサンプルシナリオでは、Unityテストツールを使用して、最初のアイテム以外のすべてを簡単にアサートできます。他の統合テストと同様に、シーンを開いて動作を検証できます。

UTTを使用してテストのほとんど(すべてではないにしても)を作成することをお勧めします。継続的統合ツール(Jenkinsなど)との互換性を追加するには、コマンドライン引数を使用してコンソールからそれらを実行することができます

アプリケーションの開始と手動テスト

Unity Editorでアプリケーションを起動することは、正確に制御できるものではありません。ゲームのその側面などを検証するには、いくつかの基本的な手動テストを使用できます。

これにアプローチする方法は次のとおりです。

  1. 気になる(または気にするかもしれない)特定のマイルストーンに到達したときに、ゲームが何らかの信号を発するようにしてください。ファイルへのロギングは、最も一般的なアプローチです(自動組み込みロギングまたはサードパーティバージョンを使用)。
  2. ログを定期的に読み取り、分析します。これは手動で行うことも、2番目にお気に入りのスクリプト言語を使用してスクリプト化することもできます。

代替案

当然のことながら、Unityに関連するすべてのものとして、いくつかの選択肢があります。あなたが検討したいと思うかもしれないいくつかはここにある:

プロジェクトの規模と範囲に応じて、上記で説明したオプションの1つまたは複数を使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.