테스트 하네스란 무엇입니까? (예시)

⚡ 스마트 요약

소프트웨어 테스트에서 테스트 하네스는 스텁, 드라이버, 테스트 데이터 및 실행 도구를 통합하여 팀이 모든 종속성이 존재하기 전에 모듈을 검증할 수 있도록 지원합니다. 이를 통해 막혔던 테스트 주기를 반복 가능하고 자동화된 검증으로 전환하여 수동 작업 없이 결과를 보고할 수 있습니다.

  • 🧩 정의: 하네스는 테스트 케이스, 스텁, 드라이버, 대상 배포 포트 세부 정보 및 테스트 대상 소스 파일을 하나의 실행 가능한 단위로 묶습니다.
  • 🎯 왜 문제 : 데이터베이스, 게이트웨이 또는 백엔드 모듈이 존재하기 전에 테스트가 시작되므로 수정 비용이 가장 낮은 시점에 결함이 조기에 발견됩니다.
  • 🔧 핵심 부품: 실행 엔진, 스크립트 저장소, 테스트 데이터 저장소, 스텁, 드라이버, 출력 유효성 검사기 및 보고 계층은 각각 하나의 책임을 지닙니다.
  • 🔁 워크 플로우 : 스크립트를 로드하고, 테스트 대상 애플리케이션을 실행하고, 누락된 모듈을 대체하고, 출력을 캡처하고, 예상 결과와 비교하고, 보고서를 게시합니다.
  • 🛠 압형: JUnit 맞다 JavaNUnit은 .NET에 적합합니다. Selenium, TestNG, PyTest, 그리고 JMeter 웹 작업, 평행 작업 및 하중 작업에 대한 하네스 적용 범위를 확장합니다.
  • 📈 최적화 : 스텁은 실제 모듈 동작과 일치하도록 유지하고, 테스트 데이터는 스크립트 외부에 저장하며, 지속적 통합 빌드 시마다 테스트 하네스를 실행하십시오.

소프트웨어 테스팅의 테스트 하네스

소프트웨어 테스팅의 테스트 하네스 테스트 실행을 자동화하는 데 필요한 스텁, 드라이버 및 기타 지원 도구 모음입니다. 테스트 하네스는 테스트 라이브러리를 사용하여 테스트를 실행하고 테스트 보고서를 생성합니다. 테스트 하네스에는 테스트 사례, 대상 배포 포트(TDP), 테스트 중인 소스 파일, 스텁 등과 같은 테스트를 컴파일하고 실행하는 데 필요한 모든 정보가 포함되어 있습니다.

간단히 말해, 검증용 하네스는 검증하려는 구성 요소를 제어된 환경 내에서 감싸는 역할을 합니다. 누락된 인접 모듈은 작은 더미 프로그램으로 대체되고, 입력은 고정된 데이터 세트에서 제공되며, 모든 결과는 화면에 표시되는 대신 로그에 기록됩니다. 이어지는 섹션에서는 팀이 하네스를 구축하는 이유, 구성 요소, 실행 방식 및 활용 분야에 대해 설명합니다.

테스트 하네스를 사용하는 이유는 무엇입니까?

테스트 주기에서 대기 시간을 없애기 위해 하네스가 존재합니다. 아직 준비되지 않은 모든 것을 시뮬레이션하기 때문입니다. 소프트웨어 테스팅 팀은 최종 통합 이후가 아닌 첫 번째 스프린트에서 동작 검증을 시작할 수 있습니다. 아래 다이어그램은 테스트 스크립트와 테스트 대상 애플리케이션 사이에 테스트 하네스가 위치하는 곳을 보여줍니다.

테스트 장치

  • 테스트 프로세스 자동화
  • 테스트 케이스의 테스트 스위트 실행
  • 관련 테스트 보고서 생성
  • 디버깅 지원
  • 각 테스트에 대한 테스트 결과를 기록하려면
  • 개발자가 코드 수준에서 코드 적용 범위를 측정하는 데 도움이 됩니다.
  • 자동화를 통한 시스템 생산성 증대
  • 소프트웨어 구성 요소 및 애플리케이션의 품질 향상
  • 테스터가 시뮬레이션하기 어려운 복잡한 조건을 처리하려면

이러한 이점은 릴리스 주기가 짧을수록 가장 중요합니다. 코드가 일주일에 여러 번 배포되는 경우, 통합 단계까지 남아 있는 결함은 훨씬 더 큰 비용을 초래합니다. trac그 글이 쓰인 날 마침표에 걸린 것보다 더 나은 것은 없습니다. 하지만 그 보상은 제대로 된 부품으로 조립되었을 때만 얻을 수 있습니다.

테스트 하네스의 주요 구성 요소

하네스는 단일 프로그램이 아니라 여러 부품의 조합이며, 각 부품은 무인 테스트 실행을 방해할 수 있는 장애물을 하나씩 제거합니다.

  • 테스트 스크립트: 자동화된 지침은 수행해야 할 단계와 예상 결과를 명시하며, 다음과 같이 작성됩니다. 테스트 스크립트 관례.
  • 테스트 실행 엔진: 스크립트를 순서대로 읽고, 종속성을 해결하며, 순차적 또는 병렬 실행을 시작하는 실행기입니다.
  • 테스트 데이터 저장소: 스크립트 외부에 CSV, JSON, XML 또는 시드된 데이터베이스 형식으로 저장된 입력 값은 일반적으로 다음과 같이 채워집니다. 테스트 데이터 생성 도구.
  • 드라이버 : 실제 상위 계층(예: 사용자 인터페이스)이 완성되지 않았을 때 테스트 대상 구성 요소를 호출하는 더미 호출 모듈입니다.
  • 스텁: 더미 모듈은 미리 정의된 응답을 반환합니다. 예를 들어, 결제 서비스는 은행에 연결하지 않고 "결제 성공"이라고 응답합니다.
  • 출력 유효성 검사기: 실제 출력값을 예상값과 비교하여 각 경우에 대해 통과 또는 실패를 표시하는 검증 논리입니다.
  • 로깅 및 보고 계층: 타임스탬프, 스크린샷, 콘솔 출력 및 실행 요약을 통해 모든 실패 원인을 확인할 수 있습니다. trac나중에 먹을 수 있습니다.

부품 중 하나라도 제거하면 하네스의 자동 작동이 중단됩니다. 왜냐하면 매 작동 시마다 수동으로 무언가를 공급해야 하기 때문입니다.

테스트 하네스는 어떻게 작동하나요?

하네스는 매번 작동할 때마다 동일한 루프를 반복합니다. 그 루프를 알면 자신의 하네스가 정확히 어디에 있는지 알 수 있습니다. 자동화 테스트 자산 플러그인과 실행 결과가 빨간색으로 표시될 때 어떤 단계에서 오류가 발생하는지 알려주세요.

  1. 환경을 준비합니다. 이 하네스는 환경 구성을 해결하고, 연결을 열고, 설비를 로드하므로 모든 실행은 동일한 알려진 상태에서 시작됩니다.
  2. 테스트 스크립트를 불러오세요: 스크립트, 매개변수 및 예상 결과는 저장소에서 읽어옵니다. 실행 시에는 아무것도 입력하지 않으므로 두 번째 실행 결과는 첫 번째 실행 결과와 유사합니다.
  3. 누락된 모듈을 대체하십시오. 드라이버는 아직 존재하지 않는 발신자를 대신하고, 스텁은 미완성, 불안정 또는 호출 비용이 많이 드는 서비스를 대신합니다.
  4. 테스트 대상 애플리케이션을 실행합니다. 실행 엔진은 스크립트에 설명된 워크플로를 실행합니다. 여기에는 메서드 호출 등이 포함됩니다. API 요청 또는 브라우저 상호 작용.
  5. 실제 출력 결과를 캡처하세요: 반환 값, 응답 페이로드, 데이터베이스 행, 로그 라인 및 화면 상태는 모두 생성되는 즉시 기록됩니다.
  6. 예상 결과와 비교하십시오: 출력 유효성 검사기는 캡처된 각 값에 대해 검증합니다. 불일치가 발생하면 해당 사례는 실패로 표시되고 예상 값과 관측 값이 모두 기록됩니다.
  7. 로그 및 보고: 하네스는 타임스탬프가 찍힌 기록을 남깁니다. trac실행 결과를 기록하고 개발자가 아무것도 다시 실행하지 않고도 확인할 수 있는 합격/불합격 보고서를 생성합니다.
  8. 철거하다: 임시 데이터, 연결 및 스텁 상태가 지워지므로 다음 케이스는 이전 케이스의 잔여물을 상속받지 않습니다.

💡 팁: 실제 모듈이 변경될 때마다 스텁을 새로 고치세요. 지난 분기 형식을 유지하는 스텁은 실제 통합이 이미 실패했음에도 불구하고 정상적으로 실행되었다고 보고할 수 있습니다.

예시를 통해 반복 과정을 구체적으로 살펴보겠습니다. 결제 페이지는 준비되었지만 결제 게이트웨이는 아직 준비되지 않았다고 가정해 보겠습니다. 드라이버는 인터페이스가 일반적으로 보내는 요청을 전송하고, 스텁은 먼저 "결제 성공" 응답을 보내고, 그 다음에는 타임아웃 응답을 보냅니다. 유효성 검사기는 한 경우에는 주문을 확인하고, 다른 경우에는 재시도 메시지를 표시합니다. 게이트웨이 팀이 코드를 작성하기 전에 두 가지 경로 모두 검증됩니다.

테스트 하네스가 사용되는 두 가지 상황이 있습니다.

그 메커니즘은 두 가지 서로 다른 목적을 수행하며, 사용하는 용어는 어떤 목적에 따라 약간씩 달라집니다.

  1. 자동화 테스트: 그것은 포함 테스트 스크립트, 이러한 스크립트를 실행하고 결과를 수집하여 분석하는 데 필요한 매개변수
  2. 통합 테스트: 결합된 동작이 예상대로인지 여부를 확인하기 위해 서로 상호 작용하는 두 개의 코드 단위 또는 모듈을 함께 묶는 데 사용됩니다.

로그인 모듈과 프로필 모듈이 사용자 토큰을 교환해야 한다고 가정해 보겠습니다. 통합 컨텍스트에서 드라이버는 성공적인 로그인을 시뮬레이션하고 토큰을 프로필 로직에 전달합니다. 따라서 데이터 맵은 다음과 같습니다.ping권한 확인과 화면 렌더링은 모두 실제 인증 서비스가 완료되기 전에 검증할 수 있습니다. 자동화 환경에서는 동일한 두 가지 테스트 케이스가 스위트에 추가되어 별도의 수정 없이 모든 빌드에서 다시 실행됩니다.

테스트 하네스의 종류

소프트웨어는 계층적으로 구축되기 때문에 검증 도구(하네스)는 일반적으로 검증하는 계층에 특화되어 있습니다. 거의 모든 프로젝트에는 네 가지 유형이 있습니다.

A 유닛 테스트 하네스 단일 함수나 메서드와 같은 가장 작은 코드 조각을 실행하고 모든 의존성을 스텁으로 대체합니다. 실행 속도가 가장 빠르고 유지 관리 비용이 가장 저렴하기 때문에 이러한 방식이 사용됩니다. 단위 테스트 스위트 프로그램은 일반적으로 팀이 구축하는 첫 번째 도구입니다. 청구 모듈을 건드리지 않고 세금 계산을 테스트하는 것이 대표적인 사용 사례입니다.

An 통합 테스트 하네스 두 개 이상의 모듈이 올바르게 협력하는지 확인하는 계층이며, 데이터 불일치 및 호출 실패가 발생하는 계층입니다. 이는 앞서 설명한 하네스입니다. 통합 테스트 위의 맥락에서, 예를 들어 주문 서비스가 결제 서비스에 올바른 페이로드를 전달하는지 확인하는 경우를 생각해 볼 수 있습니다.

A 시스템 테스트 하네스 인터페이스, 서비스 및 데이터베이스 전반에 걸쳐 완전한 엔드투엔드 흐름을 구동합니다. 시스템 테스트 모든 계층이 존재할 경우 비즈니스 규칙이 유지됨을 확인할 수 있습니다. 회귀 테스트 하네스 그런 다음 변경 사항이 발생할 때마다 누적된 테스트 스위트를 다시 실행하는데, 이것이 바로 그 이유입니다. 회귀 테스트 병합할 때마다 수백 가지 시나리오를 반복해야 하는 경우에 실용적입니다.

테스트 하네스 도구

일반적으로 이러한 유형들은 처음부터 구축되는 것이 아니라 기존 도구를 기반으로 만들어집니다. 가장 고전적인 두 가지 선택지는 단위 수준 프레임워크입니다.

이 두 가지 외에도 대부분의 팀은 브라우저, API 계층 또는 부하 프로파일까지 기능을 확장하는 도구를 추가합니다. 아래 표는 일반적인 옵션과 각 옵션의 역할을 보여줍니다.

수단 적합한 하네스 안쪽 역할
JUnit Java 유닛 및 통합 제품군 공급 드라이버, 고정 장치 및 주장
N 단위 .NET 플랫폼에서 C# 및 VB.NET 코드 같은 역할 JUnit .NET 언어용
Selenium 브라우저 기반 엔드투엔드 흐름 사용자 인터페이스 계층의 드라이버 역할을 합니다.
TestNG 큰 Java 그룹이 필요한 스위트룸ping 그리고 병렬 실행 테스트 실행 엔진 역할을 합니다.
파이테스트 Python 서비스 및 API 수준 검사 고정 설비는 스텁 및 데이터 제공자 역할도 겸합니다.
Apache JMeter 부하, 스트레스 및 성능 시나리오 테스트 대상 애플리케이션에 대해 인위적인 트래픽을 생성합니다.
Postman REST API contract 검증 미완성 엔드포인트를 대신할 모의 서버를 제공합니다.

어떤 조합을 선택하든, 배선 하네스는 무인 작동이 시작되어야만 본전을 뽑을 수 있으므로, 반드시 시스템에 연결하십시오. 지속적인 통합 일찍 구직하세요. 더 다양한 선택지가 목록에 나와 있습니다. Guru99 테스트 도구 요약하자면, 여전히 혼란을 야기하는 한 가지 차이점이 있는데, 무엇을 선택하기 전에 이를 명확히 하는 것이 좋습니다.

테스트 하네스와 테스트 프레임워크

테스트 하네스와 자동화 프레임워크는 종종 같은 것으로 여겨지지만, 실제로는 서로 다른 질문에 대한 답을 제시합니다. 하네스는 테스트를 실행하는 도구이고, 프레임워크는 테스트를 설계하는 데 사용되는 구조입니다. 아래 표는 이 둘을 비교하여 보여줍니다.

테스트 장치 테스트 자동화 프레임워크
테스트 하네스는 테스트 중인 소프트웨어와 상호 작용하는 작은 더미 프로그램인 드라이버와 스텁으로 구성됩니다. 이는 일련의 과정, 절차, 요약입니다.trac자동화 테스트가 설계되고 구현되는 개념과 환경
테스트 하네스에서는 "녹화 및 재생" 스크립트를 사용할 수 없습니다. 테스터는 이 프레임워크에서 수동으로 "녹화 및 재생" 스크립트를 작성할 수 있습니다.
테스트 하네스에는 테스트 사례, 대상 배포 포트(TDP), 테스트 중인 소스 파일, 스텁 등과 같은 테스트를 컴파일하고 실행하는 데 필요한 모든 정보가 포함되어 있습니다. 테스트 자동화 프레임워크에는 테스트 라이브러리, 테스트 도구, 자동화된 테스트 방식, 테스트 플랫폼 등과 같은 정보가 포함되어 있습니다.
테스트 하네스는 다음과 같이 분류됩니다.
자동화 테스트
통합 테스팅
자동화 프레임워크
데이터 기반 테스트
키워드 중심 테스트
모듈성 기반 테스트
하이브리드 테스트
모델 기반 테스트
Code 구동 테스트
행동 중심 테스트

자주 묻는 질문

테스트베드는 테스트가 실행되는 하드웨어, 운영 체제, 네트워크 및 데이터베이스 구성입니다. 하네스는 그 위에 있는 소프트웨어 계층으로, 스텁, 드라이버, 데이터 및 보고서를 제공합니다. 하나는 장소이고, 다른 하나는 메커니즘입니다.

녹음 및 재생이 불가능하므로 스크립팅 기술이 필요합니다. Java, Python또는 .NET이 필요합니다. 초기 설정에는 상당한 노력이 필요하며, 관리를 소홀히 하면 스텁이 실제 모듈과 달라지고, 과도한 모킹으로 인해 통합 결함이 나중에야 드러날 수 있습니다.

파이프라인은 각 커밋 후에 하네스를 호출합니다. JenkinsGitHub Actions 또는 GitLab CI가 실행을 트리거하면, 하네스가 스텁에 대해 스크립트를 실행하고, 어설션이 충족되지 않으면 빌드가 자동으로 실패합니다.

AI 모델은 인터페이스 변경 사항을 읽고 손상된 로케이터나 어설션을 자동으로 수정하여 리팩토링 후에도 코드가 안정적으로 작동하도록 합니다. 또한 자체 복구 기능은 불안정한 사례를 표시하여 빌드할 때마다 필요했던 수동 유지 관리 작업을 줄여줍니다. Selenium 스위트.

예. 생성형 모델은 API 사양에서 스텁 응답을 생성하고, 모듈 시그니처에서 드라이버 코드를 작성하며, 현실적인 데이터 세트를 합성합니다. Rev사용하기 전에 출력을 확인하세요. 그럴듯해 보이는 스텁이라도 실제 내용과 모순될 수 있습니다.tract.

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