TestNG DataProviders – 종단 간 개요 및 데모

최종 업데이트: 2020년 9월 06일 — Continuous Testing 전문가

 

세드릭 보이스트(Cedric Beust)는 2003년 자바 프로그래밍 언어를 사용하여 인기 있는 테스트 자동화 프레임워크인 TestNG를 개발했습니다. JUnit 및 NUnit과 유사하지만, 구성 제어 부족, 정적 프로그래밍 모델, 종속성 테스트 부족 등 JUnit 및 NUnit의 단점을 해결했습니다. 기능, 단위 및 통합 시스템 테스트를 포함한 광범위한 테스트 프로젝트를 지원하도록 설계되었습니다. TestNG는 테스터가 복잡한 테스트 작업을 수행할 수 있도록 지원할 뿐만 아니라 기능을 사용하기 쉽게 만드는 강력한 기능을 제공합니다. TestNG는 주로 애노테이션(Annotation) 기능으로 유명하지만, TestNG DataProviders는 데이터 기반 테스트를 쉽고 효율적으로 수행할 수 있도록 해주는 또 다른 편리한 기능입니다. 데이터 매개변수화, 데이터 리스너, DataProviders, HTML 보고서, 로그, 테스트 케이스 그룹화, 우선순위 지정 및 병렬 테스트 기능을 제공하는 TestNG는 대부분의 테스터에게 빠르게 인기를 얻고 있습니다.

TestNG DataProviders란 무엇인가요?

TestNG의 중요한 측면 중 하나는 데이터 기반 테스트입니다. DataProviders 기능은 데이터 기반 테스트의 일부로, 단일 실행에서 테스트 케이스에 다양한 값을 제공합니다. 즉, 단일 테스트 케이스를 한 번 실행하더라도 메서드는 서로 다른 데이터 값으로 실행할 수 있습니다. 예를 들어, 등록 페이지를 서로 다른 입력값으로 테스트하더라도 테스트는 한 번만 실행됩니다. TestNG의 데이터 제공자 기능은 이러한 모든 값을 한 번에 하나씩 테스트 케이스에 전달하여 단일 실행에서 여러 데이터 세트를 테스트할 수 있도록 합니다.

TestNG DataProviders의 필요성

TestNG 매개변수는 XML 파일을 통해 함수에 값을 제공하는 유사한 기능입니다. 매개변수를 사용하면 단일 데이터 세트로 여러 함수를 실행하거나, 단일 함수를 여러 데이터 세트로 실행할 수 있습니다. 하지만 매개변수의 문제점은 해당 값으로 테스트 케이스를 한 번만 실행할 수 있다는 것입니다. 일반적인 테스트 프로젝트에서는 여러 값으로 테스트 케이스를 실행해야 합니다. 이 경우, 서로 다른 데이터 세트를 사용하여 테스트 케이스를 여러 번 실행해야 합니다. TestNG 데이터 제공자는 테스트 케이스를 한 번만 실행하지만 서로 다른 데이터 세트를 사용할 수 있도록 하여 이러한 문제를 해결합니다. 또한, 어노테이션을 통해 테스트 메서드에 배열된 데이터 값을 제공합니다.

어떻게 진행합니까?

TestNG DataProviders 기능은 다음 구문을 사용합니다. 예:

[java] @DataProvider (name = “ExperitestDataProvider”) public Object[][] ExperitestDPMethod() { return new Object [][] { values} } [/java]

구문을 확인하면 TestNG 어노테이션을 사용합니다. 여기서는 이름이라는 하나의 매개변수만 사용됩니다. 이 매개변수는 데이터 공급자의 이름으로 문자열 값만 받습니다. 자체 메서드가 있습니다. 예를 들어, 여기의 ExperitestDPMethod()와 같습니다. 기본적으로 TestNG는 메서드 이름을 지정하지 않으면 데이터 공급자의 이름으로 사용합니다.

테스트 사례를 실행하면 데이터 제공자가 데이터 제공자 메서드를 호출하여 각 데이터 세트에 대한 데이터 기반 테스트를 수행하기 위해 2D 객체 목록을 반환합니다.

설치

다음은 다음과 같습니다.wing toTestNg DataProviders 기능을 사용하는 데 필요한 ols:

  1. 자바
  2. 셀레니움
  3. Eclipse IDE
  4. 테스트NG

1 : Java 설치

TestNG를 실행하려면 Java Development Kit(JDK) 8.0 이상이 필요합니다. 이 링크를 방문하여 Java를 다운로드하여 컴퓨터에 설치하세요.

https://www.oracle.com/in/java/technologies/javase-downloads.html

Java SE 14.0.2가 최신 버전입니다. 실행 파일을 다운로드하고 두 번 클릭하여 소프트웨어를 설치하세요.

2단계: 환경 변수 구성

Java를 설치한 후에는 시스템의 Java 경로를 지정해야 합니다. 경로 지정 방법은 다음과 같습니다. 시스템 -> 고급 시스템 속성 -> 고급 -> 환경 변수를 엽니다.

데이터 제공자 테스트

'사용자에 대한 사용자 변수'에 다음을 입력합니다.

  • C:Program FilesJavajdk-14.0.2

시스템 변수 경로에 bin 폴더 경로를 입력하세요.

  • C:Program FilesJavajdk-14.0.2bin

이제 Java를 사용할 준비가 되었습니다.

3단계: Eclipse 설치

Java 스크립트를 만들고 편집하려면 Java IDE가 필요합니다. Eclipse와 IntelliJ는 Java용으로 널리 사용되는 두 가지 IDE입니다. Eclipse를 설치하려면 다음 링크를 방문하세요.

https://www.eclipse.org/downloads/

최신 버전은 Eclipse IDE 2020-06입니다. 소프트웨어를 다운로드한 후 두 번 클릭하여 설치하세요.

이클립스 테스트 제공업체

Eclipse에는 여러 버전이 있습니다. 'Eclipse for Java Developers'를 선택하고 설치를 진행하세요.

이클립스 테스트 데이터 제공자

설치가 완료되면 IDE를 엽니다. IDE를 열 때마다 작업 공간 폴더를 선택하라는 메시지가 표시됩니다. 기본 위치를 그대로 사용하거나 새 위치를 선택할 수 있습니다.

작업 공간 테스트 데이터 제공자

Eclipse를 처음 실행하면 시작 화면이 표시됩니다. 이제 IDE를 사용할 준비가 되었습니다.

이클립스 테스트 데이터 제공자

4단계: Selenium 설치

Selenium은 최근 큰 인기를 얻고 있는 오픈소스 테스트 자동화 프레임워크입니다. Selenium 소프트웨어를 다운로드하려면 다음 링크를 방문하세요.

https://www.selenium.dev/downloads/

jar 파일로 제공되는 Selenium Standalone Server를 다운로드하세요. 최신 안정 버전은 3.141.59입니다. 설치할 필요 없이 컴퓨터에 저장하기만 하면 됩니다.

5단계: TestNG 설치

이전 버전의 Eclipse에서는 TestNG가 Eclipse Marketplace에서 제공되었습니다. "설치" 버튼을 클릭하고 TestNG를 Eclipse에 추가하기만 하면 됩니다. 최신 버전에서는 TestNG를 직접 다운로드하여 라이브러리 파일로 추가해야 합니다. TestNG를 다운로드하려면 다음 링크를 방문하세요.

https://dl.bintray.com/testng-team/testng-eclipse-release/

압축 링크를 클릭하고 최신 버전을 선택한 후 파일을 장치에 저장하세요.

데이터 제공자 테스트 zip

Eclipse에 TestNG를 추가하려면 IDE를 열고 '새 소프트웨어 설치'를 클릭하세요. 다음 화면에서 '추가'를 클릭하고 파일을 직접 추가하세요.

혹은 TestNG 링크를 직접 제공하여 도구가 자동으로 파일을 다운로드하도록 할 수도 있습니다.

데이터 제공업체에서 사용 가능한 소프트웨어 테스트

TestNG를 선택하고 다음을 클릭한 후 라이선스 계약에 동의하고 마침을 클릭하세요. Eclipse를 다시 시작하여 TestNG 구성 절차를 완료하세요.

TestNG가 제대로 설치되었는지 확인하려면 Ctrl+N을 클릭하고 TestNG가 나열되어 있는지 확인하세요.

데이터 제공자 테스트 마법사

이제 TestNG를 사용할 준비가 되었습니다.

TestNG DataProviders를 사용한 첫 번째 테스트

이제 모든 도구가 설치되었으므로 TestNG DataProviders가 어떻게 작동하는지 확인하기 위해 첫 번째 테스트를 실행해 보겠습니다.

Eclipse IDE를 열고 새로 만들기 -> Java 프로젝트를 클릭하세요. 프로젝트 이름을 입력하고 다음을 클릭하세요.

새 프로젝트

다음 화면에서 라이브러리를 클릭하고 '외부 jar 추가'를 클릭합니다.

외부 항아리

Selenium Standalone Server jar 파일을 선택하고 확인을 클릭하세요. Selenium이 프로젝트에 추가됩니다.

이제 '라이브러리 추가'를 클릭하고 다음 화면에서 TestNG를 선택하여 프로젝트에 TestNG를 추가합니다.

라이브러리 추가

Java 런타임 환경과 함께 Selenium과 TestNG가 프로젝트에 추가됩니다.

새로 만들기 -> 패키지를 클릭하여 새 패키지를 만듭니다.

새로운 패키지

해당 패키지에 새 클래스를 만듭니다. 예: ExperitestDataProviders.java

이제 클래스에 다음 코드를 추가하세요. 이 코드에는 TestNG DataProviders가 포함되어 있습니다.

[java] 패키지 ExperitestDataProviders; org.testng.annotations.DataProvider 가져오기; org.testng.annotations.Test 가져오기; public class ExperitestTestNGDP { @DataProvider (name = "Experitest-DataProvider") public Object[][] ExperitestDPMethod(){ return new Object[][] {{"Experitest1"}, {"Experitest2"}, {"Experitest3"}, {"Experitest4"}, {"Experitest5"}}; } @Test (dataProvider = "Experitest-DataProvider") public void ExperiTest (String val) { System.out.println("전달된 매개변수는 : " + val입니다); } } [/java]

  • 여기서는 'Experitest-DataProvider'라는 이름의 데이터 공급자를 정의하고 5개의 값(Experitest1, Experitest2 등)을 제공했습니다.
  • 테스트(@Test) 중에 데이터 제공자에게 전화를 걸었습니다.
  • 우리는 문자열 매개변수를 갖는 메서드를 작성하고 값을 'val'에 저장했습니다.
  • 테스트 케이스는 문자열 값을 가져와서 출력합니다.

이 테스트 케이스를 한 번 실행하면 5번 실행되고, 매번 문자열 값이 하나씩 출력됩니다. 따라서 DataProviders 기능을 사용하면 하나의 테스트 케이스를 여러 번 실행한 셈입니다.

데이터 제공자 테스트

이는 5개의 테스트가 실행되었고 5개의 테스트가 통과되었음을 보여주는 출력입니다.

변수 테스트

SeeTest 클라우드 데모

SeeTest Cloud에서 실행되는 또 다른 테스트 데모입니다. 이 테스트 케이스는 클라우드에서 웹 브라우저를 열고 해당 브라우저에서 Google 웹사이트를 엽니다. 그런 다음 검색창에 'Experitest'를 입력하고 해당 키워드로 웹을 검색합니다. 그런 다음 Google 사이트를 다시 열고 'SeeTest' 키워드를 검색합니다. 여기서는 테스트 케이스를 하나만 작성했지만, 테스트 케이스에 두 개의 값을 제공하는 'Experitest-DataProvider'라는 TestNG 데이터 공급자를 정의했습니다.

[java] @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } [/java]

따라서 데이터 제공자 기능을 사용하면 단일 테스트 사례를 두 번 실행하게 됩니다.

다음은 코드입니다 :

[자바] 패키지 ExperitestDataProviders; org.openqa.selenium.* 가져오기; org.openqa.selenium.remote.BrowserType 가져오기; org.openqa.selenium.remote.CapabilityType 가져오기; org.openqa.selenium.remote.DesiredCapabilities 가져오기; org.openqa.selenium.remote.RemoteWebDriver 가져오기; org.openqa.selenium.support.ui.ExpectedConditions 가져오기; org.openqa.selenium.support.ui.WebDriverWait 가져오기; org.testng.annotations.AfterMethod 가져오기; org.testng.annotations.BeforeMethod 가져오기; org.testng.annotations.DataProvider 가져오기; org.testng.annotations.Test 가져오기; java.net.URL 가져오기; public class DPexample { private String host = “https://cloud.seetest.io”; private static final String ACCESS_KEY = “여기에 액세스 키를 입력하세요”; private RemoteWebDriver driver; private URL url; private DesiredCapabilities dc = new DesiredCapabilities(); @DataProvider (name = “Experitest-DataProvider”) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest”}, {“SeeTest”}}; } @BeforeMethod public void setUp() throws Exception { url = new URL(“https://cloud.seetest.io/wd/hub”); dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME); dc.setCapability(CapabilityType.PLATFORM, Platform.ANY); dc.setCapability(“accessKey”, ACCESS_KEY); dc.setCapability(“testName”, “빠른 시작 Chrome 브라우저 데모”); 드라이버 = 새 RemoteWebDriver(url, dc); } @Test (dataProvider = "Experitest-DataProvider") public void ExperiTest (String val) { driver.get("https://www.google.com"); new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.name("q"))); WebElement searchBar = driver.findElement(By.name("q")); searchBar.click(); searchBar.sendKeys(val); searchBar.sendKeys(Keys.ENTER); } @AfterMethod public void tearDown() { System.out.println("보고서 URL: "+ driver.getCapabilities().getCapability("reportUrl")); driver.quit(); } } [/java]

결과는 다음과 같습니다.

결과

SeeTest는 포괄적인 웹 및 모바일 테스트 자동화 도구입니다. 직관적인 대시보드에서 테스트를 쉽게 실행하고 관리할 수 있습니다. 또한 테스트를 쉽게 분석할 수 있는 강력한 보고 도구도 제공합니다.

데모 테스트 보고서는 다음과 같습니다.

시험 보고서

테스트 세부 사항은 다음과 같습니다.

빠른 시작

제품 개요

DataProviders는 테스터가 단일 테스트 케이스를 작성하고 미리 정의된 데이터셋 값을 사용하여 여러 번 실행할 수 있는 편리한 기능입니다. 또한 단일 데이터셋을 사용하여 여러 메서드를 실행할 수 있습니다. TestNG DataProviders는 데이터 기반 테스트를 간편하고 쉽게 수행할 수 있도록 해줍니다. SeeTest 플랫폼을 사용하면 TestNG DataProviders 기능을 최대한 활용하여 다양한 데이터셋으로 테스트 케이스를 쉽게 실행하고 맞춤형 보고서를 생성할 수 있습니다.

가이 아리엘리 - CTO (최고 기술 담당자)

당신은 또한 좋아할 거라