Automatisera testning av anpassningsbara formulär automate-testing-of-adaptive-forms

CAUTION
AEM 6.4 har nått slutet på den utökade supporten och denna dokumentation är inte längre uppdaterad. Mer information finns i teknisk supportperiod. Hitta de versioner som stöds här.

Översikt overview

Anpassningsbara formulär är en väsentlig del av kundinteraktionen. Det är viktigt att testa dina anpassningsbara formulär med varje ändring du gör i dem, till exempel när du distribuerar ett nytt korrigeringspaket eller ändrar en regel i formuläret. Funktionstestning av adaptiva formulär och alla fält i dem kan dock vara långsamma.

Med Calvin kan du automatisera testningen av dina anpassade formulär i webbläsaren. Calvin använder HobbesAnvändargränssnittet för testkörning och innehåller följande verktyg:

  • Ett JavaScript-API för att skapa tester.
  • Ett användargränssnitt för att köra tester.

Med Calvin kan du skapa testfall i CRXDE och köra gränssnittstester direkt i webbläsaren för att testa följande aspekter av de adaptiva formulären:

Adaptiv formulärproportion för test
Beskrivning
Förifyll upplevelsen av ett adaptivt formulär
  • Är formuläret förifyllt som förväntat baserat på datamodellens typ?
  • Är standardvärdena för formulärobjekten förifyllda som förväntat?
Skicka in ett anpassat formulär
  • Genereras korrekta data vid sändning?
  • Valideras formuläret på nytt på servern under sändning?
  • Har åtgärden Skicka konfigurerats för formuläret som körs?
Uttrycksregler
  • Är uttrycken som är kopplade till formulärobjekt, t.ex. calculate, visible, köra skript efter att ett fält har avslutats, körts efter att de relevanta UI-åtgärderna har utförts?
Valideringar
  • Körs fältvalideringar som förväntat efter att åtgärderna har utförts?
Lazy Loading
  • När du klickar på flikar (eller något navigeringsobjekt på en panel) hämtas HTML från servern enligt konfigurationen för lazy loading?
Gränssnittsinteraktion

Förutsättningar prerequisites

Innan du använder den här artikeln för att skapa testfall måste du känna till följande:

Exempel: Skapa en testsvit för ett adaptivt formulär med Hobbes som testramverk example-create-a-test-suite-for-an-adaptive-form-using-hobbes-as-testing-framework

Följande exempel visar hur du skapar en testsvit för att testa flera adaptiva formulär. Du måste skapa ett separat testfall för varje formulär som du behöver testa. Genom att följa de här stegen och ändra JavaScript-koden i steg 11 kan du skapa en egen testsvit för att testa dina adaptiva formulär.

  1. Gå till CRXDE Lite i webbläsaren: https://[server]:[port]/crx/de.

  2. Högerklicka på undermappen /etc/clientlibs och klicka på Create > Create Node. Ange ett namn (här afTestRegistration), ange typen av nod som cq:ClientLibraryFolder och klicka på OK.

    Mappen clientlibs innehåller registreringsaspekten för programmet (JS och Init). Vi rekommenderar att du registrerar alla Hobbes testsvitsobjekt som är specifika för ett formulär i mappen clientlibs.

  3. Ange följande egenskapsvärden i den nyligen skapade noden (här afTestRegistration) och klicka sedan på Save All. Dessa egenskaper hjälper Hobbes att identifiera mappen som ett test. Om du vill återanvända det här klientbiblioteket som ett beroende i andra klientbibliotek ger du det namnet granite.testing.calvin.tests.

Egenskap
Typ
Värde
kategorier
Sträng[]
granite.testing.hobbes.tests, granite.testing.calvin.tests
beroenden
Sträng[]
granite.testing.hobbes.teberg, granite.testing.calvin, apps.testframework.all
NOTE
Klientlib-filen granite.testing.calvin.af innehåller alla API:er för adaptiva formulär. Dessa API:er ingår i calvin-namnutrymmet.

1_aftestregistration

  1. Högerklicka på testnoden (här) afTestRegistration) och sedan klicka Create > Create File. Namnge filen js.txt och klicka på OK.

  2. Lägg till följande text i filen js.txt:

    code language-none
    #base=.
    js.txt
    
  3. Klicka Save All och stäng sedan filen js.txt.

  4. Högerklicka på testnoden (här) afTestRegistration) och klicka Create > Create File. Ge filen namnet init.js och klicka på OK.

  5. Kopiera följande kod till filen init.js och klicka på Save All:

    code language-none
    (function(window, hobs) {
        'use strict';
        window.testsuites = window.testsuites || {};
      // Registering the test form suite to the sytem
      // If there are other forms, all registration should be done here
        window.testsuites.testForm = new hobs.TestSuite("Adaptive Form - Demo Test", {
            path: '/etc/clientlibs/afTestRegistration/init.js',
            register: true
        });
     // window.testsuites.testForm1 = new hobs.TestSuite("testForm1");
    }(window, window.hobs));
    

    Ovanstående kod skapar en testsvit med namnet Adaptiv form - Demo-test. Om du vill skapa en testsvit med ett annat namn ändrar du namnet.

  6. Klicka Create > Skapa nod för att skapa en nod under mappen clientlib för varje formulär som du vill testa. I det här exemplet används en nod med namnet testForm testa ett adaptivt formulär med namnet testForm .Ange följande egenskaper och klicka på OK:

    • Namn: testForm (ditt formulärnamn)
    • Typ: cq:ClientLibraryFolder
  7. Lägg till följande egenskaper i den nya noden (här testForm) för att testa ett adaptivt formulär:

    table 0-row-3 1-row-3 2-row-3
    Egenskap Typ Värde
    kategorier Sträng[] granite.testing.hobbes.tests, granite.testing.hobbes.tests.testForm
    beroenden Sträng[] granite.testing.calvin.tests
    note note
    NOTE
    I det här exemplet används ett beroende av klientens lib granite.testing.calvin.tests för bättre hantering. I det här exemplet läggs även en klientbibliotekskategori, granite.testing.hobbes.tests.testForm, till för att återanvända det här klientbiblioteket, om det behövs.

    2_testformproperties

  8. Högerklicka på mappen som du har skapat för testformuläret (här testformulär) och välj Create > Create File. Namnge filen scriptingTest.js och lägg till följande kod i filen och klicka på Save All.

    Om du vill använda följande kod för att testa ett annat adaptivt formulär ändrar du sökvägen och namnet på formuläret i navigateTo (raderna 11, 36 och 62) och respektive testfall. Mer information om API:er för att testa olika aspekter av formulär och formulärobjekt finns i Calvin-API:er.

    code language-none
    (function(window, hobs) {
        'use strict';
    
     var ts = new hobs.TestSuite("Script Test", {
            path: '/etc/clientlibs/testForm/scriptingTest.js',
      register: false
     })
    
        .addTestCase(new hobs.TestCase("Checking execution of calculate script")
            // navigate to the testForm which is to be tested
            .navigateTo("/content/forms/af/testForm.html?wcmmode=disabled")
            // check if adaptive form is loaded
            .asserts.isTrue(function () {
                return calvin.isFormLoaded()
            })
            .execSyncFct(function () {
                // create a spy before checking for the expression
                calvin.spyOnExpression("panel1.textbox1");
                // setValue would trigger enter, set the value and exit from the field
                calvin.setValueInDOM("panel1.textbox", "5");
            })
            // if the calculate expression was setting "textbox1" value to "5", let's also check that
            .asserts.isTrue(function () {
                return calvin.isExpressionExecuted("panel1.textbox1", "Calculate");
            })
            .execSyncFct(function () {
                calvin.destroySpyOnExpression("panel1.textbox1");
            })
            .asserts.isTrue(function () {
                return calvin.model("panel1.textbox1").value == "5"
            })
        )
    
        .addTestCase(new hobs.TestCase("Calculate script Test")
            // navigate to the testForm which is to be tested
            .navigateTo("/content/forms/af/cal/demoform.html?wcmmode=disabled&dataRef=crx:///content/forms/af/cal/prefill.xml")
            // check if adaptive form is loaded
            .asserts.isTrue(function () {
                return calvin.isFormLoaded()
            })
    
            .execSyncFct(function () {
                // create a spy before checking for the expression
                calvin.spyOnExpression("panel2.panel1488218690733.downPayment");
                // setValue would trigger enter, set the value and exit from the field
                calvin.setValueInDOM("panel2.panel1488218690733.priceProperty", "1000000");
            })
            .asserts.isTrue(function () {
                return calvin.isExpressionExecuted("panel2.panel1488218690733.downPayment", "Calculate");
            })
            .execSyncFct(function () {
                calvin.destroySpyOnExpression("panel2.panel1488218690733.downPayment");
            })
            .asserts.isTrue(function () {
                // if the calculate expression was setting "downPayment" value to "10000", let's also check that
       return calvin.model("panel2.panel1488218690733.downPayment").value == 10000
            })
        )
    
        .addTestCase(new hobs.TestCase("Checking execution of Value commit script")
            // navigate to the testForm which is to be tested
            .navigateTo("/content/forms/af/cal/demoform.html?wcmmode=disabled&dataRef=crx:///content/forms/af/cal/prefill.xml")
            // check if adaptive form is loaded
            .asserts.isTrue(function () {
                return calvin.isFormLoaded()
            })
    
            .execSyncFct(function () {
                // create a spy before checking for the expression
                calvin.spyOnExpression("panel2.panel1488218690733.priceProperty");
                // setValue would trigger enter, set the value and exit from the field
                calvin.setValueInDOM("panel2.panel1488218690733.priceProperty", "100");
            })
            .asserts.isTrue(function () {
                return calvin.isExpressionExecuted("panel2.panel1488218690733.priceProperty", "Value Commit");
            })
            .execSyncFct(function () {
                calvin.destroySpyOnExpression("panel2.panel1488218690733.priceProperty");
            })
            .asserts.isTrue(function () {
             // if the value commit expression was setting "textbox1488215618594" value to "0", let's also check that
                return calvin.model("panel2.panel1488218690733.textbox1488215618594").value == 0
            })
        );
    
     // register the test suite with testForm
      window.testsuites.testForm.add(ts);
    
     }(window, window.hobs));
    

    Testfallet skapas. Fortsätt att köra testfallet för att testa adaptiva formulär via Hobbes. Anvisningar om hur du kör testfall finns i Testa användargränssnittet med automatiserade tester.

Du kan också installera paketet i den bifogade filen SampleTestPackage.zip för att få samma resultat som i stegen som förklaras i exemplet: Skapa en testsvit för ett adaptivt formulär med Hobbes som testramverk.

Hämta fil

Testa användargränssnittet med automatiserade tester testing-your-ui-using-automated-tests

Köra en testsvit running-a-single-test-suite

Testsviter kan köras individuellt. När du kör en testsvit ändras sidan allt eftersom testärenden och deras åtgärder körs och resultaten visas när testet har slutförts. Ikoner anger resultatet.

En bockmarkeringsikon anger att testet har slutförts: bock

En X-ikon anger att testet misslyckades: kors

Så här kör du en testsvit:

  1. Klicka på eller tryck på namnet på det testfall som du vill köra för att utöka detaljerna för åtgärderna.

    1_tapnameoftestcase

  2. Klicka eller tryck på knappen Kör test. runtestcase

    2_klickrun

  3. Platshållaren ersätts med sidinnehåll när testet utförs.

    3_pagcontent

  4. Granska resultatet av testfallet genom att trycka på eller klicka på beskrivningen för att öppna panelen Resultat. Om du trycker eller klickar på namnet på testfallet på resultatpanelen visas all information.

    4_reviewresults

Stegen för testning av AEM adaptiva formulär liknar stegen för testning av AEM användargränssnitt. Mer information om hur du testar adaptiva formulär finns i följande avsnitt i Testa användargränssnittet:

  • Visa testsviter
  • Köra flera tester

Ordlista glossary

Term
Beskrivning
Testsvit
En testsvit är en samling relaterade testfall.
Testfall
Ett testfall representerar en åtgärd som en användare utför med ditt användargränssnitt. Lägg till testfall i testsviten för att testa de aktiviteter som användarna utför.
Åtgärder

Åtgärder är metoder som utför en gest i användargränssnittet, till exempel klickar på en knapp eller fyller i en inmatningsruta med ett värde.

Metoderna för klasserna hobs.actions.Asserts, hobs.actions.Core och hobs.utils.af är åtgärder som du kan använda i dina tester. Alla åtgärder körs synkront.

Skapar- eller publiceringsmiljö
I allmänhet kan formulär antingen testas i författar- eller publiceringsmiljö. I publiceringsmiljö är som standard åtkomsten att köra testet begränsad. Detta beror på att alla klientbibliotek som är relaterade till testköraren finns inuti /libs i JCR-strukturen.
recommendation-more-help
a6ebf046-2b8b-4543-bd46-42a0d77792da