Automatisiertes Testen von Spielen ohne SDK: Unity, Unreal, Godot
Automatisiertes Testen von Spielen ohne SDK im Build: Menüs, HUD und Level eines Unity-, Unreal- oder Godot-Spiels mit echter Tastatur, Maus und Gamepad testen.
11 Min. LesezeitVom Team von GUI Test Studio
Was ist automatisiertes Testen von Spielen?
Automatisiertes Testen von Spielen bedeutet, eine Software Teile Ihres Spiels spielen und prüfen zu lassen, was passiert, damit jeder neue Build überprüft wird, ohne dass ein Mensch dieselben Schritte von Hand wiederholt.Es deckt den wiederholbaren Teil der Spiele-QA ab: den Build starten, die Menüs durchgehen, ein Level laden, pausieren, das Level beenden, den Punktestand prüfen.
Testautomatisierung für Spiele ist schwieriger als das Testen einer Website oder einer Geschäftsanwendung.Ein Spiel zeichnet alles selbst.Die Eingaben des Spielers verändern, was als Nächstes passiert.Zwei Durchläufe sind selten Bild für Bild gleich.
Dieser Leitfaden erklärt, warum die üblichen Testwerkzeuge in einem Spiel nichts sehen, was Spieleteams stattdessen verwenden und wie ein visueller Black-Box-Ansatz ein Spiel mit Unity, Unreal, Godot oder einer eigenen Engine testet, ohne seinem Build etwas hinzuzufügen.
Warum Testwerkzeuge in einem Spiel nichts sehen
Testwerkzeuge für Desktop und Web finden Elemente über die Beschreibung, die eine Anwendung von sich selbst gibt.Eine Webseite hat ihr Dokument, ihre Elemente und deren IDs.Ein Windows-Programm beschreibt dem System seine Schaltflächen, Felder und Listen: Das ist der Barrierefreiheitsbaum, den Bildschirmleser nutzen.Selenium und Playwright finden Elemente in der Struktur der Webseite.WinAppDriver und Appium finden sie in dem, was eine App dem System über ihre Steuerelemente mitteilt, etwa eine Automatisierungs-ID.
Ein Spiel liefert nichts davon.Die Engine öffnet ein einziges Fenster und zeichnet jedes Bild auf eine einzige Fläche, meist mit der Grafikkarte.Hauptmenü, Inventar, HUD und Dialogfelder sind Pixel, keine Steuerelemente.Fragen Sie Windows, was im Fenster ist, und die Antwort ist ein einziger Bereich ohne Namen.
Wenn Sie ein End-to-End-Werkzeug für Ihre anderen Anwendungen auswählen, lesen Sie die Vergleichsstudie.
Wie Spieleteams heute Tests automatisieren
Die meisten Studios setzen zuerst auf Menschen.Tester und Playtester gehen jeden Build durch, folgen Testplänen und schreiben Fehlerberichte.Playtesting bleibt unverzichtbar: Nur ein Mensch kann sagen, ob sich ein Sprung richtig anfühlt oder ein Bosskampf fair ist.Doch ein guter Teil des Tages eines Testers geht dafür drauf, erneut zu prüfen, dass das, was gestern funktionierte, heute noch funktioniert.
Um diesen Teil zu automatisieren, instrumentiert die QA-Automatisierung von Videospielen meist das Spiel: Das Team fügt dem Build Code oder ein Plugin hinzu, damit ein Test die Objekte der Engine von innen erreicht.
Testautomatisierung mit Unity
Mit dem Unity Test Framework schreibt ein Team Tests in C#, mit NUnit, im Edit Mode und im Play Mode.Die Tests laufen im Editor oder auf Zielplattformen wie Standalone, Android und iOS.
Automatisierte Tests in Unreal Engine
Unreal Engine hat ein in C++ geschriebenes Framework für automatisierte Tests, mit Unit-, Feature-, Smoke-, Content-Stress- und Screenshot-Vergleichstests.Gauntlet, das Automatisierungs-Framework von Unreal, führt Sitzungen eines Projekts aus, die Tests durchführen und die Ergebnisse validieren.
Tests in Godot
Godot-Teams fügen oft ein Test-Add-on hinzu.GUT ist ein Unit-Test-Framework für die Godot Engine.GdUnit4 testet GDScript, C# und Szenen im Godot-Editor, und sein Scene Runner kann Eingaben simulieren.
Werkzeuge, die sich ins Spiel einklinken
AltTester bietet Testautomatisierung für Unity und Unreal Engine.Sein SDK ist ein Plugin, das das Spiel instrumentiert, um die Objekte seiner Hierarchie zugänglich zu machen.Tests werden in C#, Python, Java oder Robot Framework geschrieben.
GameDriver arbeitet mit Spielen, die mit Unity, Unreal Engine und Godot erstellt wurden.Sie legen seinen Agenten in das Projekt, und Tests finden Objekte mit HierarchyPath, einer Abfragesprache ähnlich wie XPath.
Airtest ist ein Open-Source-Framework für Spiele und Apps, das Elemente per Bilderkennung findet, aus Python-Skripten heraus.Sein Begleiter Poco liest die Objekthierarchie des Spiels, sobald das Poco SDK im Spiel installiert ist.
Diese Werkzeuge sind stark, wenn ein Test den inneren Zustand des Spiels braucht: eine Eigenschaft, eine Position, einen Wert, den niemand sieht.Sie bringen aber auch Kosten mit, die man leicht unterschätzt.
| Was es erfordert | Was es für das Team bedeutet |
|---|---|
| Code oder ein Plugin im Build | Einen Test-Build, den man erstellen und mit dem ausgelieferten auf Stand halten muss. |
| Tests als Code | Ein Entwickler schreibt und pflegt jeden Test. |
| Objektnamen und -pfade | Ein umbenanntes Objekt oder eine umgebaute Szene macht die Tests kaputt, die es nennen. |
| Eine Integration für Ihre Engine | Eine eigene Engine oder eine Engine, die das Werkzeug nicht abdeckt, bietet nichts zum Einklinken. |
| Eine Sicht von innen | Eine Prüfung des Zustands eines Objekts sagt, was der Code enthält, und das ist nicht immer, was der Spieler sieht. |
Was ein visueller Black-Box-Ansatz hinzufügt
Ein Black-Box-Test sieht das Spiel nur von außen, so wie ein Spieler: das Bild auf dem Bildschirm und die Steuerung in der Hand.Er braucht keinen Zugriff auf den Code und funktioniert deshalb mit jeder Engine gleich.
Aufzeichnen
Den Ablauf einmal spielen
Prüfen
Das HUD, die Menüs, die Endbildschirme
Wiedergeben
Tastatur, Maus und Controller
Bericht
Was erwartet war, was gezeichnet wurde
| Was Sie bekommen | Warum es bei Spielen zählt |
|---|---|
| Nichts im Build | Sie testen den ausgelieferten Build, den Ihre Spieler herunterladen. |
| Jede Engine | Unity, Unreal Engine, Godot, GameMaker, Construct, Defold, Phaser, MonoGame, RPG Maker oder Ihre eigene Engine. |
| Echte Eingaben | Tastatur, Maus und Gamepad, so bedient, wie ein Spieler sie bedient. |
| Prüfungen dessen, was gezeichnet wird | Ein falsches Symbol, ein fehlendes Herz oder eine abgeschnittene Beschriftung lässt den Test fehlschlagen, auch wenn der Zustand des Spiels stimmt. |
| Tests ohne Code | Ein QA-Tester zeichnet den Test beim Spielen auf, ohne ein Skript zu schreiben. |
| Jeder Build | Derselbe Test läuft bei jedem neuen Build, von Hand oder in Ihrer CI-Pipeline. |
Die beiden Ansätze sind keine Rivalen.Ein instrumentierter Test ist das richtige Werkzeug, um einen Spielstand vorzubereiten oder einen Wert zu lesen, den niemand sieht.Ein Black-Box-Test ist das richtige Werkzeug, um zu prüfen, dass stimmt, was beim Spieler ankommt.
Was man in einem Spiel automatisiert und was man Menschen überlässt
Seien Sie ehrlich, was eine Wiedergabe gut kann.Sie drückt dieselben Tasten zu denselben Zeitpunkten.Ein Spiel, dessen Ausgang von Physik, Zufall oder exaktem Timing abhängt, antwortet nicht immer gleich, deshalb kann ein aufgezeichneter Test eines schweren Plattform-Abschnitts ohne echten Grund fehlschlagen.
| Teil des Spiels | Eignet er sich zur Automatisierung? |
|---|---|
| Start, Titelbildschirm und Hauptmenü | Ja.Sie sind bei jedem Durchlauf gleich. |
| Optionen: Grafik, Audio, Steuerung, Sprache | Ja.Jede Änderung zeigt sich als Wert oder Beschriftung auf dem Bildschirm. |
| Pause-, Inventar-, Shop-, Dialog- und Tutorial-Bildschirme | Ja. |
| Das HUD: Punktestand, Leben, Münzen, Timer | Ja, zu Zeitpunkten, die das Spiel wiederholbar macht. |
| Speichern und Laden, Levelauswahl, Level geschafft | Ja. |
| Ein Level mit festem Seed oder einem geskripteten Ablauf | Ja, wenn das Spiel jedes Mal gleich abläuft. |
| Reaktionsspiel, Physikrätsel, Gegner, die auf den Spieler reagieren | Selten.Die Ergebnisse schwanken von Durchlauf zu Durchlauf. |
| Spaß, Spielgefühl, Schwierigkeit und Balance | Nein.Dafür braucht es das Urteil eines Menschen. |
Wie testet man das HUD, die Menüs und die Endbildschirme eines Spiels?
Eine Prüfung betrachtet einen Teil des Bildschirms und sagt, ob er stimmt.So verteilen sich die Prüfungen auf ein 2D-Beispielspiel, das für diesen Artikel gezeichnet wurde.
Zählen Sie die Leben mit einer Bildanzahl-Assertion: genau drei Herzen.Lesen Sie eine feste Beschriftung oder einen Wert, den das Level immer erreicht, mit einer Text-Assertion.Prüfen Sie einen Wert, der sich ändert, mit einer dynamischen Text-Assertion: Der Timer muss wie eine Uhrzeit aussehen, egal welche Zeit er zeigt.
In einem Menü liest eine Text-Assertion den Titel.Eine Bild-Assertion vergleicht den ausgewählten Eintrag mit seinem Bild, deshalb schlägt eine Hervorhebung in der falschen Farbe fehl.Die Tastenhinweise unten sind ebenfalls ein Bild, und das falsche Symbol für einen Controller ist ein echter Fehler.
Am Ende eines Levels wartet eine Text-Assertion auf die Wörter „LEVEL COMPLETE“.Eine Bildanzahl-Assertion zählt die Sterne.Eine dynamische Text-Assertion prüft, dass der Endpunktestand eine Zahl ist, und eine Bild-Assertion findet die Schaltfläche Next Level.
Jede Prüfung wartet bis zu ihrem Zeitlimit auf das, was sie sucht, deshalb ist ein Menü, das eingeblendet wird, kein Fehler.Eine Bild-Abwesenheits-Assertion wartet, bis ein Ladebildschirm verschwunden ist, deshalb geht der Test weiter, sobald das Level bereit ist.
Jede Art von Prüfung wird in Bildprüfungen und Textprüfungen erklärt.Das Spiel wird über das Bild gefunden, weil es keine Barrierefreiheitsinformationen hat: Wie GUI Test Studio die Elemente findet erklärt, warum das einen Test robust macht.
Tastatur, Maus und Gamepad
Ein Spieletest ist nur so gut wie seine Eingaben.GUI Test Studio zeichnet Tastatur, Maus und Controller im Xbox-Stil auf und gibt sie wieder, also die Controller, die Windows als XInput-Controller erkennt, bis zu vier gleichzeitig.
Jeder Tastendruck und jede Stick-Bewegung wird mit ihrem Timing aufgezeichnet.Auf der Zeitleiste werden ein Druck und sein Loslassen zu einem Block Pad-Tastendruck, und eine Folge von Stick-Bewegungen zu einem Block Stick-Bewegung.Während Sie bearbeiten, zeichnet die Vorschau den Controller und was in jedem Moment gedrückt ist.
Wenn der Test läuft, steuert GUI Test Runner-Recorder einen virtuellen Controller, deshalb empfängt das Spiel die Tastendrücke von einem Controller.Dafür braucht es einen Treiber, der einmal auf dem Computer installiert wird, der die Tests ausführt.Die App sagt das vor dem Durchlauf und öffnet die Download-Seite des Treibers.
Jeder aufgezeichnete Tastendruck bekommt außerdem eine Prüfung des ganzen Bildschirms, die direkt davor aufgenommen wird.In einer Szene, die sich stark bewegt, stellen Sie diese Prüfungen auf Großzügig, oder ersetzen Sie eine durch eine Prüfung des Teils, auf den es ankommt.
| Ereignis | In einem Spiel |
|---|---|
| Taste halten | Die Pfeiltaste nach rechts zwei Sekunden halten, um zur nächsten Plattform zu laufen. |
| Mehrfachdruck | Die Sprungtaste zweimal antippen für einen Doppelsprung. |
| Tastenkombination | Die Karte öffnen, schnell speichern, einen Screenshot machen. |
| Texteingabe | Einen Spielernamen oder einen Cheat-Code in einem Debug-Build eingeben. |
| Mauspfad | Zielen, einen Weg zeichnen, eine Einheit über die Karte ziehen. |
| Pad-Tastendruck und Stick-Bewegung | In einem Menü bestätigen, springen, gehen oder die Kamera drehen. |
Für ein Spiel, das mit der Maus zielt oder sich umsieht, schalten Sie in den Voreinstellungen von GUI Test Runner-Recorder unter Aufzeichnungsvorgaben, Erweitert, Kontinuierliche Mausbewegung aufzeichnen ein.Dann wird jede Bewegung aufgezeichnet und wiedergegeben, mit oder ohne gedrückte Taste.Alle Ereignisse sind unter Ereignisse beschrieben.
Testautomatisierung für Spiele mit GUI Test Studio, Schritt für Schritt
GUI Test Studio automatisiert End-to-End-Tests unter Windows: Desktop-Anwendungen, Webanwendungen, Smartphones und Spiele.So entsteht ein erster Spieletest.
- 1
Installieren und Profil wählen
Installieren Sie GUI Test Studio auf dem Windows-Computer, auf dem Ihr Spiel läuft.Beim ersten Start fragt es, woran Sie arbeiten: Wählen Sie Ich entwickle Spiele.Dann wird der Controller von Anfang an aufgezeichnet und wiedergegeben, und die empfohlenen Einstellungen passen zu Bildschirmen, die sich bewegen.
- 2
Ihr Spiel aufzeichnen
Klicken Sie in GUI Test Runner-Recorder auf Aufzeichnen und wählen Sie Eine App.Klicken Sie auf Durchsuchen... und wählen Sie das Programm Ihres Spiels aus, dann setzen Sie das Häkchen, das die App zu Beginn des Tests startet und am Ende schließt.Dann beginnt jeder Durchlauf mit einem frisch gestarteten Spiel.
Um nur einen Teil des Bildschirms zu beobachten, etwa die Spielansicht in einem Editor, wählen Sie stattdessen einen Bildschirmbereich.
- 3
Den zu prüfenden Ablauf spielen
Gehen Sie durch die Menüs, starten Sie das Level, tun Sie, worum es im Test geht, und drücken Sie dann die Stopp-Taste.Die Aufzeichnung fügt vor jedem Klick eine Prüfung hinzu, und Prüfungen für das, was auf dem Bildschirm erscheint.
- 4
Die wichtigen Prüfungen hinzufügen
Öffnen Sie den Test in GUI Test Studio.Ziehen Sie eine Bildanzahl-Assertion, eine Text-Assertion oder eine dynamische Text-Assertion aus der Palette Assertionen an den gewünschten Zeitpunkt und zeichnen Sie ein, wo sie hinschaut.
- 5
Ausführen und den Bericht lesen
Klicken Sie auf Test ausführen.Der Konfidenzbericht zeigt jede Prüfung mit dem erwarteten und dem gefundenen Bild und sagt in einfachen Worten, was fehlgeschlagen ist.
Spiele sind einer der Fälle auf unserer Seite Anwendungsfälle, neben Web-, Desktop- und Mobil-Apps.
Spieletests wiederholbar machen
Ein Spieletest besteht jedes Mal, wenn das Spiel gleich startet und die Prüfungen nach den richtigen Dingen suchen.Diese Gewohnheiten helfen.
| Gewohnheit | Warum |
|---|---|
| Den Build in einem bekannten Zustand starten | Ein Schritt App starten kann dem Spiel Argumente übergeben, etwa eine Debug-Option, die ein Level lädt oder den Zufalls-Seed festlegt, sofern Ihr Spiel eine hat. |
| Dieselbe Auflösung und derselbe Fenstermodus bei jedem Durchlauf | Prüfungen vergleichen Bilder in der Größe, in der sie aufgezeichnet wurden.Ein Schritt App starten kann das Spiel maximiert oder im Vollbild öffnen. |
| Auf das warten, worauf das Spiel wartet | Eine Bild-Abwesenheits-Assertion auf dem Ladebildschirm ist besser als ein festes Warten. |
| Den ganzen Bildschirm nach dem absuchen, was sich bewegt | „Gesamten Bildschirm durchsuchen“ findet ein Element, wo immer es gezeichnet wird. |
| Die Strenge Großzügig für unruhige Szenen | Sie toleriert die kleinen Darstellungsunterschiede zwischen zwei Durchläufen und schlägt bei einer echten Änderung wie einem fehlenden Element trotzdem fehl. |
| Ein Baseline-Profil pro Grafikeinstellung | Die Qualitätsstufen Niedrig und Ultra zeichnen dasselbe Menü unterschiedlich, und jedes Profil behält seine eigenen erwarteten Bilder. |
Die Einzelheiten stehen unter Web, Smartphones, virtuelle Maschinen und Spiele.
Regressionstests für Spiele bei jedem Build
Regressionstests für Spiele bedeuten, bei jedem neuen Build dieselben Prüfungen auszuführen, damit ein kaputtes Menü oder ein fehlendes HUD-Element an dem Tag gefunden wird, an dem es auftaucht. gtr-cli, der Kommandozeilen-Runner, führt einen Test genau wie die Schaltfläche Test ausführen aus.Er gibt einen Exit-Code zurück, den Ihr CI-Werkzeug versteht, schreibt JUnit-Ergebnisse und sammelt die Bilder jedes Fehlschlags in einem Ordner.
gtr-cli run tests --countdown 0 --junit results\junit.xml --artifacts results\artifactsDer Build-Agent braucht eine offene, entsperrte Windows-Desktopsitzung, weil das Spiel auf einen echten Bildschirm zeichnet und der Test es dort spielt.
Ein vollständiges Pipeline-Beispiel mit TeamCity: End-to-End-Tests bei jedem Build ausführen.
Fragen
Kann man das Testen eines Spiels automatisieren, ohne dem Spiel ein SDK hinzuzufügen?
Ja.Ein Black-Box-Test sieht das Spiel so wie ein Spieler: das Bild auf dem Bildschirm und die Steuerung.GUI Test Studio spielt den ausgelieferten Build mit echter Tastatur, Maus und echtem Controller und prüft, was gezeichnet wird, deshalb kommt nichts ins Spiel.
Welche Spiele-Engines kann ein visuelles Testwerkzeug testen?
Jede Engine, weil der Test von dem ausgeht, was der Bildschirm zeigt.Unity, Unreal Engine, Godot, GameMaker, Construct, Defold, Phaser, MonoGame, RPG Maker und eigene Engines werden alle gleich getestet, als Windows-Build, als Browser-Build oder als Android-Build auf einem Smartphone.
Kann ein automatisierter Test Gamepad-Tasten drücken?
Ja.GUI Test Studio zeichnet Controller im Xbox-Stil auf, bis zu vier gleichzeitig, und gibt jeden Tastendruck und jede Stick-Bewegung über einen virtuellen Controller wieder.Für die Wiedergabe braucht es einen Treiber, der einmal auf dem Computer installiert wird, der die Tests ausführt.
Welche Teile eines Spiels sollte man automatisieren?
Automatisieren Sie, was bei jedem Durchlauf gleich ist: Menüs, Optionen, das HUD zu bekannten Zeitpunkten, Pause- und Inventarbildschirme, Speichern und Laden, Level-geschafft-Bildschirme und Level mit festem Seed.Überlassen Sie Reaktionsspiel, Physik, Zufall und Spielgefühl den Playtestern.
Wie testet man das HUD eines Spiels automatisch?
Geben Sie jedem Teil des HUD die passende Prüfung.Eine Bildanzahl-Assertion zählt Herzen oder Sterne, eine Text-Assertion liest eine feste Beschriftung, und eine dynamische Text-Assertion prüft, dass ein Timer oder ein Punktestand die richtige Form hat, egal welchen Wert er zeigt.
Wann ist ein instrumentierendes Werkzeug wie AltTester oder GameDriver die bessere Wahl?
Wenn ein Test den inneren Zustand des Spiels lesen oder setzen muss: eine Eigenschaft eines Objekts, eine Position, einen Wert, den niemand auf dem Bildschirm sieht.Ein visueller Test prüft, was beim Spieler ankommt, deshalb nutzen viele Teams beides.
Unity, Unreal Engine, Godot, GameMaker, Construct, Defold, Phaser, MonoGame, RPG Maker, AltTester, GameDriver, Airtest, Selenium, Playwright, Appium, WinAppDriver, Xbox, Windows und TeamCity sind Marken ihrer jeweiligen Inhaber.
Bereit, Ihren ersten Test aufzuzeichnen?
Jede Funktion, 15 Tage lang.
Lieber an der Art von App sehen, die Sie testen?Buchen Sie ein kostenloses 30-minütiges Gespräch mit unserem Team.