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 erfordertWas es für das Team bedeutet
Code oder ein Plugin im BuildEinen Test-Build, den man erstellen und mit dem ausgelieferten auf Stand halten muss.
Tests als CodeEin Entwickler schreibt und pflegt jeden Test.
Objektnamen und -pfadeEin umbenanntes Objekt oder eine umgebaute Szene macht die Tests kaputt, die es nennen.
Eine Integration für Ihre EngineEine eigene Engine oder eine Engine, die das Werkzeug nicht abdeckt, bietet nichts zum Einklinken.
Eine Sicht von innenEine 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 bekommenWarum es bei Spielen zählt
Nichts im BuildSie testen den ausgelieferten Build, den Ihre Spieler herunterladen.
Jede EngineUnity, Unreal Engine, Godot, GameMaker, Construct, Defold, Phaser, MonoGame, RPG Maker oder Ihre eigene Engine.
Echte EingabenTastatur, Maus und Gamepad, so bedient, wie ein Spieler sie bedient.
Prüfungen dessen, was gezeichnet wirdEin falsches Symbol, ein fehlendes Herz oder eine abgeschnittene Beschriftung lässt den Test fehlschlagen, auch wenn der Zustand des Spiels stimmt.
Tests ohne CodeEin QA-Tester zeichnet den Test beim Spielen auf, ohne ein Skript zu schreiben.
Jeder BuildDerselbe 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 SpielsEignet er sich zur Automatisierung?
Start, Titelbildschirm und HauptmenüJa.Sie sind bei jedem Durchlauf gleich.
Optionen: Grafik, Audio, Steuerung, SpracheJa.Jede Änderung zeigt sich als Wert oder Beschriftung auf dem Bildschirm.
Pause-, Inventar-, Shop-, Dialog- und Tutorial-BildschirmeJa.
Das HUD: Punktestand, Leben, Münzen, TimerJa, zu Zeitpunkten, die das Spiel wiederholbar macht.
Speichern und Laden, Levelauswahl, Level geschafftJa.
Ein Level mit festem Seed oder einem geskripteten AblaufJa, wenn das Spiel jedes Mal gleich abläuft.
Reaktionsspiel, Physikrätsel, Gegner, die auf den Spieler reagierenSelten.Die Ergebnisse schwanken von Durchlauf zu Durchlauf.
Spaß, Spielgefühl, Schwierigkeit und BalanceNein.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.

Ein 2D-Beispielspiel.Die Herzen werden gezählt, der Punktestand wird gelesen, und der Timer wird an seiner Form geprüft.

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.

Ein 2D-Beispielspiel: das Pausenmenü.Der Titel wird gelesen, und der ausgewählte Eintrag wird mit seinem Bild verglichen.

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.

Ein 2D-Beispielspiel: der Level-geschafft-Bildschirm, mit vier Prüfungen.

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.

EreignisIn einem Spiel
Taste haltenDie Pfeiltaste nach rechts zwei Sekunden halten, um zur nächsten Plattform zu laufen.
MehrfachdruckDie Sprungtaste zweimal antippen für einen Doppelsprung.
TastenkombinationDie Karte öffnen, schnell speichern, einen Screenshot machen.
TexteingabeEinen Spielernamen oder einen Cheat-Code in einem Debug-Build eingeben.
MauspfadZielen, einen Weg zeichnen, eine Einheit über die Karte ziehen.
Pad-Tastendruck und Stick-BewegungIn 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. 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. 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. 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. 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. 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.

GewohnheitWarum
Den Build in einem bekannten Zustand startenEin 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 DurchlaufPrü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 wartetEine 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 SzenenSie 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 GrafikeinstellungDie 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.

Auf dem Build-Agenten
gtr-cli run tests --countdown 0 --junit results\junit.xml --artifacts results\artifacts

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

Demo buchen