소프트웨어공학

단위 테스트(컴포넌트 테스트)_드라이버(Driver), 스텁(Stub), 오라클(Oracle), 통합 테스트

스윙스윙 2021. 9. 22. 21:59

▣ 단위 테스트(컴포넌트 테스트)_드라이버(Driver), 스텁(Stub), 오라클(Oracle), 통합 테스트

- 테스트 드라이버(Driver) : 테스트 대상 모듈을 호출하는 더미 프로그램

- 테스트 스텁(Stub) : 테스트 대상 모듈에 의해 호출되는 프로그램

■ 테스트 관련 용어

- 테스트 베이시스(Test Basis) : 테스트케이스 생성시 기초 자료 (기능, 요구사항, 제약사항명시)
- 테스트 케이스(Test Case) : 특별한 목표 또는 상황을 테스트 하기 위한 입력값, 사전조건, 예상 결과, 사후조건 들의 집합
- 테스트 수트(Test Suite) : 테스트 대상 컴포넌트나 시스템에 사용되는 여러 테스트 케이스 집합으로 TestCase간 사전/사후조건 연관 관계 포함
- 테스트 스크립트(Test Script) : 테스트에 대한 절차 명세 (특히, 자동화 테스트 시)
- 테스트 베드(Test Bed) : 테스트를 수행하기 위해 필요한 모든 지원요소를 포함하는 환경 (HW, 계측기, 시뮬레이터 등)
- 테스트 대상(Test Target) : 테스트 수행의 대상이 되는 컴포넌트나 시스템
- 테스트 드라이버(Test Driver) :상향식 테스트 시 하위 모듈 개발 이후 하위 프로그램과 통합성을 테스트 하기 위해 임시적으로 만든 메뉴기능의 상위 모듈

테스트 대상 모듈을 호출하는 더미 프로그램
- 테스트 스텁 (Test Stub) : 하향식 테스트 시 상위 모듈 개발 이후 하위 세부 모듈 제작전 하위 모듈 처럼 기능을 흉내 내는 임시 모듈

테스트 대상 모듈에 의해 호출되는 프로그램
- 테스트 하네스 (Test Harness) : 테스트를 수행하기 위해 필요한 스텁과 드라이버로 구성된 테스트 환경으로 단위테스트 및 통합테스트에 주로 이용됨

시스템 테스트하기 위하여 작성된 임시 프로그램(드라이버와 스텁도 여기에 해당)
- 테스트 오라클 (Test Oracle) : 테스트케이스에 대한 예측 시험결과를 계산하거나 , 실제 결과가 정확한지를 확인하는
메커니즘이나 장치 (facilities), 통상 시험원이 시험결과를 계산하거나 체크 할 때, 테스트 케이스가 복잡한 계산의 경우 프로그램 사용
-> Test Bed = Test Harness(Test Driver+ Test Stub) + Test Target

 

■ 테스트 오라클의 유형

참 오라클
(True Oracle)
- 모든 테스트 케이스 입력 값의 기대한 결과값에 대한 확인
- 가능한 모든 전수 테스트 가능
- 오라클 개발 비용이 많이 들어감
샘플링 오라클
(Sampling Oracle)
- 특정 입력 값들에 대해서만 원하는 결과를 제공해주는 오라클
- 전수 테스트 불가능한 경우 사용
- 경계값, 구간별 예상 값 결과 작성 사용
휴리스틱 오라클
(Heuristic Oracle)
- 샘플링 오라클의 단점 개선을 위해 특정 몇몇 입력은 샘플링 오라클과 같은 결과 제공, 나머지 입력은 휴리스틱(확률 과 직관)처리
- 실험 결과나 수치데이터 처리시 사용
일관된 오라클
(Consistent Oracle)
- 이전 수행 결과와 현재 수행 결과가 동일한지 검증
- 회귀 테스트에서 수정 전/후의 결과 확인 또는 비교 시 사용
상용테스트 자동화 도구에서 사용

* 테스트 오라클 특징

제한된 검증, 수학적 기법, 자동화 기능

 

■ 개발 단계별 테스트

단위 테스트
(Unit Test)
구현 단계에서 각 모듈이 완성되었을 경우 해당 개념적 모듈을 시험 하는 것
통합 테스트
(integration Test)
각 단위모듈을 통합하여 테스트하는 것, 각 모듈은 단위테스트에서 시험 했지만 모듈들이 연계 통합하는 상호작용은 시험하지 못했으므로 이를 통합테스트에서 시험함
시스템 테스트
(System Test)
모듈간의 통합 시험이 완료된 후 사용자의 요구사항이 시스템 자원(프로그램+하드웨어+기타환경 모두)에 모두 반영되었는지를 시험하는 것
인수 테스트
(Acceptance Test)
시스템이 사용자에게 인수되기 바로 직전에 사용자에 의해 실시되는 시험
설치 테스트
(installation Test)
프로그램, 장비 등이 잘 설치되었는지를 시험하는 것

 

알파 테스트 개발자가 개발 현장에서 테스트 수행(단위 테스트와 유사)
베타 테스트 인도 전에 사용자가 시험적으로 수행(인수 테스트와 유사)
감마 테스트 인도 후 운영이 되는 기간에 사용자가 수행

 


2018년 32번

정답 : 1번

A: 테스트 드라이버, B: 테스트 스터브, C: 테스트 오라클

 


2012년 40번

정답 : 2번

테스트 오라클 (Test Oracle) : 테스트케이스에 대한 예측 시험결과를 계산하거나 , 실제 결과가 정확한지를 확인하는
메커니즘이나 장치 (facilities), 통상 시험원이 시험결과를 계산하거나 체크 할 때, 테스트 케이스가 복잡한 계산의 경우 프로그램 사용

- 테스트 드라이버(Driver) : 테스트 대상 모듈을 호출하는 더미 프로그램

- 테스트 스텁(Stub) : 테스트 대상 모듈에 의해 호출되는 프로그램

- 테스트 하네스 (Test Harness) : 테스트를 수행하기 위해 필요한 스텁과 드라이버로 구성된 테스트 환경으로 단위테스트 및 통합테스트에 주로 이용됨

시스템 테스트하기 위하여 작성된 임시 프로그램(드라이버와 스텁도 여기에 해당)

 

 


2012년 43번

정답 : 2번

■ 개발 단계별 테스트

단위 테스트
(Unit Test)
구현 단계에서 각 모듈이 완성되었을 경우 해당 개념적 모듈을 시험 하는 것
(알파테스팅)
통합 테스트
(integration Test)
각 단위모듈을 통합하여 테스트하는 것, 각 모듈은 단위테스트에서 시험 했지만 모듈들이 연계 통합하는 상호작용은 시험하지 못했으므로 이를 통합테스트에서 시험함
시스템 테스트
(System Test)
모듈간의 통합 시험이 완료된 후 사용자의 요구사항이 시스템 자원(프로그램+하드웨어+기타환경 모두)에 모두 반영되었는지를 시험하는 것
(성능 테스트 포함)
인수 테스트
(Acceptance Test)
시스템이 사용자에게 인수되기 바로 직전에 사용자에 의해 실시되는 시험
(인도전 베타 테스팅 / 인도후 감마 테스팅)
설치 테스트
(installation Test)
프로그램, 장비 등이 잘 설치되었는지를 시험하는 것

 

알파 테스트 개발자가 개발 현장에서 테스트 수행(단위 테스트와 유사)
베타 테스트 인도 전에 사용자가 시험적으로 수행(인수 테스트와 유사)
감마 테스트 인도 후 운영이 되는 기간에 사용자가 수행

 


2016년 39번

정답 : 4번

알파 테스트 : 개발자 환경에서 사용자들이 소프트웨어를 사용하며 시험하고 문제점 점검

베타 테스트 : 사용자 환경에서 인도 전에 사용자가 시험적으로 수행

복구 테스트 : 여러가지 방법으로 소프트웨어 장애가 일어나도록 한 후 복구가 적절히 수행되는지 검사하는 시스템 테스트

회귀 테스트(Regression Test) : SW가 운영된 후 발견된 오류를 수정하게 될 때 가해진 수정 내용이 SW의 다른 부분에 영향을 끼치지 않았는지를 시험

강도 테스트(Stress) : 과다 부하를 주어 시스템의 용량 한계를 시험

뮤테이션 테스트 : 의도적으로 프로그램의 소스 코드를 변형시키고 이에 맞게 디자인된 테스트 데이터를 실행시켜 프로그램 코드 내에 존재할 수 있는 애매모호한 부분을 찾아내기 위한 테스트 기법 또는 테스트 과정(process)