how develop test scripts using top 5 most popular test automation frameworks
테스트 자동화에 대해 배우기 시작하면 '테스트 자동화 프레임 워크'라는 용어를 접해야합니다. 아마도 여러분 중 일부는이 용어에 불편 함을 느끼고 이해하기 어렵고 구현하기 더 어렵다고 느끼기 시작할 것입니다.
이 자습서는 테스트 자동화 프레임 워크를 가능한 한 간단하게 이해하는 데 도움이되도록 작성되었습니다. 여기에있는 모든 튜토리얼 읽기 ' 여기에 자동화 테스트 자습서 시리즈 .
테스트 자동화 프레임 워크 (매우 간단한 언어로) '규칙의 집합'입니다. 규칙은 '유지 관리 감소'를 초래하는 방식으로 스크립트를 작성하는 데 도움이됩니다.
프레임 워크의 개념을 완전히 이해하려면 먼저 간단한 스크립트를 작성하는 방법을 배운 다음 프레임 워크를 구현하는 방법을 배워야합니다.
테스트 자동화에서는 스크립트를 작성합니다. 스크립팅은 기본적으로 세 가지‘A’입니다.
- 배열
- 동작
- 역설
다음은 각 A의 세부 정보와 예입니다.
#1.배열또는 개체 식별
ID, 이름 또는 창 제목 등으로 개체 (버튼, 드롭 다운 등)를 식별합니다.
웹 응용 프로그램의 경우 사용자 ID 또는 XPath 또는 CSS 또는 클래스 이름 등으로 식별합니다. 아무것도 작동하지 않으면 마우스 좌표를 사용하여 객체를 식별합니다 (하지만 신뢰할 수있는 객체 식별 방법은 아닙니다).
ID를 사용하여 개체를 식별하는 Selenium WebDriver (C # 포함)의이 예제를 살펴보십시오. (웹 애플리케이션)
IWebElement txtServer = _webDriver.FindElement(By.Id('tfsServerURL'));
MS 코딩 된 UI (데스크톱 애플리케이션)의 또 다른 예
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
식별 후 이러한 개체를 UIMaps 또는 Object Repository에 정렬하거나 저장하여 스크립트에서 다시 사용합니다. 그래서이 단계를 ARRANGEMENT라고합니다.
#두.동작식별 된 개체에
객체가 식별되면 마우스 또는 키보드로 어떤 종류의 작업을 수행합니다.예를 들면, 클릭하거나 두 번 클릭하거나 마우스를 그 위로 가져 가거나 때로는 드래그 드롭합니다. 때때로 우리는 텍스트 상자에 씁니다. 따라서이 두 번째 단계에서는 이러한 개체에 대해 수행하는 모든 작업을 다룹니다.
예 1 : (C #을 사용하는 Selenium WebDriver)
txtServer.Clear(); txtServer.SendKeys(“Some sample text”);
예 2 : (C #을 사용하는 MS 코딩 UI)
Mouse.Click(buttonAdd);
#삼.역설
어설 션은 기본적으로 일부 예상 결과로 객체를 확인합니다. 예를 들어 계산기에서 2 + 3을 누르면 화면에 5가 표시됩니다.이 경우 예상 결과는 5입니다.이 개념은 이미 첫 번째 자습서에서 설명했습니다.
다음은 주장의 예입니다.
Assert.AreEqual('5', txtResult.DisplayText);
테스트 자동화로 작성된 거의 모든 스크립트에는 Arrangement, Action 및 Assertion의 세 가지가 포함됩니다.
이제이 모든 단계를 포함하는 완전한 스크립트를 살펴보십시오. 스크립트가 계산기를 열고 1 + 6을 누른 다음 화면에 7이 표시되는지 확인합니다.
예 A:
(TestMethod) (TestMethod) public void TestCalculator() { var app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //Object identification part (ARRANGEMENT) //----*Calculator Window----*// WinWindow calWindow = new WinWindow(app); calWindow.SearchProperties(WinWindow.PropertyNames.Name) = 'Calculator'; calWindow.SearchProperties(WinWindow.PropertyNames.ClassName) = 'CalcFrame'; //----*Button1 ----*// WinButton btn1 = new WinButton(calWindow); btn1.SearchProperties(WinButton.PropertyNames.Name) = '1'; //----*Button Add ----*// WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add'; //----*Button 6 ----*// WinButton btn6 = new WinButton(calWindow); btn6.SearchProperties(WinButton.PropertyNames.Name) = '6'; //----*Button Equals ----*// WinButton btnEquals = new WinButton(calWindow); btnEquals.SearchProperties(WinButton.PropertyNames.Name) = 'Equals'; //----*Text Box Results----*// WinText txtResult = new WinText(calWindow); txtResult.SearchProperties(WinText.PropertyNames.Name) = 'Result'; //(ACTIONS Part) // Click '1' button Mouse.Click(btn1); // Click 'Add' button Mouse.Click(btnAdd); // Click '6' button Mouse.Click(btn6); // Click 'Equals' button Mouse.Click(btnEquals); //evaluate the results (ASSERTIONS) Assert.AreEqual('7', txtResult.DisplayText, “Screen is not displaying 7); //close the application app.Close(); }
학습 내용 :
- 그 스크립트에 무슨 문제가 있습니까?
- 테스트 자동화에는 다음과 같은 5 가지 인기있는 프레임 워크가 있습니다.
- #1. 선형 프레임 워크 :
- # 2. 모듈화 프레임 워크 :
- #삼. 데이터 기반 프레임 워크 :
- # 4. 키워드 기반 프레임 워크 :
- # 5. 하이브리드 테스트 자동화 프레임 워크 :
- 결론
- 추천 도서
그 스크립트에 무슨 문제가 있습니까?
대본은 이해하기 쉬우 며 위의 예에서 3 개의 'A'개념을 이해했으면합니다. 그러나 모든 것이 그 대본으로 좋지 않습니다.
이 스크립트는 쉬운 유지 관리를 허용하지 않습니다. 다시 계산기의 예를 들어 보면 계산기의 각 기능에 대한 테스트 케이스를 작성해야한다면 많은 테스트 케이스가있을 것입니다. 10 개의 테스트 케이스가 있고 각 테스트에서 동일한 객체를 정의해야하고, 객체의 이름이나 ID가 변경되면 10 개의 테스트 케이스에서 객체 식별 부분을 변경해야합니다.
예를 들면, 스크립트에서 ADD 버튼의 예를 살펴 보겠습니다.
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
이 줄이 10 개의 테스트 케이스에 사용되었다고 가정 해 보겠습니다. 이제 다음 버전의 계산기에서 개발자는 버튼의 이름을 '추가'에서 '플러스'로 변경했습니다. 이제 테스트 케이스를 실행하면 실패 할 것이고 10 개의 테스트 케이스에서 위의 줄을 이것으로 변경해야합니다.
btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Plus';
그래서 우리는이 테스트 케이스를 개선해야합니다. 코딩에서 유명한 DRY 원칙을 따라야합니다. DRY는 'Do not repeat Yourself'를 의미합니다. 객체 식별 부분은 다음과 같은 방식으로 작성해야합니다. 객체는 한 곳에서만 식별되어야하며 모든 곳에서 호출되어야합니다.
개선 된 스크립트를 살펴보십시오.
예 B:
//defining the objects outside the script and only once. ApplicationUnderTest app = null; public WinWindow calWindow { get { WinWindow _calWindow = new WinWindow(app); _calWindow.SearchProperties(WinWindow.PropertyNames.Name) = 'Calculator'; _calWindow.SearchProperties(WinWindow.PropertyNames.ClassName) = 'CalcFrame'; return _calWindow; } } public WinText txtResult { get { WinText _txtResult = new WinText(calWindow); _txtResult.SearchProperties(WinText.PropertyNames.Name) = 'Result'; return _txtResult; } } //making functions for similar kind of tasks public void ClickButton(string BtnName) { WinButton button = new WinButton(calWindow); button.SearchProperties(WinButton.PropertyNames.Name) = BtnName ; Mouse.Click(button); } public void AddTwoNumbers(string number1, string number2) { ClickButton(number1); ClickButton('Add'); ClickButton(number2); ClickButton('Equals'); } //Test case becomes simple and easy to maintain. (TestMethod) public void TestCalculatorModular() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //do all the operations AddTwoNumbers('6', '1'); //evaluate the results Assert.AreEqual('7', txtResult.DisplayText, “screen is not displaying 7”); //close the application app.Close(); }
위의 예에서 우리는 calWindow 과 txtResult 다른 테스트 방법에서 사용할 수 있도록 개체를 맨 위로 이동합니다. 한 번만 정의했으며 원하는만큼 많은 테스트 케이스에서 사용할 수 있습니다.
또한 두 가지 기능을 만들었습니다. ClickButton () 버튼 이름을 받아들이고 그것을 클릭하고 AddTwoNumbers () 두 개의 숫자를 취하고 클릭 버튼 내부 기능.
코드를 '개선'하고 재사용 및 유지 관리가 가능하도록 만드는 순간, 이는 모든 자동화 프레임 워크를 사용하고 있음을 의미합니다. 이제 흥미로워집니다.
또한보십시오=> 테스트 자동화를위한 프레임 워크가 필요한 이유는 무엇입니까?
있습니다 테스트 자동화에서 널리 사용되는 5 가지 프레임 워크 :
- 선의
- 모듈성
- 데이터 기반
- 키워드 기반
- 잡종
이제 각 프레임 워크의 특성에 따라 설명하겠습니다.
#1. 선형 프레임 워크 :
형질
- 스크립트와 관련된 모든 것은 스크립트 내부에 정의되어 있습니다.
- 추상화 및 코드 복제에 신경 쓰지 않음
- 기록 및 재생은 일반적으로 선형 코드를 생성합니다.
- 시작하기 쉬움
- 유지 보수의 악몽.
Linear Framework의 위의 5 가지 특성을 읽으면 예제 A를 이들과 쉽게 연관시킬 수 있습니다. 이 예제는 기본적으로 Linear 프레임 워크를 사용하고 있으며, 스크립트와 관련된 Ever는 스크립트 내부에 정의되어 있습니다. 그만큼 전화 창 과 TxtResult 스크립트 내부에 정의되어 있습니다. 스크립트는 추상화 및 코드 복제에 대해 신경 쓰지 않습니다. 앞서 설명했듯이 유지 보수 악몽이기도합니다.
그렇다면이 프레임 워크를 사용해야하는 이유는 무엇입니까?
이 프레임 워크는 UI 화면이 많지 않은 소규모 프로젝트에서 사용할 수 있습니다. 또한 자동화 도구를 처음 사용할 때 일반적으로 선형 형식으로 코드를 생성합니다. 따라서 특정 작업을 위해 자동화 도구에서 생성되는 코드에 대해 알아볼 수 있습니다. 이러한 이유 외에이 프레임 워크는 스크립팅에서 피해야합니다.
=> 여기에서 QTP를 사용한 선형 및 키워드 프레임 워크 예제를 참조하십시오.
# 2. 모듈화 프레임 워크 :
형질
- 개체는 한 번 정의되며 모든 테스트 방법에서 재사용 할 수 있습니다.
- 개별 기능을 위해 작고 정확한 방법이 생성됩니다.
- 테스트 케이스는 이러한 작은 메서드와 재사용 가능한 개체의 모음입니다.
- 이를 통해 유지 관리 가능한 코드를 작성할 수 있습니다.
위의 특성을 읽음으로써 예제 B를 이러한 특성과 관련시킬 수 있습니다. 이 예에서 우리는 calWindow 모든 곳에서 사용할 수있는 속성 내에서 정의합니다. 우리는 두 개의 작고 독립적 인 함수를 만들었습니다. ClickButton () 과 AddTwoNumbers () . 이 두 가지 작은 함수를 결합하여 계산기의 '추가'기능을 테스트하는 최종 스크립트를 만듭니다.
따라서 유지 관리가 더 쉬워집니다. 계산기 UI에 변경 사항이 발생하면 기능 만 변경하면됩니다. 스크립트는 그대로 유지됩니다. 이 프레임 워크는 자동화에 많이 사용됩니다. Selenium과 함께 사용되는 유명한 페이지 개체 프레임 워크도 일종의 모듈화 프레임 워크입니다. 전체 웹 애플리케이션을 별도의 페이지로 배포합니다. 각 페이지의 버튼, 드롭 다운 및 체크 박스는 해당 페이지의 클래스 내에 정의됩니다. 웹 사이트에서 변경이 발생하면 해당 페이지 클래스에서만 변경해야하며 다른 페이지는 그대로 유지됩니다. 이로 인해 유지 관리가 향상되고 스크립트를 쉽게 읽을 수 있습니다.
이 프레임 워크의 유일한 단점은 좋은 객체 지향 개념과 강력한 개발 기술이 필요하다는 것입니다. 이러한 경우이 프레임 워크를 적극 권장합니다.
#삼. 데이터 기반 프레임 워크 :
형질:
- 테스트 데이터 (입력 및 출력 값)는 스크립트와 분리되어 외부 파일에 저장됩니다. CSV 파일, Excel 스프레드 시트 또는 데이터베이스가 될 수 있습니다.
- 스크립트가 실행될 때 이러한 값은 외부 파일에서 선택되고 변수에 저장되며 하드 코딩 된 값이있는 경우 대체합니다.
- 동일한 테스트 케이스를 다른 입력으로 실행해야하는 곳에서 매우 유용합니다.
예 C:
세 가지 다른 입력으로 추가 테스트 케이스를 실행하려고합니다.
데이터는
7 + 2 = 9
5 + 2 = 7
3 + 2 = 5
이 데이터 (입력 및 출력 모두)를 외부 CSV 파일에 저장했습니다.
(DataSource('Microsoft.VisualStudio.TestTools.DataSource.CSV', '|DataDirectory|\data.csv', 'data#csv', DataAccessMethod. Sequential ), DeploymentItem('TestCalc\data.csv'), TestMethod) public void TestCalculatorDataDrivsen() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //do all the operations AddTwoNumbers(FromCSV.ADD1, FromCSV.ADD2); //evaluate the results Assert.AreEqual(FromCSV.Sum, txtResult.DisplayText); //close the application app.Close(); }
위의 스크립트에서는 스크립트 상단에 .csv 파일 인 데이터 소스를 정의합니다.
that.CSV 파일의 경로를 지정하고 스크립트에 '순차적으로'구문 분석하도록 지시했습니다. 즉, CSV 파일에있는 행 수만큼 스크립트가 실행됩니다. 이 경우 스크립트는 3 번 실행됩니다. 각 실행에서 처음 두 열에 정의 된 두 숫자를 더하고이 두 숫자의 합이 세 번째 열에있는 숫자와 일치하는지 확인합니다.
이 프레임 워크에는 다양한 장점이 있습니다. 모든 값은 스크립트 외부에 저장되므로 다음 빌드에서 변경 사항이 발생하면 외부 파일의 데이터 만 변경하면 스크립트가 그대로 유지됩니다.
두 번째 장점은 다른 입력에 대해 동일한 스크립트를 실행할 수 있다는 것입니다. 100 명의 직원 등록을 테스트해야하는 ERP의 예를 들어 보겠습니다. 하나의 스크립트를 작성하고 직원과 관련된 이름 및 기타 데이터를 외부 파일에 저장할 수 있습니다. 하나의 스크립트를 실행하면 100 번 실행됩니다. 매번 다른 직원의 데이터를 사용합니다. 스크립트가 직원을 등록하지 못한 데이터를 쉽게 감지 할 수 있습니다. 부정적인 테스트를 할 때 추가 이점이 될 것입니다.
=> 여기에서 QTP를 사용한 데이터 기반 및 하이브리드 프레임 워크 예제를 참조하십시오.
# 4. 키워드 기반 프레임 워크 :
형질:
- 데이터와 작업은 모두 스크립트 외부에서 정의됩니다.
- 다양한 유형의 행동에 대한 키워드 개발이 필요했습니다.
- 테스트해야하는 기능은 우리가 개발 한 키워드와 테스트 데이터를 사용하여 표 형식으로 단계적으로 작성됩니다. 데이터 기반 프레임 워크와 마찬가지로이 테이블을 외부 파일에 저장합니다.
- 스크립트는이 테이블을 구문 분석하고 해당 작업을 수행합니다.
- 코딩에 대해 모르는 수동 테스터가 어느 정도 자동화의 일부가 될 수 있습니다.
예 D:
데이터 (예 : 1 + 3 = 4)와 작업 (예 : Click, Clear 등)을 표 형식의 Excel 파일에 정의했습니다.
스크립트는 다음과 같이됩니다 (아래 코드는 목적을 이해하기 위해 작성되었습니다).
(TestMethod) public void TestCalculator() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); Table tb = ReadFromExcel(); Foreach(WinRow row in tb) { WinCell Window = row.Cells(“Window”); WinCell Control = row.Cells(“Control”); WinCell Action = row.Cells(“Action”); WinCell Arguments = row.Cells(“Arguments”); UITestControl c = GetControl(Control.Text,Window.Text); If(Action.Text == “Click”) Mouse.Click (c); If (Action.Text == “Clear”) c.Clear(); if(Action.Text == “Verify Result”) Assert.AreEqual(c.Text, Arguments.Text) //….and so on } }
위의 스크립트는 엑셀 파일의 파서 일뿐입니다. Excel 파일을 한 줄씩 구문 분석하고 각 작업을 수행 할 키워드를 찾습니다. 키워드 '클릭'을 찾으면 정의 된 개체를 클릭합니다. 'Verify Result'를 찾으면 어설 션을 수행합니다.
키워드 기반 프레임 워크를 사용하면 다양한 이점이 있습니다.
첫 번째 장점은이 프레임 워크가 테스트 케이스가 변경 될 가능성이 큰 시나리오에서 매우 유용하다는 것입니다. 테스트 케이스에서 단계가 변경되면 코드를 건드릴 필요가 없습니다. 엑셀 파일을 업데이트하면 스크립트가 업데이트됩니다.
모든 스크립트를 Excel 파일에 정의하고이 Excel 파일을 수동 테스터에게 전달하여 새 스크립트를 추가하거나 기존 스크립트를 업데이트 할 수 있습니다. 이러한 방식으로 수동 테스터는 코드를 작성할 필요가 없기 때문에 테스트 자동화의 일부가 될 수도 있습니다. 필요한 경우이 엑셀 파일 만 업데이트하고 스크립트는 자동으로 업데이트됩니다.
두 번째 장점은 스크립트가 도구에 독립적이라는 것입니다. 스크립트를 Excel 파일로 유지 관리 할 수 있으며 특정 시점에서 자동화 도구를 변경해야하는 경우 다른 도구에서 Excel 파서를 작성하여 쉽게 변경할 수 있습니다.
이 프레임 워크의 단점은 다양한 유형의 작업에 대한 키워드를 발명해야한다는 것입니다. 대규모 프로젝트에는 스크립트와 키워드를 기억하고 구성하는 데 필요한 키워드가 너무 많습니다. 이 자체는 어느 시점에서 번거로운 작업이됩니다.
개체를 쉽게 식별 할 수없고 마우스 좌표 및 기타 기술을 사용해야하는 복잡한 시나리오에서는이 프레임 워크가 그다지 도움이되지 않습니다.
키워드 기반은 여전히 많은 자동화 테스터가 선호하는 프레임 워크입니다. 로봇 프레임 워크 by Google은 활발한 커뮤니티에서 지원하는 인기있는 키워드 기반 프레임 워크입니다.
# 5. 하이브리드 테스트 자동화 프레임 워크 :
형질:
- 위의 두 가지 이상의 기법을 조합하여 강점을 취하고 약점을 최소화합니다.
- 프레임 워크는 데이터 기반 또는 키워드 기반 프레임 워크와 함께 모듈 식 접근 방식을 사용할 수 있습니다.
- 프레임 워크는 스크립트를 사용하여 순수한 키워드 기반 접근 방식으로 구현하기 너무 어려울 수있는 일부 작업을 수행 할 수 있습니다.
간단히 말해, 하이브리드 프레임 워크는 위에서 언급 한 기술의 조합을 사용합니다. 본질적으로 모듈 식인 데이터 기반 프레임 워크를 사용할 수 있습니다. 일부 테스트 케이스의 경우 키워드 기반 접근 방식을 사용할 수 있고 나머지는 모듈 식을 사용할 수 있습니다. 따라서이 기사에서 언급 한 두 가지 이상의 기술을 혼합 할 때마다 실제로 하이브리드 접근 방식을 사용합니다.
결론
이제 테스트 자동화 프레임 워크가 더 이상 무서운 용어가 아니기를 바랍니다. 가장 인기있는 프레임 워크를 가능한 한 간단하게 설명하려고 노력했습니다.
당신의 삶을 더 쉽게 만들어주는 프레임 워크가 있습니다. 유지 관리 가능하고 안정적인 스크립트를 작성하는 데 도움이됩니다. 프레임 워크를 사용하지 않으면 테스트 자동화 분야는 악몽입니다. 응용 프로그램의 모든 작은 변경에 대해 수백 곳에서 코드를 변경해야합니다.
따라서 이러한 프레임 워크에 대한 이해는 테스트 자동화의 맛을 원하는 모든 테스터에게 필수입니다.
우리의 다음 튜토리얼 이 시리즈에서는 '테스트 자동화 실행 및보고'에 대해 알아 봅니다.
이 기사에서 놓친 것이 있거나 질문이 필요하면 의견 섹션에서 자유롭게 질문하십시오.
이전 튜토리얼 # 4 | 다음 튜토리얼 # 6
애니메이션을 무료로 볼 수있는 애니메이션 웹 사이트
추천 도서
- QTP 프레임 워크-테스트 자동화 프레임 워크 – 키워드 기반 및 선형 프레임 워크 예-QTP 자습서 # 17
- SeeTest 자동화 명령 : 예제가 포함 된 자세한 설명
- 2021 년 가장 인기있는 10 가지 로봇 프로세스 자동화 RPA 도구
- 수동 및 자동화 프로젝트에서 테스트 계획은 어떻게 다릅니 까?
- 각각의 장점과 단점이있는 가장 인기있는 테스트 자동화 프레임 워크 – Selenium Tutorial # 20
- 스크립트없는 테스트 자동화 프레임 워크 : 도구 및 예제
- 테스트 자동화 – 전문 직업입니까? 일반 테스터도 자동화 할 수 있습니까?
- 자동화 테스트를위한 25 가지 최고의 Java 테스트 프레임 워크 및 도구 (3 부)