Installation

Die folgende Auflistung beschreibt die Funktionen der einzelnen Komponenten, die benötigt werden, um m23-Funktionen automatisiert mit autoTest durchzuführen. Bis auf den Virtualisierungsserver können die Komponenten in VMs installiert werden. Prinzipiell könnten z.B. Virtualisierungsserver, HTTP2SeleniumBridge und der autoTest-Steuersystem auf derselben (physikalischen) Maschine laufen.

autoTest-Steuersystem

Ein m23-Server, der autoTest ausführt und die anderen Systeme (Virtualisierungsserver, HTTP2SeleniumBridge und (indirekt) den zu testenden m23-Server) steuert.

Virtualisierungsserver

m23-Server: paßwortloser Zugriff vom autoTest-ausführenden Benutzer auf root per SSH oder sudo?

HTTP2SeleniumBridge

echo /usr/sbin/nodm > /etc/X11/default-display-manager

apt install -y HTTP2SeleniumBridge_*_all.deb

reboot

Zu testender m23-Server

Ein m23-Server, der verwendet wird, um einen m23-Client zu installieren. Wird von der HTTP2SeleniumBridge über die m23-Weboberfläche gesteuert.

Allgemeiner Aufbau

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<testcase>
    <constant>
    <TEST_TYPE>VM</TEST_TYPE>
        <VM_RAM>1024</VM_RAM>
        <VM_HDSIZE>8192</VM_HDSIZE>
    </constant>
    <cli>
        <VM_NAME description="Name der VM"></VM_NAME>
        <OS_PACKAGESOURCE description="Paketquellenliste"></OS_PACKAGESOURCE>
        <OS_DESKTOP description="Desktop"></OS_DESKTOP>
    </cli>
    <sequence>
        <test timeout="180" description="Client anlegen">
            <trigger type="sel_hostReady"></trigger>
            <action type="sel_open">${TEST_M23_BASE_URL}/index.php?page=addclient%26clearSession=1</action>
            <action type="sel_typeInto" ID="ED_login">test</action>
            <action type="sel_selectFrom" ID="SEL_boottype">pxe</action>
            <action type="sel_setCheck" name="CB_getSystemtimeByNTP">0</action>
            <action type="sel_selectRadio" name="SEL_ldaptype">read</action>
            <action type="sel_clickButton" name="BUT_submit"></action>
            <good type="sel_sourcecontains">$I18N_client_added</good>
            <warn type="sel_sourcecontains">unwichtig</warn>
            <bad type="sel_sourcecontains">$I18N_addNewLoginToUCSLDAPError</bad>
        </test>
        <test timeout="600" description="VM erstellen und starten">
            <trigger type="true"></trigger>
            <action type="fkt">AUTOTEST_VM_create</action>
            <action type="fkt">AUTOTEST_VM_start</action>
            <good type="ocr">|{Warte|minutes}</good>
        </test>
    </sequence>
</testcase>

Begriffserklärung

Die einzelnen Zeilen sind folgendermaßen aufgebaut, wobei die Begriffe Tag, Attribut und Parameter verwendet werden:

`<Tag Attribut1="..." Attribut2="...">Parameter</Tag>`

Konstanten

Die Konstanten und weitere Einstellungen stehen in der globalen Datei settings.m23test sowie der aktuellen m23test-Datei. settings.m23test wird zuerst im Heimatverzeichnis und dann im aktuellen Verzeichnis gesucht.

Beispiel:

<constant>
    <TEST_TYPE>VM</TEST_TYPE>
    <VM_RAM>1024</VM_RAM>
    <VM_HDSIZE>8192</VM_HDSIZE>
</constant>

Testblöcke

Ein Testblock umfaßt immer alle Teile eines Tests. timeout (in Sekunden) gibt an, wie lange auf den Trigger und das Abschließen durch ein good-Tag gewartet werden soll. Nach Überschreiten um mehr als zwei Minuten wird eine Warnung ausgegeben, nach mehr als 5 Minuten wird das Skript mit einem Fehler abgebrochen.
description ist die Beschreibung, die in den Logdateien vermerkt wird.

Die einzelnen Teile werden folgendermaßen abgearbeitet:

  1. Mit dem trigger-Tag wird der angegebene Test solange wiederholt, bis dieser erfolgreich war oder die Zeit abgelaufen ist.
  2. Die einzelenen action-Tags werden in der angegbenen Reihenfolge abgearbeitet.
  3. Die good/warn/bad-Tags werden immer wieder durchlaufen, bis eine Bedingung zutrifft. bad führt zum Abbruch, die anderen (nur) zu einem Eintrag in die Logdatei und Ausführen des nächsten Testblocks.

    AUTOTEST_VM_create AUTOTEST_VM_start |{Warte|minutes}

Kommandozeile

Die im cli-Block definierten Tags müssen in derselben Reihenfolge auf der Kommandozeile angegeben werden. Der jeweilige Tag-Name wird als Konstante gespeichert und kann in den Ersetzungen verwendet werden. VM_NAME wird intern für die Aufrufe von einige Funktionen z.B. AUTOTEST_VM_keyboardWrite oder AUTOTEST_sshTunnelOverServer verwendet und muß in den meisten Fällen angegebn werden.

Das Attribut description ist die Beschreibung des jeweiligen Tags/Kommandozeilenparameters, die ausgegeben wird, wenn nicht die korrekte Anzahl an Parametern übergeben wird.

Beispiel:

<cli>
    <VM_NAME description="Name der VM"></VM_NAME>
    <OS_PACKAGESOURCE description="Paketquellenliste"></OS_PACKAGESOURCE>
    <OS_DESKTOP description="Desktop"></OS_DESKTOP>
</cli>

Ersetzungen

Innerhalb des Parameters können Teile ersetzt oder für Suchen verwendet werden:

Selenium

Trigger/good/warn/bad

sel_hostReady (Trigger)

Wird ausgelöst, wenn HTTP2SeleniumBridge unter der TEST_SELENIUM_URL erreichbar ist

sel_sourcecontains (Trigger/good/warn/bad)

Wird ausgelöst bzw. sendet eine Nachricht, wenn der Parameter im aktuellen HTML-Quelltext des Selenium-Browsers gefunden wird.

Action

Selenium-Aktionen benötigen (überwiegend) das Attribut ID oder name für die Identifikation des HTML-Element, auf das sie angewendet werden sollen.

sel_clickButton

Klickt auf einen Button.

sel_open

Öffnet eine URL im Browser.

sel_selectFrom

Wählt ein Element aus einer Drop-Down-Liste.

sel_selectRadio

Wählt ein Element eines Radiobuttons.

sel_setCheck

Setzt oder entfernt den Haken einer Checkbox.

sel_typeInto

Ersetzt den Text eines Eingabefeldes (

, ...).

SSH

Trigger/good/warn/bad

ssh_commandoutput

Führt über den Umweg über den m23-Server (Konstante: TEST_M23_IP) auf der VM (Konstante: VM_NAME) einen Befehl aus und überprüft, ob in der Ausgabe der gewünschte Text vorhanden ist.

VirtualBox

Action

key

Sendet eine Tastensequenz (Text) an die VM (Konstante: VM_NAME). Nichtdruckbare Tasten (z.B. Enter) werden in "°" eingeschlossen. z.B. °enter°.

Trigger/good/warn/bad

ocr

Erstellt einen Screenshot der laufenden VM (Konstante: VM_NAME) und versucht den Text mit verschiednene gocr-Parametern zu erkennen. Wird im erkannten Text der Parameter gefunden, so wird der Trigger ausgelöst bzw. eine Nachricht gesendet.

Funktionen

Action

fkt

Führt unter CAutoTest::executePHPFunction aufgelistete Funktionen aus.

Sonstiges

Trigger

true

Wird sofort ausgelöst.

Fehlendes

In HTTP2SeleniumBridge.py sind zusätzlich folgende Kommandos implementiert, die aber nicht in CAutoTest.php verwendet werden: