Kontext
In Unity3d setze ich einige ältere Codes für ein Spiel fort, und ich möchte einige Funktionstests für die Regression schreiben, um sicherzustellen, dass ich beim Implementieren neuer Dinge oder beim Refactoring keine Fehler mache.
Ich weiß bereits, dass es die Suite "Unit Test Tools" für Unity3d als Asset gibt. Ich habe es als Unit-Test-Suite verwendet, also teste ich meine Modelle (Klassen).
Beispiel für einen Test, über den ich nachdenke
Für "Funktionstest" meine ich Folgendes:
- Führen Sie das Programm aus
- Wenn Sie sich in der Menüszene befinden, bestätigen Sie, dass eine Schaltfläche mit der Aufschrift "Start" vorhanden ist.
- Klick es
- Dann wird behauptet, eine neue Szene sei geladen
- Angenommen, Pixel XXX ist rot
- Klicken Sie in die Koordinate XXX
- Stellen Sie jetzt fest, dass sich das Pixel in Grün geändert hat
- etc.
Fragen
F1: Wie schreibe und führe ich Funktionstests für mein Spiel durch? Wird dies normalerweise auch in den UnityTestTools (UTT) durchgeführt?
F2: Wenn UTT mehr für Unit-Tests ist, gibt es dann eine separate Suite für Funktionstests? Welcher?
Anmerkungen:
Ich ziele auf Android und laufe Unity5.3.1f1
unity
automated-testing
Xavi Montero
quelle
quelle
Antworten:
Nach meinem Verständnis möchten Sie Automatisierungstests in Unity verstehen.
Unity-Test-Tools
Dies sollte Ihre goto-Methode sein, aber bevor ich mich mit dem Wie befasse, werde ich das Warum untersuchen.
Die bevorzugte Methode für jede Form von Automatisierungstests besteht darin, diese in einer Umgebung durchzuführen, die der Produktion so nah wie möglich ist. Die Verwendung von Unity Test Tools (im Unity Editor) ist eine schlechte Idee für alle, die herkömmliche Integrationstests geschrieben haben.
Warum? Weil Sie bei jedem Integrationstest die geringste Menge an zusätzlichen Dingen benötigen, die Ihre Anwendung blockieren und die nicht vorhanden sind, wenn der Benutzer sie öffnet. Der Unity Editor hat möglicherweise eine andere Leistung oder ein anderes Verhalten als die iOS-Version (zum Beispiel).
Warum sollten Sie dann Unity Test Tools (UTT) verwenden?
Der Hauptgrund ist Bequemlichkeit. Sowohl der Unity Editor als auch UTT sind einfach und visuell zu bedienen. Es fällt Ihnen leicht, Tests zu schreiben, sie mit Ihrem spezifischen Spiel zu verknüpfen und zu verstehen, wenn sie fehlschlagen.
Was ist mit dem Verhaltensunterschied zwischen dem Unity Editor und der Produktion?
Schließlich ist der Unity Editor eine Hülle um Ihre Anwendung. Das heißt, es wird einige Unterschiede zwischen dem Editor und der Produktion geben. Abgesehen von den Integrationstests ist der Unity Editor jedoch schon sehr lange ein Wrapper. Es ist eine ausgereifte Plattform mit Tausenden von darauf gebauten Spielen. Die Ergebnisse von Integrationstests im Editor sind sehr genau.
In dem von Ihnen bereitgestellten Beispielszenario kann mit Unity Test Tools problemlos alles außer dem ersten Element bestätigt werden. Sie können wie bei jedem anderen Integrationstest Szenen öffnen und Verhalten überprüfen.
Ich schlage vor, die meisten (wenn nicht alle) Ihrer Tests mit UTT zu schreiben. Um die Kompatibilität mit Tools für die kontinuierliche Integration (z. B. Jenkins) zu erhöhen, möchten Sie diese möglicherweise über die Konsole mit Befehlszeilenargumenten ausführen .
Starten der Anwendung und manuelles Testen
Das Starten der Anwendung können Sie im Unity-Editor nicht präzise steuern. Um diesen Aspekt Ihres Spiels und mehr zu überprüfen, können Sie einige grundlegende manuelle Tests verwenden.
So nähern Sie sich dem:
Alternativen
Es überrascht nicht, dass wir, da sich alles auf Unity bezieht, mehr als nur ein paar Alternativen haben. Hier sind einige, die Sie in Betracht ziehen könnten:
Je nach Umfang und Umfang Ihres Projekts möchten Sie möglicherweise eine oder mehrere der oben beschriebenen Optionen anwenden.
quelle