• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Skripte automatisiert testen

Cora Forret

Nutzer
In der Softwareentwicklung ist es ja heute üblich Testfälle automatisch abzuarbeiten, um einerseits die testzeit zu verkürzen, und andererseits die Codeabdeckung beim Test im Idealfall auf 100% zu treiben. So würde ich auch gerne meine Skripte automatisch testen. Nur wie kann ich das Drücken einer Taste wie CONTROL_FWD oder ähnlich simulieren?
 
Dabei ist es natürlich auch noch interessant, was man beim Erstellen von Skripten beachten muß die in einem Projekt parallel abgearbeitet werden sollen.

Ich stelle mir das so vor, daß man ein Skript mit der eigentlichen Funktion erstellt, und ein Testskript welches das eigentliche Skript testet, und im endgültigen Prüjekt dann nicht mehr vorhanden ist. Während des Testlaufes sind aber beide Skripte in dem jeweiligen Objekt vorhanden.
 
Zuletzt bearbeitet:
Wenn es genügt die innere Logik zu testen, könntest Du entsprechende Stubs implementieren: also spezielle Schnittstellen, wo gezielt die Testdaten eingespeist und rausgeschrieben werden. Diese Stubs könnten dann von "außen" (zweites Script) zeitlich passend mit Werten getriggert werden. Um nach Abschluss des Tests nicht mehr in den Code eingreifen zu müssen, ist es sinnvoll diese Schnittstellen über ein Flag abschaltbar zu gestalten. Dann bleiben sie einfach im Produkt drin, werden aber nicht mehr ausgeführt.

Wirkliche Inworld-Interaktionen wie Mausklicks oder Bewegungen zu automatisieren dürfte hartes Brot werden. Es gibt zwar Freeware, die Bedieneingaben auf dem Rechner (und damit auch in SL) automatisieren kann. Aber sowas ist schon in 2D nicht trivial (unerwartete Betriebszustände, veränderte Bildgrößen, Fokus wird eventuell weggenommen usw.). Zusätzliche Unwägbarkeiten in SL sind zurückgelegte Entfernungen, Blickwinkel bei Drehungen, Abstände, die sehr stark von lagbedingten Verzögerungen abhängig sind.

EDIT: Für das parallele Abarbeiten mehrerer Scripte brauchst Du nichts besonderes beachten. Jedes Script läuft unabhängig (scheinbar) gleichzeitig mit den anderen Scripten zusammen. Wenn es zeitliche Abhängigkeiten zwischen Scripten gibt, musst Du Dir irgendeinen Mechanismus überlegen, z.B. Mutex, Semaphor, Monitor, Lock.
 
Zuletzt bearbeitet:
Hallo Mareta,

vielen Dank für Deine Antwort.

Für die Nicht-Informatikerinnen. ;-) Stubs sind Funktionen, mit denen man Funktionsaufrufe und Zugriffe auf die Hardware ersetzt. Die Stub-Funktion kann dann auch Rückgabewerte simulieren. Auf diese Weise kann man den Prüfling, isoliert und unbeeinflusst von allen anderen Funktionen, testen.

Das gilt dann sicher in SL auch für Tastatureingaben. Schade diese hätte ich gern automatisch mitgetestet. Dabei hatte ich an sowas ähnlichem wie AutoIt gedacht, dort kann man Mausklicks simulieren, und so die GUI von Windows-Programmen automatisch testen.
 
Zuletzt bearbeitet:
Nochmal zur Ergänzung: Tastatureingaben und Mausklicks an sich sind im SL-Viewer nicht einfacher oder schwieriger zu automatisieren, wie in anderen Applikationen auch. Die Menüleiste samt Untermenüs und Dialogen, Tastaturkürzel, auch Head-Up-Displays an fester Bildschirmposition sehe ich nicht wirklich problematisch. Wenn es aber darum geht, ínworld den Avatar oder ein Objekt mit der Maus anzuklicken, um an das Kontextmenü ranzukommen und Aktionen auszulösen, kannst Du schlecht den sichtbaren Bildschirmausschnitt bezüglich Kameraposition und Winkel reproduzierbar und exakt einstellen. Je nach Lag kommst Du mit z.B. drei kurzen Mausklicks bei mehrfacher Wiederholung in unterschiedlichen Winkeln raus. Was ich meine, kannst Du zum Beispiel testen, wenn Du die "Camera Controls" öffnest und dreimal nach links, danach dreimal nach rechts klickst.
 

Users who are viewing this thread

Zurück
Oben Unten