최고 50 TestNG 면접 질문 및 답변 (2026)

인기 TestNG 면접 질문 및 답변

준비 중 TestNG 면접을 준비하고 계신가요? 그렇다면 당신의 강점을 부각할 수 있는 질문들을 생각해 볼 때입니다. 탄탄한 면접 준비는 필수입니다. TestNG 면접의 기본기를 탄탄히 갖추면 채용 담당자들이 중요하게 여기는 깊이, 자신감, 그리고 준비성을 보여줄 수 있습니다.

이 분야의 기회는 자동화 성장, 진화하는 프레임워크, 그리고 기술적 및 전문적 경험을 요구하는 실용적인 테스트 애플리케이션에 걸쳐 있습니다. 이 분야에서 일하려면 도메인 전문 지식, 분석 능력, 그리고 유연한 기술 역량이 필요하며, 이는 신입, 중간 경력, 그리고 경력직 전문가 모두에게 기술적, 기초적, 고급적 영역에 걸쳐 자주 묻는 질문과 답변을 해결하는 데 도움이 됩니다.
자세히보기 ...

👉 무료 PDF 다운로드: TestNG 면접 질문 및 답변

인기 TestNG 면접 질문 및 답변

1) 무엇입니까 TestNG 그렇다면 자동화 테스트에서 왜 사용되는 걸까요?

TestNG (Test Next Generation)은 다음에서 영감을 받은 테스트 프레임워크입니다. JUnit NUnit과 유사하지만 그룹화, 시퀀싱, 파라미터화 및 종속성 관리와 같은 고급 기능을 추가하여 향상되었습니다. 주로 자동화 테스트에서 테스트 실행을 간소화하고, 테스트 구성을 개선하며, 상세한 HTML 및 XML 보고서를 생성하는 데 사용됩니다.

주요 이점 TestNG 과 같습니다 :

  • 지원 병렬 테스트 실행이를 통해 전체 실행 시간을 줄일 수 있습니다.
  • 제공 주석 테스트 흐름을 효과적으로 제어합니다.
  • 제공 데이터 기반 테스트 를 통해 @DataProvider 주석.
  • 생성 맞춤형 보고서 디버깅을 더 잘하기 위해서입니다.

예를 들어, TestNG 테스트 코드를 수정하지 않고도 스모크 테스트, 회귀 테스트, 통합 테스트 그룹을 독립적으로 실행할 수 있어 대규모 자동화 스위트에서 유연성과 확장성을 제공합니다.


2) 설명하세요 TestNG 어노테이션을 사용한 생명주기와 어노테이션의 실행 순서.

The TestNG 라이프사이클은 테스트가 초기화, 실행 및 종료되는 방식을 정의합니다. 이는 테스트 흐름에 구조와 명확성을 제공하는 어노테이션을 통해 제어됩니다.

주석 기술설명 실행 순서
@BeforeSuite 테스트 스위트 내의 모든 테스트보다 먼저 실행됩니다. 1
@BeforeTest 실행 전 <test> XML의 태그 2
@BeforeClass 현재 클래스의 첫 번째 메서드보다 먼저 실행됩니다. 3
@BeforeMethod 각 테스트 메서드 전에 실행됩니다. 4
@Test 실제 테스트 로직이 포함되어 있습니다. 5
@AfterMethod 각 테스트 메서드 실행 후 실행됩니다. 6
@AfterClass 클래스 내의 모든 메서드 실행 후에 실행됩니다. 7
@AfterTest 이후 실행 <test> XML의 태그 8
@AfterSuite 제품군의 모든 테스트 후에 실행됩니다. 9

이러한 체계적인 순서는 예측 가능한 테스트 설정 및 해제를 보장하며, 이는 테스트 독립성을 유지하는 데 매우 중요합니다.


3) 어때요? TestNG 다른 JUnit?

두 프레임워크 모두 단위 테스트에 사용되지만, TestNG 더욱 강력한 구성 및 병렬 실행 기능을 제공합니다.

특색 JUnit TestNG
병렬 실행 제한된 지원 완벽한 지원
주석 보다 적은 (@Before, @After) 더 리처(@BeforeSuite, @DataProvider)
의존성 관리 사용할 수 없음 사용 가능 dependsOnMethods
그룹화 지원되지 않음 지원됨 groups
매개변수화 외부 러너를 통해 XML을 통해 내장되거나 @DataProvider

요약하자면, TestNG 선호됩니다 기업 수준의 자동화 테스트 그리고 다음과 같은 도구와의 통합 Selenium, 동안 JUnit 간단한 단위 테스트에 적합합니다.


4) 무엇입니까? TestNG 주석은 무엇이며, 어떻게 유용하게 사용될까요?

주석 TestNG 밝히다 시험 방법의 구조와 동작이러한 방식은 코드 내에서 직접 선언적 테스트 제어를 제공함으로써 복잡한 XML 구성의 필요성을 없애줍니다.

일반적으로 사용되는 주석은 다음과 같습니다.

  • @BeforeSuite, @BeforeTest, @BeforeClass, @BeforeMethod
  • @Test
  • @AfterMethod, @AfterClass, @AfterTest, @AfterSuite

예:

@BeforeMethod
public void setup() {
    System.out.println("Initializing browser...");
}

@Test
public void verifyLogin() {
    System.out.println("Executing login test...");
}

이를 통해 개발자는 테스트 실행을 논리적으로 구성하여 설정, 테스트 실행 및 해제가 정의된 순서대로 이루어지도록 할 수 있습니다.


5) 그룹화의 개념을 설명하세요 TestNG.

그룹화 TestNG 테스트를 "스모크 테스트", "회귀 테스트", "건전성 검증"과 같이 더 작고 관리하기 쉬운 세트로 논리적으로 분류할 수 있습니다.

예:

@Test(groups = {"Smoke"})
public void loginTest() { ... }
@Test(groups = {"Regression"})
public void paymentTest() { ... }

XML 스위트를 구성하여 특정 그룹을 실행할 수 있습니다.

<groups>
  <run>
    <include name="Smoke"/>
  </run>
</groups>

이점:

  • 테스트 케이스를 선택적으로 실행할 수 있도록 지원합니다.
  • CI/CD 파이프라인의 유연성을 향상시킵니다.
  • 증분 빌드 중 실행 시간을 절약합니다.

6) 파라미터화는 어떻게 구현할 수 있을까요? TestNG?

파라미터화를 통해 데이터 기반 테스트가 가능해지며, 여러 입력 데이터 세트를 사용하여 테스트를 실행할 수 있습니다. TestNG 두 가지 주요 방법을 지원합니다.

  1. 사용 @Parameters XML을 사용한 주석:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. 사용 @DataProvider:
  4. @DataProvider(name="loginData")
    public Object[][] getData() {
      return new Object[][] {{"user1","pass1"}, {"user2","pass2"}};
    }
    
    @Test(dataProvider="loginData")
    public void loginTest(String user, String pass) { ... }
    

이러한 유연성 덕분에 다양한 환경이나 구성에서 대규모 테스트 세트를 더 쉽게 유지 관리하고 실행할 수 있습니다.


7) 종속성이란 무엇인가요? TestNG 그렇다면 그것들은 어떻게 관리되는가?

종속성 TestNG 다른 테스트 결과를 기반으로 테스트 실행 순서를 제어합니다. dependsOnMethods or dependsOnGroups 속성.

예:

@Test
public void loginTest() { ... }

@Test(dependsOnMethods = {"loginTest"})
public void verifyDashboard() { ... }

종속 메서드가 실패하면 후속 테스트는 자동으로 건너뛰어집니다.

이 메커니즘은 잘못된 테스트 실행을 방지하고 유지 관리를 지원합니다. 논리적 테스트 무결성특히 로그인 → 작업 수행 → 결과 확인과 같은 여러 단계로 이루어진 기능 흐름에 유용합니다.


8) 실행하는 다양한 방법은 무엇입니까? TestNG 테스트?

TestNG 테스트는 테스트 환경에 따라 여러 가지 유연한 방식으로 실행할 수 있습니다.

  1. IDE에서 (Eclipse/IntelliJ): 수업을 마우스 오른쪽 버튼으로 클릭하거나 XML fileRun asTestNG Test.
  2. 명령줄에서: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. 빌드 도구 사용:
    • 메이븐 : 구성 surefire-plugin in pom.xml.
    • Gradle: testng 종속성 및 작업 구성.
  4. CI/CD 파이프라인을 통해: Jenkins 또는 GitHub Actions와 통합되어 자동 실행이 가능합니다.

이러한 다양성은 개발, 테스트 및 운영 환경 전반에 걸쳐 호환성을 보장합니다.


9) 무엇입니까? TestNG 청취자는 왜 중요한가?

청취자 TestNG 테스트 시작, 성공, 실패 또는 건너뛰기와 같은 테스트 실행 이벤트를 모니터링하여 테스트 동작을 사용자 지정할 수 있는 기능을 제공합니다.

공통 청취자:

  • ITestListener테스트 메서드 수준의 이벤트를 추적합니다.
  • ISuiteListener스위트 수준 이벤트를 관찰합니다.
  • IReporter사용자 지정 보고서를 생성합니다.

예:

public class CustomListener implements ITestListener {
  public void onTestFailure(ITestResult result) {
    System.out.println("Test Failed: " + result.getName());
  }
}

청취자는 종종 듣기에 사용됩니다. 실패 시 스크린샷, 생성 사용자 지정 로그보고 도구와의 통합 Allure나 ExtentReports처럼요.


10) 사용의 장점과 단점은 무엇입니까? TestNG?

아래 장점 단점
유연성 그룹화, 종속성 및 병렬 실행을 지원합니다. 대규모 제품군을 위한 복잡한 XML 설정
통계 보고서 상세한 HTML 및 XML 보고서를 제공합니다. 청취자 없이 제한적인 맞춤 설정
통합 원활하게 작동 Selenium 및 CI/CD 도구 약간 더 높은 학습 곡선
매개변수화 데이터 기반 테스트를 위한 내장 지원 기능 대규모 데이터 세트의 경우 유지 관리가 필요합니다.

전반적으로, TestNG 이 프레임워크는 구성 오버헤드가 적으면서도 최신 자동화 테스트 환경에 적합한 견고하고 유연한 프레임워크입니다.


11) 테스트 케이스의 우선순위를 어떻게 정할 수 있나요? TestNG?

TestNG 제공 priority 속성의 @Test 테스트 메서드의 실행 순서를 정의하는 어노테이션입니다. 우선순위 값이 낮은 테스트가 먼저 실행됩니다.

예:

@Test(priority = 1)
public void loginTest() { ... }

@Test(priority = 2)
public void dashboardTest() { ... }

우선순위가 지정되지 않은 경우 기본값은 다음과 같습니다. 0그리고 메서드는 알파벳 순서대로 실행됩니다.

최고의 연습: 우선순위 값은 신중하게 사용해야 합니다. 과도하게 사용하면 테스트 순서가 경직될 수 있습니다. 복잡한 흐름의 경우 종속성 관리(dependsOnMethods)는 엄격한 우선순위 지정보다 유지 관리가 더 쉽습니다.


12) 병렬 실행의 개념과 활용법을 설명하시오. TestNG.

병렬 실행 TestNG 여러 테스트, 클래스 또는 메서드를 동시에 실행할 수 있어 전체 실행 시간을 크게 단축합니다.

이 기능은 다음에서 활성화할 수 있습니다. testng.xml 파일 :

<suite name="ParallelSuite" parallel="tests" thread-count="3">
  <test name="Test1">...</test>
  <test name="Test2">...</test>
</suite>

지원되는 병렬 모드:

  • tests
  • classes
  • methods
  • instances

장점:

  • 피드백 주기가 더 빨라집니다.
  • 멀티코어 프로세서의 효율적인 활용.
  • 대규모 자동화 제품군을 위한 확장성.

하지만 반드시 확인하십시오 스레드 안전성 WebDriver나 데이터베이스 연결과 같은 공유 리소스를 사용할 때.


13) 데이터 제공업체란 무엇인가요? TestNG이것들은 매개변수와 어떻게 다른가요?

@DataProvider데이터 기반 테스트 여러 데이터 세트를 테스트 방법에 제공함으로써.

예:

@DataProvider(name="credentials")
public Object[][] data() {
    return new Object[][] {{"user1", "pass1"}, {"user2", "pass2"}};
}

@Test(dataProvider="credentials")
public void login(String username, String password) { ... }

@Parameters와 @DataProvider의 차이점:

특색 @Parameters @DataProvider
데이터 소스 XML 파일 Java 방법
데이터 형식 단일 데이터 세트 여러 데이터 세트
유연성 Less 높음
적용 사례 환경 변수 반복적인 데이터 기반 테스트

금후, @DataProvider 여러 데이터 세트를 사용하여 단일 테스트를 실행할 때, 예를 들어 여러 자격 증명으로 로그인을 확인할 때 이 방법이 선호됩니다.


14) 테스트를 비활성화하거나 건너뛰려면 어떻게 해야 하나요? TestNG?

테스트를 비활성화할 수 있습니다. TestNG 를 사용하여 enabled 속성을 지정하거나 프로그램적으로 건너뛸 수 있습니다.

1. 사용 enabled = false:

@Test(enabled = false)
public void skipTest() {
    System.out.println("This test will not run.");
}

2. 런타임 중 건너뛰기 SkipException:

@Test
public void conditionalSkip() {
    throw new SkipException("Skipping this test due to condition.");
}

비활성화는 다음과 같은 경우에 유용합니다. 일시적으로 비활성화 불안정하거나 불완전한 테스트는 삭제하지 않고 건너뛰는 것이 좋습니다. 건너뛰기는 다음과 같은 경우에 유용합니다. 런타임 조건지원되지 않는 브라우저에 대한 테스트를 건너뛰는 것과 같은 방식입니다.


15) testng.xml 파일의 역할은 무엇이며, 주요 구성 요소는 무엇입니까?

The testng.xml 이 파일은 설정의 핵심입니다. TestNG이는 테스트 스위트, 테스트 그룹, 매개변수 및 병렬 실행 설정을 정의합니다.

구조 예:

<suite name="AutomationSuite">
  <parameter name="browser" value="chrome"/>
  <test name="RegressionTests">
    <classes>
      <class name="com.test.LoginTest"/>
      <class name="com.test.PaymentTest"/>
    </classes>
  </test>
</suite>

주요 구성 요소 :

  • <suite> – 전체 제품군을 정의합니다.
  • <test> – 테스트 블록을 나타냅니다.
  • <classes> – 테스트 클래스 목록입니다.
  • <methods> – 특정 테스트 방법을 필터링합니다.
  • <parameter> – 전역 또는 테스트 수준 매개변수를 제공합니다.

XML 파일은 다음과 같은 내용을 제공합니다. 중앙 집중식 제어 코드 변경 없이 과도하게 실행하는 것.


16) 보고서를 생성하는 방법은 무엇입니까? TestNG?

TestNG 자동 생성 두 가지 유형의 보고서:

  1. HTML 보고서 (test-output/index.html) – 통과, 실패 및 건너뛴 테스트를 요약합니다.
  2. XML 보고서 – CI/CD 도구와의 통합에 사용됩니다.

고급 보고 기능을 사용하려면, TestNG 다음과 통합:

  • 범위 보고서 – 그래픽 대시보드와 상세 로그를 제공합니다.
  • 얼루어 리포트 – 테스트 단계, 스크린샷 및 로그를 포함한 시각적 분석 기능을 제공합니다.

통합 예시:

ExtentReports extent = new ExtentReports();
ExtentTest test = extent.createTest("Login Test");
test.pass("Test Passed Successfully");
extent.flush();

이러한 보고서는 추세를 추적하고 테스트 범위의 취약점을 파악하는 데 필수적입니다.


17) 공장은 어디에 있나요? TestNG, 어떻게 작동하나요?

공장 TestNG 만드는 데 사용됩니다 테스트 클래스의 동적 인스턴스이 기능들을 사용하면 테스트를 실행하기 전에 매개변수화된 클래스 인스턴스를 생성할 수 있습니다.

예:

public class FactoryExample {
  private String browser;

  public FactoryExample(String browser) {
    this.browser = browser;
  }

  @Factory
  public static Object[] factoryMethod() {
    return new Object[] { new FactoryExample("Chrome"), new FactoryExample("Firefox") };
  }

  @Test
  public void testBrowser() {
    System.out.println("Running test on: " + browser);
  }
}

장점:

  • 사용함 매개변수화된 객체 생성.
  • 이상적인 측정 대상 브라우저 간 테스트다중 환경 실행.
    팩토리는 메서드 수준의 데이터 변형뿐 아니라 다양한 객체 구성이 필요할 때 데이터 제공자를 보완합니다.

18) 어설션을 어떻게 사용할 수 있나요? TestNG?

어설션은 테스트 메서드 내에서 예상 결과와 실제 결과를 비교하여 유효성을 검증하는 데 사용됩니다.

어설션의 종류:

  1. 하드 어설션(Assert 클래스):
    테스트 실패 시 즉시 테스트 실행을 중지합니다.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. 소프트 어설션(SoftAssert 클래스):
    오류 발생 후에도 실행을 계속하며, 마지막에 모든 문제를 보고합니다.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. 사용시기 :
    • 명확한 주장을 사용하세요 핵심 검증 로그인 성공과 같은 경우입니다.
    • 소프트 어설션을 사용하세요 다중 검증 단일 테스트 방법 내에서.

19) @BeforeMethod와 @BeforeClass의 차이점을 설명하세요. TestNG.

아래 @BeforeMethod @BeforeClass
실행 실행 각각 전에 시험 방법 실행 한 번 전에 클래스 내의 어떤 메서드
범위 테스트 방법별 테스트 클래스별
공통 사용 모든 테스트 전에 브라우저를 초기화합니다. 구성 또는 브라우저 설정을 한 번 로드합니다.

예:

@BeforeClass
public void setupClass() {
    System.out.println("Executed once per class");
}

@BeforeMethod
public void setupMethod() {
    System.out.println("Executed before each method");
}

@BeforeMethod 각 테스트마다 깨끗한 환경이 필요할 때, @BeforeClass 재사용 가능한 무거운 초기화 작업에 사용합니다.


20) 어떻게 TestNG 의존성 주입을 지원하는 방법과 그 사용 사례는 무엇인가요?

TestNG 지원 의존성 주입 컨텍스트 및 구성 객체의 내장 주입을 통해 다음과 같은 기능을 제공합니다. ITestContext, XmlTestMethod.

예:

@Test
public void testContextExample(ITestContext context) {
    System.out.println("Suite Name: " + context.getSuite().getName());
}

사용 사례:

  • 테스트 매개변수를 동적으로 가져옵니다.
  • 스위트 이름이나 병렬 실행 설정과 같은 구성 정보에 액세스합니다.
  • 하드코딩된 의존성 없이 테스트 유연성을 향상시킵니다.

의존성 주입을 통해 개발자는 다음과 같은 작업을 수행할 수 있습니다. 모듈화되고 상황 인식이 가능한 테스트를 작성하세요. 환경 변화에 동적으로 적응하는.


21) @Factory와 @DataProvider의 차이점은 무엇인가요? TestNG?

모두 @Factory@DataProvider 매개변수화에 도움이 되지만, 그들은 다음과 같은 방식으로 작동합니다. 다른 수준 테스트 아키텍처에서.

특색 @Factory @DataProvider
범위 수업 수준 방법 수준
목적 서로 다른 데이터를 가진 클래스의 인스턴스를 여러 개 생성합니다. 단일 테스트 방법에 데이터를 제공합니다.
실행 각 인스턴스에 대해 클래스 전체를 실행합니다. 하나의 메서드를 여러 번 실행합니다.
이상적인 사용 사례 크로스 브라우저 또는 환경 테스트 데이터 기반 기능 테스트

예:

  • 공장 : 브라우저 종류별로 전체 클래스를 실행합니다.
  • 데이터 제공자: 여러 데이터 세트를 사용하여 하나의 테스트 메서드를 실행합니다.

@Factory 객체 인스턴스화 자체가 다를 때, @DataProvider 동일한 객체 인스턴스 내에서 기능적 입력 변형을 위한 것입니다.


22) 실패한 테스트 케이스를 자동으로 재시도하는 방법은 무엇인가요? TestNG?

TestNG 메커니즘을 제공합니다 실패한 테스트 케이스를 다시 실행합니다. 를 사용하여 IRetryAnalyzer 인터페이스.

구현 예시:

public class RetryAnalyzer implements IRetryAnalyzer {
  int count = 0;
  int maxTry = 2;

  public boolean retry(ITestResult result) {
    if (count < maxTry) {
      count++;
      return true;
    }
    return false;
  }
}

용법:

@Test(retryAnalyzer = RetryAnalyzer.class)
public void testLogin() {
   Assert.fail("Intentional Failure");
}

이점:

  • CI 파이프라인의 불안정성을 줄여줍니다.
  • 일시적인 네트워크 또는 환경 문제를 처리합니다.

최고의 연습: 간헐적인 오류를 디버깅하려면 재시도 로직을 적절한 로깅 및 스크린샷과 결합하십시오.


23) ITestContext는 무엇에 사용됩니까? TestNG?

ITestContext 제공 컨텍스트 정보 테스트 실행에 대한 정보(스위트 이름, 테스트 이름, 출력 디렉터리 및 매개변수 포함)입니다.

예:

@Test
public void contextExample(ITestContext context) {
    System.out.println("Suite: " + context.getSuite().getName());
}

주요 방법:

  • getSuite() - 스위트 수준 정보를 검색합니다.
  • getName() – 테스트 이름을 반환합니다.
  • setAttribute() / getAttribute() – 테스트 간 데이터를 공유합니다.

그것은 가능하게한다 테스트 메서드 또는 클래스 간 데이터 공유 또한 동적 보고 및 로깅을 용이하게 합니다.


24) 테스트 그룹 간의 종속성을 어떻게 생성할 수 있습니까? TestNG?

그룹 간 종속성은 다음을 사용하여 정의할 수 있습니다. dependsOnGroups 속성의 @Test 주석.

예:

@Test(groups = "Login")
public void login() { ... }

@Test(dependsOnGroups = "Login")
public void verifyProfile() { ... }

이렇게 하면 verifyProfile 그룹 실행은 모든 테스트가 완료된 경우에만 실행됩니다. Login 그룹 통과에 성공했습니다.

특히 다음과 같은 경우에 유용합니다. 통합 테스트여기서 모듈은 다른 모듈의 성공적인 실행에 의존합니다(예: 로그인 → 프로필 → 로그아웃 흐름).


25) 테스트에서 특정 테스트 방법을 무시하려면 어떻게 해야 합니까? TestNG XML 파일인가요?

당신은 명확하게 할 수 있습니다 제외 방법 XML 스위트 파일의 클래스 내에서 사용 <exclude> 태그.

예:

<class name="com.test.LoginTests">
  <methods>
    <exclude name="verifyLogout"/>
  </methods>
</class>

이를 통해 테스터는 특정 메서드를 일시적으로 비활성화합니다. 수정하지 않고 Java 소스 코드 - 릴리스 주기 또는 스프린트 우선순위에 따라 동적으로 포함 또는 제외해야 하는 대규모 제품군에서 유용합니다.


26) 어떻게 할 수 있나요? TestNG 통합되다 Selenium 웹드라이버?

TestNG 및 Selenium UI 자동화를 위한 강력한 조합을 형성합니다.

일반적인 통합 설정에는 어노테이션을 사용하여 테스트를 구성하고, 설정/해제를 관리하고, XML 또는 CI 도구를 통해 테스트를 실행하는 과정이 포함됩니다.

예:

@BeforeMethod
public void setup() {
    driver = new ChromeDriver();
}

@Test
public void verifyTitle() {
    driver.get("https://example.com");
    Assert.assertEquals(driver.getTitle(), "Example Domain");
}

@AfterMethod
public void teardown() {
    driver.quit();
}

통합 이점:

  • 사용함 병렬 브라우저 테스트.
  • 단순화 테스트 그룹화 및 보고.
  • 원활하게 작동 CI / CD 파이프 라인 Jenkins나 GitHub Actions 같은 것들 말이죠.

27) 사용 시 몇 가지 모범 사례는 무엇입니까? TestNG 대규모 자동화 프레임워크에서요?

모범 사례:

  1. Descriptive 네이밍: 테스트 이름은 구현 방식이 아닌 동작을 기준으로 지정하세요.
  2. 레버리지 그룹화: 논리적인 테스트 그룹(스모킹, 회귀 테스트 등)을 생성합니다.
  3. 하드코딩을 피하세요: 테스트 데이터로는 파라미터 파일이나 속성 파일을 사용하세요.
  4. 종속성 최소화: 가능한 한 테스트 케이스는 서로 독립적이어야 합니다.
  5. 구성 중앙 집중화: testng.xml 스위트룸 설정을 위해.
  6. 보고서 통합: 리스너 또는 ExtentReports와 같은 타사 도구를 사용하십시오.
  7. 재시도 로직은 신중하게 사용하십시오: 진정한 결함을 감추려 하지 마십시오.

이러한 사항을 준수하면 확실히 보장됩니다. 확장성, 유지보수성 및 가독성 기업 수준의 자동화 분야에서.


28) @BeforeTest와 @BeforeSuite의 차이점은 무엇인가요? TestNG?

특색 @BeforeTest @BeforeSuite
범위 각 실행 전에 <test> XML의 태그 전체 스위트 실행 전에 한 번 실행됩니다.
진동수 여러 번 (여러 번인 경우) <test> 블록) 스위트룸당 한 번만 사용 가능
공통 사용 테스트 레벨 구성을 초기화합니다. 글로벌 리소스를 설정하세요

예:

@BeforeSuite
public void setupSuite() {
    System.out.println("Global setup for suite.");
}

@BeforeTest
public void setupTest() {
    System.out.println("Setup for each <test> tag.");
}

@BeforeSuite 을 통한 전역 구성 (예: 데이터베이스 연결) 및 @BeforeTest 을 통한 테스트별 초기화.


29) 캔 TestNG API 테스트에 사용할 수 있나요? 어떻게 사용하나요?

예. TestNG 효과적으로 사용할 수 있습니다 API 테스트 HTTP 클라이언트 라이브러리와 통합함으로써 안심하세요 or Http클라이언트.

예:

@Test
public void verifyApiResponse() {
    Response response = RestAssured.get("https://api.example.com/users");
    Assert.assertEquals(response.getStatusCode(), 200);
}

장점:

  • 사용함 어설션 기반 유효성 검사 응답의.
  • 지원 매개변수화데이터 기반 테스트 여러 엔드포인트에 대해.
  • 생성 구조화된 보고서 REST API 유효성 검사를 위해.

결합하여 TestNG RestAssured를 사용하면 테스터는 UI 테스트와 API 테스트 모두에 대해 통합된 자동화 프레임워크를 유지할 수 있습니다.


30) 명령줄에서 매개변수를 전달하는 방법은 무엇입니까? TestNG?

런타임에 시스템 속성을 전달하여 XML 매개변수를 재정의할 수 있습니다. -D 깃발.

명령 예:

mvn test -Dbrowser=chrome -Denv=staging

코드 예 :

@Parameters("browser")
@Test
public void launch(@Optional("firefox") String browser) {
    System.out.println("Running on: " + browser);
}

이를 통해 동적 환경 선택 구성 파일을 변경하지 않고 CI/CD 파이프라인에서 테스트 유연성을 향상시킵니다.


31) 테스트 실행 순서를 어떻게 제어할 수 있습니까? TestNG 우선순위를 사용하지 않고?

사용하는 대신 priority, TestNG 제어를 허용합니다 의존성XML 메서드 순서.

행동 양식:

  1. 사용 dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. XML 메서드 시퀀스 사용:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

최고의 연습: 복잡한 흐름에서는 고정된 우선순위 대신 논리적 종속성을 선호하여 견고하고 유지 관리하기 쉬운 테스트 스위트를 확보하십시오.


32) 명령줄에서 특정 테스트 메서드를 실행하는 방법은 무엇입니까? TestNG?

TestNG 수 메서드 수준 테스트 실행 XML 또는 Maven Surefire 구성을 사용하여 명령줄에서 직접 실행할 수 있습니다.

옵션 1: XML 파일 사용

<class name="com.test.LoginTests">
  <methods>
    <include name="verifyLogin"/>
  </methods>
</class>

옵션 2: 메이븐 명령어

mvn test -Dtest=com.test.LoginTests#verifyLogin

이 접근법은 선택적 실행개별 메서드를 디버깅하거나 빠른 빌드 중에 중요한 기능을 검증하는 데 유용합니다.


33) 외부 Excel 파일을 사용하여 테스트를 매개변수화하는 방법은 무엇입니까? TestNG?

엑셀 기반의 파라미터 설정은 테스트 데이터가 자주 변경되는 데이터 기반 프레임워크에서 흔히 사용됩니다.

구현 단계:

  1. 아파치 POI or 제이엑셀 엑셀 데이터를 읽으려면.
  2. 그것을 넣어주세요 @DataProvider 방법.

예:

@DataProvider(name = "excelData")
public Object[][] readExcel() throws Exception {
    FileInputStream fis = new FileInputStream("data.xlsx");
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet = wb.getSheetAt(0);
    Object[][] data = new Object[sheet.getLastRowNum()][2];
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
        data[i][0] = sheet.getRow(i + 1).getCell(0).getStringCellValue();
        data[i][1] = sheet.getRow(i + 1).getCell(1).getStringCellValue();
    }
    return data;
}

이를 통해 Excel에서 가져온 여러 실제 데이터 세트로 동일한 테스트 방법을 실행할 수 있으므로 유연성과 적용 범위가 향상됩니다.


34) 어떻게 실행할 수 있나요? TestNG Jenkins 또는 CI/CD 파이프라인에서 테스트를 수행해야 할까요?

TestNG 원활하게 통합 젠킨스, 깃랩 CIGitHub 액션 Maven을 통해 또는 Gradle 빌드.

Jenkins에서의 단계:

  1. 설치 메이븐 통합 플러그인.
  2. 만들기 프리스타일 또는 파이프라인 작업.
  3. 추가 mvn clean test 빌드 단계로.
  4. 빌드 후 HTML 보고서를 구성합니다.
    • 보고서 목록: test-output
    • 색인 파일: index.html

이점:

  • 자동화된 회귀 테스트를 가능하게 합니다.
  • 예약된 테스트 실행 및 추세 추적 기능을 제공합니다.
  • 다양한 환경에서 일관된 테스트 실행을 보장합니다.

35) @Parameters의 목적은 무엇이며, @Optional과는 어떻게 다른가요?

두 어노테이션 모두 파라미터화와 관련이 있지만, 목적은 서로 다릅니다.

특색 @Parameters @Optional
목적 XML 파일에서 매개변수를 전달합니다. 매개변수가 누락된 경우 기본값을 제공합니다.
선언 XML과 함께 사용됨 <parameter> 테스트 메서드 내부에서 사용됨
행동 값이 누락되면 오류가 발생합니다. 대체 값을 사용합니다

예:

@Test
@Parameters("browser")
public void runTest(@Optional("chrome") String browser) {
    System.out.println("Running on: " + browser);
}

사용 @Optional 보장 안정성 테스트 XML 구성이 불완전한 경우.


36) 서로 다른 클래스 간의 테스트 종속성을 어떻게 처리하나요? TestNG?

클래스 간 종속성을 생성하려면, TestNG 사용을 허용합니다 dependsOnGroups 속성을 사용하지 않는 것입니다.

예:

@Test(groups = "Login")
public void loginTest() { ... }

@Test(groups = "Dashboard", dependsOnGroups = "Login")
public void dashboardTest() { ... }

이 접근 방식은 관리에 도움이 됩니다. 다중 모듈 종속성 여기서 각 클래스는 모듈(로그인, 대시보드, 결제 등)을 나타냅니다.

이는 종속 모듈이 필수 테스트가 성공한 경우에만 실행되도록 보장하여 테스트의 무결성을 유지합니다.


37) 구성 오류란 무엇입니까? TestNG그렇다면 이러한 문제들은 어떻게 해결할 수 있을까요?

설정 또는 해제 메서드에 어노테이션이 지정되면 구성 오류가 발생합니다. @Before* or @After* 실패.

그들은 원인이 될 수 있습니다 종속 테스트를 건너뛸지 여부설령 그 검사 결과가 정확하다 하더라도 말입니다.

일반적인 원인 :

  • WebDriver 초기화가 잘못되었습니다.
  • 데이터베이스 또는 환경 설정 문제.
  • 매개변수 설정 오류.

솔루션 :

  • 시도 잡기 설정 메서드의 블록.
  • 신청 alwaysRun = true 오류가 발생하더라도 정리 작업이 실행되도록 합니다.

예:

@BeforeMethod(alwaysRun = true)
public void setup() {
    // Setup logic
}

이렇게 하면 테스트 환경의 안정성을 유지하면서 분해 방법이 계속 실행되도록 보장할 수 있습니다.


38) invocationCount 및 threadPoolSize 속성은 무엇에 사용됩니까? TestNG?

이러한 속성은 다음과 같은 것을 허용합니다. 반복 및 병렬 테스트 실행 같은 방법으로.

예:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
속성 기술설명
invocationCount 메서드가 실행되는 횟수
threadPoolSize 동시 스레드 수

사용 사례 : 성능 테스트, 안정성 검증 또는 여러 번 실행하여 불안정한 동작을 재현하는 것.


39) 실패한 테스트 케이스만 실행하려면 어떻게 해야 하나요? TestNG?

스위트룸에서 운동을 마친 후, TestNG 라는 이름의 파일을 생성합니다 testng-failed.xml 인간을 test-output 디렉토리.

실패한 테스트만 다시 실행하려면 다음 명령을 실행하세요.

java -cp testng.jar org.testng.TestNG test-output/testng-failed.xml

장점:

  • 성공적인 테스트를 건너뛰어 시간을 절약합니다.
  • 대규모 테스트 환경에서 디버깅을 용이하게 합니다.
  • 일반적으로 CI 파이프라인에서 빠른 재테스트에 사용됩니다.

빌드 후 스크립트를 사용하여 Jenkins와 통합하여 재실행할 수도 있습니다.


40) 몇 가지 한계점은 무엇입니까? TestNG 그러면 어떻게 완화할 수 있을까?

견고함에도 불구하고, TestNG 몇 가지 제한 사항이 있습니다.

한정 완화 전략
XML 구성 복잡성 주석 기반 구성 및 빌더를 사용하세요
제한된 네이티브 보고 ExtentReports 또는 Allure를 통합하세요
내장된 재시도 제어 기능이 없습니다. 구현 IRetryAnalyzer
병렬 실행 시 스레드 안전성 문제 스레드 로컬 WebDriver 인스턴스를 사용하세요.
초보자를 위한 학습 곡선 템플릿 기반 프로젝트 구조를 유지 관리합니다.

적절한 프레임워크 설계와 모범 사례를 활용하면 이러한 제약을 최소화하여 안정적이고 유지 관리가 가능한 자동화 솔루션을 확보할 수 있습니다.


41) 로그 기록 및 스크린샷 캡처를 위해 리스너를 어떻게 사용하나요? Selenium-TestNG?

청취자 TestNG 테스트 실행을 모니터링하고 로깅, 스크린샷 촬영 또는 결과 보고와 같은 작업을 동적으로 수행하는 데 도움이 됩니다.

구현 예시:

public class ScreenshotListener implements ITestListener {
  @Override
  public void onTestFailure(ITestResult result) {
      WebDriver driver = ((BaseTest) result.getInstance()).getDriver();
      File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(src, new File("screenshots/" + result.getName() + ".png"));
  }
}

용법:

@Listeners(ScreenshotListener.class)
public class LoginTests extends BaseTest { ... }

이점:

  • 오류를 자동으로 포착합니다.
  • 시각적 증거를 통해 디버깅을 개선합니다.
  • 로그 유지 관리에 필요한 수작업을 줄여줍니다.

이 기술은 특히 빌드 실패를 원격으로 진단할 때 CI/CD 자동화 파이프라인에서 매우 중요합니다.


42) IReporter와 ITestListener의 차이점은 무엇입니까? TestNG?

특색 IReporter ITestListener
목적 테스트 실행 후 사용자 지정 보고서를 생성합니다. 런타임 테스트 이벤트를 추적하고 이에 반응합니다.
기도 모든 테스트가 완료된 후 테스트 수명 주기 동안 (시작, 성공, 실패)
산출 HTML/XML/JSON 보고서 로그 파일, 스크린샷, 실시간 대시보드
공통 사용 ExtentReports와 Allure 통합 로깅, 오류 처리, 재시도 메커니즘

예:

  • IReporter 건축을 위해 종합 보고서 테스트 완료 후.
  • ITestListener 을 통한 실시간 로깅 또는 스크린샷.

그들은 또한 될 수 있습니다 결합 된 엔드투엔드 자동화 분석 시스템을 구축합니다.


43) 크로스 브라우저 테스트는 어떻게 수행하나요? TestNG XML 구성인가요?

크로스 브라우저 테스트는 다양한 브라우저에서 동일한 기능이 작동하는지 확인합니다.

구성 예:

<suite name="CrossBrowserSuite" parallel="tests">
  <test name="ChromeTest">
    <parameter name="browser" value="chrome"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
  <test name="FirefoxTest">
    <parameter name="browser" value="firefox"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
</suite>

Java 암호:

@Parameters("browser")
@BeforeClass
public void setup(String browser) {
    if(browser.equalsIgnoreCase("chrome"))
        driver = new ChromeDriver();
    else if(browser.equalsIgnoreCase("firefox"))
        driver = new FirefoxDriver();
}

이 접근 방식은 다음을 가능하게 합니다. 병렬, 멀티 브라우저 실행이를 통해 플랫폼 전반에 걸쳐 테스트 범위를 확대합니다.


44) 어떻게 통합합니까? TestNG Docker를 사용하거나 Selenium 그리드?

TestNG 원활하게 통합 Dockerized Selenium 그리드 분산 병렬 테스트를 가능하게 하기 위해.

단계 :

  1. 설정 Selenium Docker의 그리드 공식을 사용하여 Selenium 영상:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. 업데이트 TestNG 설정:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Jenkins 또는 CI 파이프라인을 통해 테스트 스위트를 실행하세요.

이점:

  • 사용함 확장 가능한 병렬 테스트.
  • 환경 설정 오버헤드를 줄입니다.
  • 제공 일관된 테스트 실행 분산 컨테이너 전반에 걸쳐.

45) 스위트 수준, 테스트 수준, 메서드 수준에서의 병렬 실행의 차이점은 무엇입니까? TestNG?

레벨 병렬 속성 실행 동작
스위트 parallel="suites" 여러 테스트 스위트를 동시에 실행합니다.
Test parallel="tests" 실행 <test> 블록을 동시에
클래스 parallel="classes" 테스트 클래스를 병렬로 실행합니다.
방법 parallel="methods" 개별 테스트 메서드를 병렬로 실행합니다.

예:

<suite name="ParallelTests" parallel="methods" thread-count="3">
  <test name="SampleTest">
    <classes><class name="com.test.ParallelExample"/></classes>
  </test>
</suite>

최고의 연습: parallel="classes" 안정성을 위해 Selenium 공유 드라이버 충돌을 방지하기 위한 테스트.


46) 전역 변수를 사용하지 않고 테스트 간에 데이터를 공유하는 방법은 무엇입니까? TestNG?

TestNG 제공 ITestContext의존성 주입 데이터를 동적으로 공유하기 위해.

예:

@Test
public void storeData(ITestContext context) {
    context.setAttribute("token", "abc123");
}

@Test(dependsOnMethods = "storeData")
public void useData(ITestContext context) {
    String token = (String) context.getAttribute("token");
    System.out.println("Using token: " + token);
}

이렇게 하면 정적 변수를 사용하지 않고 스레드 안전성을 유지하며 다음을 보장합니다. 테스트 전반에 걸친 데이터 격리.


47) 건너뛴 테스트를 어떻게 포착하고 기록하나요? TestNG?

건너뛴 테스트는 다음을 사용하여 캡처할 수 있습니다. onTestSkipped() 인간을 ITestListener 인터페이스.

예:

@Override
public void onTestSkipped(ITestResult result) {
    System.out.println("Skipped Test: " + result.getName());
}

건너뛰는 이유:

  • 종속 테스트 실패.
  • 조건부 건너뛰기 SkipException.
  • 환경을 사용할 수 없습니다.

최고의 연습:
CI 보고서 또는 대시보드에서 추적성을 확보하기 위해 로그 건너뛰기 이유와 스택 추적 정보를 기록합니다.


48) REST API 테스트를 매개변수화하는 방법을 설명하세요. TestNG 그리고 RestAssured.

TestNG의 @DataProvider 우아하게 통합됩니다 안심하세요 API 파라미터화를 위해서입니다.

예:

@DataProvider(name = "apiData")
public Object[][] apiData() {
  return new Object[][] {
    {"https://api.example.com/users/1"},
    {"https://api.example.com/users/2"}
  };
}

@Test(dataProvider = "apiData")
public void testApi(String url) {
  Response response = RestAssured.get(url);
  Assert.assertEquals(response.getStatusCode(), 200);
}

장점:

  • 여러 엔드포인트 또는 페이로드에 대해 동일한 API 호출을 실행합니다.
  • 입력값이 다양한 API에 대한 회귀 테스트를 간소화합니다.
  • CI 도구 및 보고서와 완벽하게 통합됩니다.

49) 사용자 지정 주석은 어떻게 생성하나요? TestNG 재사용 가능한 테스트 패턴을 위해서요?

사용자 지정 주석을 사용하면 반복적인 테스트 구성이나 유효성 검사를 표준화할 수 있습니다.

예:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SmokeTest {
  String description() default "Smoke Test";
}

용법:

@SmokeTest(description="Validating Login Functionality")
@Test
public void loginTest() { ... }

리플렉션과 함께 사용하면 이러한 어노테이션을 동적으로 읽어 테스트를 그룹화하거나 조건부 실행을 제어할 수 있습니다.

이 기술은 널리 사용됩니다. 프레임워크 메타 프로그래밍 자체적으로 문서화되는 테스트를 구축하기 위해.


50) 어떻게 조합할 수 있나요? Cucumber 및 TestNG 하이브리드 테스트 프레임워크의 경우요?

TestNG ~로 작용할 수 있다 테스트 실행기 을 통한 Cucumber BDD 시나리오를 제공하며, 강력한 보고 및 병렬 처리 기능을 지원합니다.

예시 실행기:

@CucumberOptions(
  features = "src/test/resources/features",
  glue = "stepDefinitions",
  plugin = {"pretty", "html:target/cucumber-report.html"}
)
public class RunCucumberTest extends AbstractTestNGCucumberTests { }

장점:

  • 레버리지 TestNG의 주석, 청취자 및 보고.
  • 지원 병렬 기능 실행.
  • 와 통합 매력범위 보고서 용이하게.

이 하이브리드 접근 방식은 여러 요소를 결합합니다. BDD 가독성TestNG 유연성기업용 프레임워크에 이상적입니다.


🔍 탑 TestNG 실제 상황과 전략적 대응을 담은 면접 질문

다음은 현실적이고 해당 분야와 관련된 10가지 사항입니다. TestNG 면접 질문과 함께 명확한 기대치 및 훌륭한 예시 답변을 준비하세요.

1) 사용의 주요 이점을 설명해 주시겠습니까? TestNG 반면 JUnit?

후보자에게 기대하는 것: 이해도를 보여주세요 TestNG향상된 기능과 기업 자동화에 자주 사용되는 이유를 설명합니다.

예시 답변: "TestNG 유연한 테스트 구성, 병렬 실행 지원, 종속 테스트 메서드, DataProviders를 사용한 데이터 기반 테스트, 내장 보고 기능 등 여러 가지 장점을 제공합니다. 이러한 기능 덕분에 TestNG 확장성이 요구되는 복잡한 자동화 프레임워크에 더욱 강력한 성능을 제공합니다.


2) 어떻게 사용하시나요? TestNG 테스트 실행 흐름을 제어하기 위한 어노테이션?

후보자에게 기대하는 것: 주석의 목적과 순서에 대한 지식.

예시 답변: "TestNG @BeforeSuite, @BeforeClass, @BeforeMethod, @Test와 같은 어노테이션과 그에 상응하는 teardown 어노테이션을 제공합니다. 이러한 어노테이션을 통해 테스트 설정 및 정리를 체계적으로 구성할 수 있습니다. 예를 들어, @BeforeMethod는 각 테스트 메서드 실행 전에 실행되므로 브라우저 상태 초기화에 유용합니다.


3) 까다로운 자동화 프로젝트에 대해 설명하십시오. TestNG 핵심적인 역할을 했다.

후보자에게 기대하는 것: 실제 프로젝트 경험과 문제 해결 과정을 명확하게 설명할 수 있는 능력.

예시 답변: "이전 직장에서는 여러 환경에 걸쳐 광범위한 회귀 테스트가 필요한 프로젝트를 진행했습니다." TestNG"병렬 실행 및 그룹화 기능 덕분에 팀은 핵심 테스트 스위트를 동시에 실행하여 안정성을 유지하면서 실행 시간을 크게 단축할 수 있었습니다."


4) 어떻게 합니까? TestNG 그룹 활동은 테스트를 효율적으로 구성하고 실행하는 데 도움이 되나요?

후보자에게 기대하는 것: 그룹화에 대한 이해, 특히 포함/제외 메커니즘에 대한 이해.

예시 답변: “그룹들 TestNG testng.xml을 사용하면 스모크 테스트, 회귀 테스트, 통합 테스트와 같은 테스트 케이스를 분류할 수 있습니다. 이를 통해 코드 자체를 수정하지 않고도 테스트 그룹을 선택적으로 실행하고, 불안정한 테스트를 제외하고, 다양한 테스트 스위트를 관리할 수 있습니다.


5) 디버깅 오류를 해결해야 했던 상황을 설명하세요. TestNG 테스트 결과입니다. 어떤 접근 방식을 사용하셨나요?

후보자에게 기대하는 것: 비판적 사고 및 문제 해결 능력.

예시 답변: “이전 직장에서 저는 일련의 실패 사례들을 접했습니다.” TestNG 로컬 환경에서는 통과한 것처럼 보였지만 CI 환경에서는 실패한 테스트가 있었습니다. 상세 로깅을 활성화하고 실행 순서를 검토한 결과, 테스트 간에 공유 리소스가 재설정되지 않는 것을 발견했습니다. 그 후 @AfterMethod를 사용하여 적절한 종료 단계를 구현함으로써 테스트 격리를 확보했습니다.


6) 데이터 기반 테스트를 어떻게 구현하나요? TestNG?

후보자에게 기대하는 것: 데이터 제공자 및 사용 사례에 대한 이해.

예시 답변: "저는 Object 배열로 데이터를 반환하는 @DataProvider 메서드를 만들고, dataProvider 속성을 사용하여 @Test 메서드에 바인딩합니다. 이렇게 하면 서로 다른 입력 세트를 사용하여 동일한 테스트를 여러 번 반복할 수 있으므로 폼 제출이나 API 페이로드 변형을 검증하는 데 유용합니다."


7) 테스트 종속성은 어떻게 관리하나요? TestNG?

후보자에게 기대하는 것: dependsOnMethods 또는 dependsOnGroups의 올바른 사용법.

예시 답변: "TestNG `dependsOnMethods` 및 `dependsOnGroups` 속성을 통해 테스트 종속성을 설정할 수 있습니다. 저는 테스트가 다른 테스트가 성공적으로 완료된 후에만 실행되어야 할 때, 예를 들어 주문을 생성한 후에만 주문을 검증하는 경우에 종속성을 사용합니다.


8) 어떻게 활용했는지 설명해 주세요 TestNG 지속적 통합 도구를 사용합니다.

후보자에게 기대하는 것: 실제 자동화 파이프라인 경험.

예시 답변: “이전 직장에서 저는 통합 업무를 담당했습니다.” TestNG Jenkins에서 Maven 빌드를 구성하여 생성하도록 설정 TestNG HTML 및 XML 보고서를 생성했습니다. 젠킨스는 빌드 주기마다 보고서를 보관하고 결과를 표시했습니다. 이러한 통합 덕분에 팀은 오류를 신속하게 추적하고 릴리스 안정성을 유지할 수 있었습니다.


9) 여러 자동화 작업을 관리하면서 촉박한 마감 기한 내에 업무를 처리해야 했던 경험에 대해 이야기해 주세요.

후보자에게 기대하는 것: 시간 관리 및 우선순위 설정 능력.

예시 답변: “이전 직장에서는 기존 시스템을 업데이트해야 했습니다.” TestNG 기존 테스트 스위트를 사용하는 동시에 향후 릴리스를 위한 새로운 테스트 스위트도 개발했습니다. 비즈니스 영향력을 기준으로 작업 우선순위를 정하고, 위험도가 높은 영역부터 자동화했으며, TestNG 완료된 부분을 그룹화하여 조기에 검토할 수 있도록 했습니다. 이를 통해 품질 저하 없이 적시에 납품할 수 있었습니다.


10) 확장 가능한 시스템을 어떻게 설계하시겠습니까? TestNG 대규모 애플리케이션을 위한 프레임워크는 무엇일까요?

후보자에게 기대하는 것: Archi구조에 대한 이해, 패턴 및 모범 사례.

예시 답변: "페이지 객체 모델을 사용하여 모듈형 프레임워크를 설계하고 통합하겠습니다." TestNG 실행 관리를 위해 데이터 프로바이더를 사용하고, 데이터 기반 시나리오에는 데이터 프로바이더를 활용하겠습니다. 또한 병렬 실행을 구성하고, 유틸리티를 중앙 집중화하고, 구성 설정을 외부화하여 애플리케이션이 성장함에 따라 프레임워크의 확장성과 유지 관리성을 유지하겠습니다.

이 게시물을 요약하면 다음과 같습니다.