적응형 양식 테스트 자동화 automate-testing-of-adaptive-forms
개요 overview
적응형 양식은 고객 상호 작용에 없어집니다. 새 수정 팩을 롤아웃하거나 양식의 규칙을 변경하는 경우와 같이 변경 사항이 포함된 모든 적응형 양식을 테스트하는 것이 중요합니다. 그러나 기능 테스트 적응형 양식 및 양식의 모든 필드는 지루할 수 있습니다.
Calvin을 사용하면 웹 브라우저에서 적응형 양식 테스트를 자동화할 수 있습니다. 캘빈이 홉스테스트를 실행하기 위한 의 사용자 인터페이스와 다음 도구를 제공합니다.
- 테스트를 만들기 위한 JavaScript API입니다.
- 테스트를 실행하기 위한 사용자 인터페이스입니다.
Calvin을 사용하면 CRXDE에서 테스트 사례를 만들고 웹 브라우저에서 직접 UI 테스트를 실행하여 적응형 양식의 다음 측면을 철저히 테스트할 수 있습니다.
사전 요구 사항 prerequisites
이 문서를 사용하여 테스트 사례를 만들려면 먼저 다음을 알아야 합니다.
- 를 사용하여 테스트 세트 만들기 및 테스트 사례 실행 홉스
- JavaScript API를 홉합니다
- Calvin JavaScript API
예: Hobbes를 테스트 프레임워크로 사용하여 적응형 양식에 대한 테스트 세트를 만듭니다 example-create-a-test-suite-for-an-adaptive-form-using-hobbes-as-testing-framework
다음 예에서는 여러 적응형 양식을 테스트하는 테스트 세트 생성을 안내합니다. 테스트해야 하는 각 양식에 대해 별도의 테스트 사례를 만들어야 합니다. 다음 단계와 유사하고 11단계에서 JavaScript 코드를 수정하여 별도의 테스트 세트를 만들어 적응형 양식을 테스트할 수 있습니다.
-
웹 브라우저에서 CRXDE Lite으로 이동합니다.
https://[server]:[port]/crx/de
. -
/etc/clientlibs 하위 폴더를 마우스 오른쪽 버튼으로 클릭하고 만들기 > 노드 만들기. 이름(여기서 afTestRegistration)을 입력하고 노드 유형을 cq:ClientLibraryFolder로 지정하고 확인.
clientlibs 폴더에는 애플리케이션(JS 및 Init)의 등록 종횡비가 포함되어 있습니다. clientlibs 폴더에 있는 양식과 관련된 모든 Hobbes 테스트 세트 개체를 등록하는 것이 좋습니다.
-
새로 만든 노드(여기서 afTestRegistration)에서 다음 속성 값을 지정한 다음 모두 저장. 이러한 속성은 Hobbes가 폴더를 테스트로 인식하는 데 도움이 됩니다. 이 클라이언트 라이브러리를 다른 클라이언트 라이브러리에 종속성으로 재사용하려면 granite.testing.calvin.tests로 이름을 지정합니다.
-
테스트 노드를 마우스 오른쪽 단추로 클릭합니다(여기서는 afTestRegistration) 을 클릭한 다음 만들기 > 파일 만들기. js.txt 파일의 이름을 지정하고 확인.
-
js.txt 파일에서 다음 텍스트를 추가합니다.
code language-none #base=. js.txt
-
클릭 모두 저장 그런 다음 js.txt 파일을 닫습니다.
-
테스트 노드를 마우스 오른쪽 단추로 클릭합니다(여기서는 afTestRegistration) 을(를) 클릭합니다. 만들기 > 파일 만들기. init.js 파일의 이름을 지정하고 를 클릭합니다 확인.
-
다음 코드를 init.js 파일에 복사하고 를 클릭합니다 모두 저장:
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));
위의 코드는 이름이 인 테스트 세트를 만듭니다 적응형 양식 - 데모 테스트. 다른 이름으로 테스트 세트를 만들려면 그에 따라 이름을 변경합니다.
-
클릭 만들기 > 노드 만들기 테스트할 각 양식에 대해 clientlib 폴더 아래에 노드를 만들려면 이 예에서는 testForm 이름이 인 적응형 양식을 테스트하려면 testForm
.
다음 속성을 지정하고 확인:- 이름: testForm(양식 이름)
- 유형: cq:ClientLibraryFolder
-
새로 만든 노드(여기서는 testForm)에 다음 속성을 추가하여 적응형 양식을 테스트합니다.
table 0-row-3 1-row-3 2-row-3 속성 유형 값 카테고리 문자열[] granite.testing.hobbes.tests, granite.testing.hobbes.tests.testForm 종속성 문자열[] granite.testing.calvin.tests note note NOTE 이 예에서는 클라이언트 lib granite.testing.calvin.tests에 대한 종속성을 사용하여 더 나은 관리를 수행합니다. 또한 이 예제에서는 필요한 경우 이 클라이언트 라이브러리를 다시 사용하기 위해 클라이언트 라이브러리 카테고리 "granite.testing.hobbes.tests.testForm"을 추가합니다. -
테스트 양식을 위해 만든 폴더(여기서는 testForm)를 마우스 오른쪽 단추로 클릭하고 를 선택합니다 만들기 > 파일 만들기. 파일 이름을 scriptingTest.js로 지정하고 파일에 다음 코드를 추가하고 를 클릭합니다 모두 저장.
다음 코드를 사용하여 다른 적응형 양식을 테스트하려면 의 양식 경로 및 이름을 변경합니다. navigateTo (11행, 36행 및 62행) 및 각각의 시험건입니다. 양식 및 양식 개체의 다양한 측면을 테스트하는 API에 대한 자세한 내용은 다음을 참조하십시오 Calvin API.
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));
테스트 사례가 만들어집니다. Hobbes를 통해 적응형 양식을 테스트하려면 테스트 사례를 계속 실행하십시오. 테스트 사례를 실행하는 단계는 자동화된 테스트를 사용하여 UI 테스트의 테스트 실행.
첨부된 파일 SampleTestPackage.zip에 패키지를 설치하여 예제에서 설명한 단계에 따라 동일한 결과를 얻을 수도 있습니다. Hobbes를 테스트 프레임워크로 사용하여 적응형 양식에 대한 테스트 세트를 만듭니다.
자동화된 테스트를 사용하여 UI 테스트 testing-your-ui-using-automated-tests
단일 테스트 세트 실행 running-a-single-test-suite
테스트 세트는 개별적으로 실행할 수 있습니다. 테스트 세트를 실행하면 페이지가 테스트 사례 및 해당 작업이 실행되어 테스트가 완료된 후 결과가 나타납니다. 아이콘은 결과를 나타냅니다.
확인 표시 아이콘은 전달된 테스트를 나타냅니다.
X 아이콘은 실패한 테스트를 나타냅니다.
테스트 세트를 실행하려면
-
테스트 패널에서 실행할 테스트 사례 이름을 클릭하거나 탭하여 작업의 세부 사항을 확장합니다.
-
테스트 실행 단추를 클릭하거나 탭합니다.
-
테스트가 실행될 때 자리 표시자가 페이지 콘텐츠로 바뀝니다.
-
설명을 탭하거나 클릭하여 [결과] 패널을 열어 테스트 사례 결과를 검토합니다. [결과] 패널에서 테스트 사례 이름을 탭하거나 클릭하면 모든 세부 사항이 표시됩니다.
AEM 적응형 양식을 테스트하는 단계는 AEM UI를 테스트하는 단계와 유사합니다. 적응형 양식 테스트에 대한 자세한 내용은 UI 테스트:
- 테스트 세트 보기
- 여러 테스트 실행