Ablaufsteuerung Übersicht

    Ab Version 2.0.5 von BiG EVAL können Sie den Ablauf eines Tests mit einem C# Skript beeinflussen. Dadurch stehen Ihnen viele weitere Test-Möglichkeiten offen. Einige der Möglichkeiten sind:

    • Probenentnahme mit dynamischen Filterbedingungen  
      Im Ablaufskript können Filterbedingungen in Form von Parametern kalkuliert (z.B. gestriger Tag), und diese Parameter an die Proben übergeben werden. So dass sie dort z.B. in einer WHERE-Klausel verwendet werden können.
    • Liste von Kennzahlen validieren  
      Ein einziger Test kann über eine Liste von Kennzahlenwerten (z.B. die Umsätze mehrerer aufeinanderfolgender Monate. Oder einer Reihe von Produkten) iterieren und den Test einmal für jedes Listen-Element ausführen.
    • Matrix von Kennzahlen validieren  
      Ein einziger Test kann über eine mehrdimensionale Matrix von Kennzahlen (z.B. Umsätze mehrerer Monate gruppiert nach Produkten und Verkaufsregion) iterieren und den Test einmal für jedes Listen-Element ausführen.

     

    Inhaltsübersicht

     

    Funktionsweise der Ablaufsteuerung

    Das Ablaufskript eines Tests wird immer dann ausgeführt, wenn die Testausführung beginnen soll. Also wenn Sie den Test manuell starten, oder wenn eine Zeitsteuerung einen Test startet. Der Aufruf  await ExecuteAsync(); führt dann den eigentlichen Test aus. Somit ist diese Codezeile auch das minimal notwendige Ausführungskript, damit ein Test lauffähig ist.

     

    Modifizieren des Ablaufskripts

    Jeder Test besitzt ein Ablaufskript, welches die Ausführung des Tests steuert. Sie finden das Ablaufskript eines Tests wie folgt:

    1. Öffnen resp. bearbeiten Sie Sie einen Test.
    2. Klicken Sie auf den Reiter "STEUERUNG (ERWEITERT)".
    3. Modifizieren Sie das Ablaufskript wie gewüncht. 
    4. Wenn Sie aus dem Textfeld klicken, wird das modifizierte Skript gespeichert.

     

    Definieren von Parametern und Werte zuweisen

    Im Ablaufskript können Sie Parameter definieren und ihnen Werte zuweisen. Diese Parameter können anschliessend in den Datenbank-Abfragen der Proben des selben Tests verwendet werden. So können Sie dynamische Werte berechnen (z.B. sliding window) und in Ihre Abfragen einbauen.

    Das Erstellen eines Parameters und das Setzen des Wertes geschieht in einer einzigen Code-Zeile im Ablaufskript:

    SetParameter("Month", 7);



    Verwenden eines Parameters in der Datenbankabfrage

    Um nun einen im Ablaufskript definierten Parameter in einer Datenbankabfrage einer Probe zu verwenden, erklären wir dies anhand eines Beispiels.

    SELECT COUNT(*) FROM Sales WHERE MonthNumber = {{Month:1}}

    Im Beispiel wird der Parameter "Month" in die Datenbankabfrage eingesetzt. Dies geschieht immer innerhalb von zwei geschweiften Klammern {{ und }}. Als Erstes folgt der Parameter-Name. Anschliessend erfolgt rechts eines Doppelpunktes ein Standardwert. Dieser wird immer dann angewendet, wenn entweder im Ablaufskript kein Wert definiert wurde, oder wenn die Datenbankabfrage nicht im Rahmen des Ablaufskripts ausgeführt wird. Dies ist der Fall, wenn Sie unterhalb der Datenbankabfrage auf "Ausführen" klicken, um die Abfrage zu testen.

    Die Standardwerte müssen in Abhängigkeit zu ihrem Datentypen speziell definiert werden.

    Numerisch

    Im Falle von numerischen Parametern müssen Sie keine spezielle Syntax beachten.

    SELECT COUNT(*) FROM Sales WHERE   MonthNumber = {{  Month:1}}

     

    Text

    Wenn Sie einen Textwert als Parameter verwenden möchten, müssen Sie diesen in Anführungs und Schlusszeichen angeben.

    SELECT COUNT(*) FROM Customers WHERE Name = {{CustomerName  :"Bolt" as STRING}}

     

    Datum

    Schreiben Sie das Datum im Format DD.MM.YYYY in Anführungs und Schlusszeichen. Fügen Sie dann die Anweisung "as DATE" hinzu.

    SELECT COUNT(*) FROM Sales WHERE OrderDate = {{OrderDate  :"17.3.2017" as DATE}}

     

    Datum und Uhrzeit

    Schreiben Sie das Datum und die Uhrzeit im Format DD.MM.YYYY HH:MI:SS.SSS in Anführungs und Schlusszeichen. Fügen Sie dann die Anweisung "as DATETIME" hinzu.

    SELECT COUNT(*) FROM Sales WHERE OrderTimestamp = {{OrderDateTime: "17.3.2017 13:00:12.123" as DATETIME}}

     

    Objektename

    Wenn Sie den Namen eines Objektes (Tabelle, View etc.) in einer Proben-Abfrage dynamisch mit Hilfe eines Parameters festlegen möchten, verwenden Sie einen Parmeter vom Typ OBJECTNAME wie folgt. 

    SELECT COUNT(*) FROM {{TableName: "dbo.Sales" as OBJECTNAME}}

     

    Ausgeben von Kommentaren in das Testprotokoll

    Wenn ein Test durch ein Ablaufskript ausgeführt wird, kann dies schnell zu einem unübersichtlichen Testprotokoll führen. Sie sehen dann bspw. dass ein Test mehrfach ausgeführt wurde, aber leider nicht, in welchem Kontext (z.B. für welchen Monat und für welches Produkt eine Kennzahl überprüft wurde).

    Um das Testprotokoll in so einem Fall übersichtlicher zu gestalten, können Sie mit folgender Zeile einen Kommentar in das Testprotokoll schreiben.

    SetComment($"{year}.{month} - {country}");

    Die Platzhalter year, month und country stellen dabei C#-Variablen dar, deren Wert in das Testprotokoll geschrieben wird.

     

    Abfragen von skalaren Werten aus einer Datenquelle

    Mit der folgenden Programmzeile können Sie im Ablaufskript einen einzelnen, skalaaren Wert aus einer Datenquelle entnehmen.

    var maxAmount = QueryValue("AW ERP", "SELECT MAX(Amount) FROM Sales");

    Der erste Parameter ist der Name Ihrer Datenquelle.

    Der Zweite Parameter ist die Datenbankabfrage, welche Sie an diese Datenquelle senden möchten. Normalerweise sollte diese Abfrage einen einzelnen Wert zurückgeben. Wenn Sie stattdessen mehrere Spalten oder gar eine ganze Tabelle mit mehreren Zeilen zurückgeben, so wird lediglich der Wert der ersten darin enthaltenen Zelle verwendet.

     

    Abfragen einer Liste von Werten aus einer Datenquelle

    Mit der folgenden Programmzeile entnehmen Sie im Ablaufskript eine ganze Liste von Werten aus einer Datenquelle.

    var listOfCustomerIDs = QueryList("AW ERP", "SELECT CustomerID FROM Customers");  

    Der erste Parameter ist der Name Ihrer Datenquelle.

    Der Zweite Parameter ist die Datenbankabfrage, welche Sie an diese Datenquelle senden möchten. Normalerweise sollte diese Abfrage eine Tabelle mit einer einzigen Spalte zurückgeben. Wenn Sie stattdessen mehrere Spalten zurückgeben, so werden lediglich die Werte der ersten Spalte verwendet.

    Verwenden Sie die Liste anschliessend wie folgt, um bspw. den Test für jede der zurückgegebenen Kunden-ID's einmal auszuführen.

    foreach(var customerID in listOfCustomerIDs)  
    {  
        // Set Parameter-value  
        SetParameter("CustomerID", customerID);  

        // Execute test  
        await ExecuteAsync();  
    }

     

     

    Abfragen einer Tabelle aus einer Datenquelle

    Mit der folgenden Programmzeile entnehmen Sie im Ablaufskript eine ganze Liste von Werten aus einer Datenquelle.

    var customerData = QueryTable("AW ERP", "SELECT * FROM Customers");  

    Der erste Parameter ist der Name Ihrer Datenquelle.

    Der Zweite Parameter ist die Datenbankabfrage, welche Sie an diese Datenquelle senden möchten. Diese Abfrage muss eine Tabelle mit einer oder mehr Spalten zurückgeben.

    Verwenden Sie die Tabelle anschliessend wie folgt, um bspw. den Test für jeden der zurückgegebenen Kunden-Datensätze einmal auszuführen.

    foreach(DataRow customer in customerData)  
    {  
        // Read customer properties 
        var customerID = customer["CustomerID"]; 
        var customerName = customer["Name"]; 

        // Set Parameter-value 
        SetParameter("CustomerID", customerID); 

        // Set the comment of the test-execution 
        SetComment($"Executing Test for Customer '{customerName}' ({customerID})");

        // Execute test  
        await ExecuteAsync();  
    }

     

    Verwenden von Parameter-Listen

    Informationen zu Parameter-Listen und deren Verwendung im Ablaufskript finden Sie unter: Parameter-Listen

     

    Auf Kontext-Informationen zugreifen

    In allen Steuerungs-Skripts können Sie wie folgt auf Kontext-Informationen zugreifen.

    Context.RunId Gibt die Nummer der aktuellen 
    Context.SuiteId   Nummer der gerade ausgeführten Suite. 
    Diese Information ist nicht verfügbar, wenn ein Test manuell (nicht aus einer Suite heraus) gestartet wurde. 
    Context.SuiteName Name der gerade ausgeführten Suite. 
    Diese Information ist nicht verfügbar, wenn ein Test manuell (nicht aus einer Suite heraus) gestartet wurde.   
    Context.TestId Nummer des gerade ausgeführten Tests. 
    Diese Information ist nur im Steuerungsskript eines Tests verfügubar und gibt sonst einen null-Wert zurück. 
    Context.TestName   Name des gerade ausgeführten Tests. 
    Diese Information ist nur im Steuerungsskript eines Tests verfügubar und gibt sonst einen null-Wert zurück.

     

    Platzhalter ersetzen

    Verwenden Sie im Steuerungsskript die Methode ReplacePlaceholder, um einfache Platzhalter-Ersetzungen in Texten oder Snippets vorzunehmen.

    Die folgende Codezeile ersetzt den Platzhalter {{status}} durch den Text "perfect".

    var myText = ReplacePlaceholder("This is my {{status}} text.", "status", "perfect");

     

     

    Beispiele

    War dieser Beitrag hilfreich?
    0 von 0 fanden dies hilfreich

    Kommentare