개발 단계에 따른 애플리케이션 테스트 - 소프트웨어의 개발 단계에 따라 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트로 분류된다. 이렇게 분류된 것을 테스트 레벨이라고 한다. - 애플리케이션 테스트와 소프트웨어 개발 단계를 연결하여 표현한 것을 V-모델이라고 한다.
단위 테스트(Unit Test) = 모듈 테스트 - 단위 테스트는 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰테스트하는 것이다. - 인터페이스, 외부적 I/O, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사한다. - 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행한다. - 구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행한다.
통합 테스트(Integration Test) - 통합 테스트는 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는과정에서의 테스트를 의미한다. - 모듈 간 또는 통합된 컴포넌트 간의 상호 작용 오류를 검사한다.
시스템 테스트(System Test) - 시스템 테스트는 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를점검하는 테스트이다. - 기능적 요구사항과 비기능적 요구사항으로 구분하여 각각을 만족하는지 테스트한다.
인수 테스트(Acceptance Test) - 인수 테스트는 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고테스트하는 방법이다. - 인수 테스트는 개발한 소프트웨어를 사용자가 직접 테스트한다. - 인수 테스트는 다음과 같이 6가지의 종류로 구분해서 테스트한다. 테스트 종류 - 사용자 인수 테스트: 사용자가 시스템 사용의 적절성 여부를 확인함 - 운영상의 인수 테스트: 시스템 관리자가 시스템 인수 시 수행하는 테스트 기법, 백업/복원 시스템, 재난 복구, 사용자 관리, 정기 점검 등을 확인함 - 계약 인수 테스트: 계약상의 인수/검수 조건을 준수하는지 여부를 확인함 - 규정 인수 테스트: 소프트웨어가 정부 지침, 법규, 규정 등 규정에 맞게 개발되었는지 확인함 - 알파 테스트: 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법, 테스트는 통제된 환경에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 기록함 - 베타 테스트: 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법, 실제 업무를 가지고 사용자가 직접 테스트
애플리케이션 테스트 - 애플리케이션 테스트는 애플리케이션에 잠재되어있는 결함을 찾아내는 일련의 행위 또는 절차이다. - 애플리케이션 테스트는 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인(Validation)하고 소프트웨어가 기능을 정확히 수행하는지 검증 (Verification)한다.
[애플리케이션 테스트의 기본 원리] 완벽한 테스트 불가능 - 소프트웨어의 잠재적인 결함을 줄일 수 있지만 소프트웨어에 결함이 없다고 증명할 수는 없음 파레토 법칙 (Pareto Principle) - 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙 살충제 패러독스 (Pesticide Paradox) - 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상 테스팅은 정황(Context) 의존 - 소프트웨어의 특징, 테스트 환경, 테스터의 역량 등 정황 (Context)에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따라 테스트를 다르게 수행해야 함 오류-부재의 궤변 (Absence of Errors Fallacy) - 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없는 것 테스트와 위험은 반비례 - 테스트를 많이 하면 할수록 미래에 발생할 위험을 줄일 수 있음 테스트의 점진적 확대 - 테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 함 테스트의 별도 팀 수행 - 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 함
[20년 1회]
1. 살충제 패러독스의 개념에 관해서 서술하시오.
답: 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못한다는 테스트 원리
[22년 1회] 20. 다음은 V모델에서의 테스트 단계에 대한 설명으로 괄호안에 들어갈 답을 작성하시오.
답: (1) 단위 테스트 (2) 통합 테스트 (3) 시스템 테스트 (4) 인수 테스트
[22년 2회]
10. 다음 설명에 대한 괄호안에 알맞는 단어를 작성하시오.
( 1 ) 테스트는 하드웨어나 소프트웨어의 개발 단계에서 상용화하기 전에 실시하는 제품 검사 작업. 제품의 결함 여부, 제품으로서의 가치 등을 평가하기 위해 실시한다. 선발된 잠재 고객으로 하여금 일정 기간 무료로 사용하게 한 후에 나타난 여러 가지 오류를 수정, 보완한다. 공식적인 제품으로 발매하기 이전에 최종적으로 실시하는 검사 작업이다. ( 2 ) 테스트는 새로운 제품 개발 과정에서 이루어지는 첫 번째 테스트. 즉, 시제품이 운영되는 동안의 신제품 연구와 개발 과정 단계에서 초기 작동의 결과를 평가하는 수단이며 개발 회사 내부에서 이루어지는 테스트로서 단위 테스트, 구성 테스트, 시스템 테스트 등을 포함한다.
답: (1) 베타, (2) 알파
[21년 1회]
10. 다음은 테스트 종류에 대한 설명이다. 빈칸에 들어갈 알맞은 용어를 보기에서 찾아 기호로 쓰시오.
( 1 ) 은/는 개별 모듈, 서브루틴이 정상적으로 실행되는지 확인 ( 2 ) 은/는 인터페이스 간 시스템이 정상적으로 실행되는지 확인
[보기] : 시스템 테스트, 인수 테스트, 알파 테스트, 단위 테스트, 통합 테스트, 회귀 테스트
답: (1) 단위 테스트 (2) 통합 테스트
[20년 1회]
19. 애플리케이션의 성능을 측정하기 위한 지표는 무엇인가?
( 1 ) - 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수 - 웹 애플리케이션의 경우 시간당 페이지수로 표현
( 2 ) - 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간 - 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간
( 3 ) - 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료될 때까지 걸리는 시간
자원 사용률 - 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량 , 메모리 사용량, 네트워크 사용량
답: (1) 처리량 (2) 응답 시간 (3) 경과 시간
[22년 1회] 12. 다음 설명에 대한 알맞는 단어를 작성하시오.
자바 프로그래밍 언어를 이용한 xUnit의 테스트 기법으로써 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework이다.
답: JUnit
[20년 4회]
14. 테스트 오라클 중 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클은 무엇인가?
답: 샘플링 오라클
[21년 3회]
8. 다음은 테스트케이스의 구성요소에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
답: (1) 테스트 조건 (2) 테스트 데이터 (3) 예상 결과
[25년 3회]
19. 다음은테스트케이스의 구성요소에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
[보기] ㄱ.테스트 조건 ㄴ.테스트 환경 ㄷ.테스트 유형 ㄹ.테스트 데이터 ㅁ.예상 결과 ㅂ.수행 단계 ㅅ.성공/실패 기준
답: (왼쪽부터) ㄱ. 테스트 조건 ㄹ. 테스트 데이터 ㅁ. 예상 결과
'화면 상태'가 적혀 있으면? →조건/환경 '아이디, 비번' 같은 값이 적혀 있으면 →데이터 '성공, 실패' 같은 결과가 적혀 있으면? →결과
<< 애플리케이션 성능 개선 >>
소스 코드 최적화 - 소스 코드 최적화는 나쁜 코드(Bad Code)를 배제하고, 클린 코드(Clean Code)로 작성하는 것이다. 클린 코드(Clean Code): 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드, 즉 잘 작성된 코드 나쁜 코드(Bad Code) - 프로그램의 로직(Logic)이 복잡하고 이해하기 어려운 코드 - 나쁜 코드로 작성된 애플리케이션의 코드를 클린 코드로 수정하면 애플리케이션의 성능이 개선된다. ※ 대표적인 나쁜 코드 - 스파게티 코드: 코드의 로직이 서로 복잡하게 얽혀 있는 코드 - 외계인 코드(Alien code): 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
클린 코드 작성 원칙 가독성 - 누구든지 코드를 쉽게 읽을 수 있도록 작성함 - 코드 작성 시 이해하기 쉬운 용어를 사용하거나 들여쓰기 기능 등을 사용함 단순성 - 코드를 간단하게 작성함 - 한 번에 한 가지를 처리하도록 코드를 작성하고 클래스/메소드/ 함수 등을 최소 단위로 분리함 의존성 배제 - 코드가 다른 모듈에 미치는 영향을 최소화함 - 코드 변경 시 다른 부분에 영향이 없도록 작성함 중복성 최소화 - 코드의 중복을 최소화함 - 중복된 코드는 삭제하고 공통된 코드를 사용함 추상화 - 상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위 클래스/메소드/함수에서 구현함
소스 코드 최적화 유형 클래스 분할 배치: 하나의 클래스는 하나의 역할만 수행하도록 응집도를 높이고, 크기를 작게 작성함 느슨한 결합(Loosely Coupled): 인터페이스 클래스를 이용하여 추상화된 자료 구조와메소드를 구현함으로써 클래스 간의 의존성을 최소화함
소스 코드 품질 분석 도구 - 소스 코드 품질 분석 도구는 소스 코드의 코딩 스타일, 코드에 설정된 코딩 표준, 코드의 복잡도, 코드에 존재하는 메모리 누수 현상, 스레드 결함 등을 발견하기 위해 사용하는 분석도구이다. - 정적 분석 도구와 동적 분석 도구로 나뉜다. 정적 분석 도구 (Static Analysis) - 작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 코드 분석 도구 - 종류: pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 동적 분석 도구 (Dynamic Analysis) - 작성한 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석하는 도구 - 종류: Avalanche, Valgrind 등
[20년 2회]
9. 애플리케이션을 실행하지 않고, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용하는 도구는 무엇인지 쓰시오.
답: 정적 분석 도구
[22년 1회]
10. 다음은 분석도구에 대한 설명으로 보기에 알맞는 답을 작성하시오.
( 1 ) 소스 코드의 실행 없이, 코드의 의미를 분석해 결함을 찾아내는 원시적 코드 분석 기법 ( 2 ) 소스 코드를 실행하여 프로그램 동작이나 반응을 추적하고 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석
답: (1) static (2) dynamic
<< 화이트 박스&블랙 박스 테스트 >>
화이트박스 테스트 (White Box Test) - 화이트박스 테스트는 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법이다. - 모듈 안의 작동을 직접 관찰한다. - 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행된다. [화이트박스 테스트의 종류] 기초 경로 검사 (Base Path Testing) - 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측 정할 수 있게 해주는 테스트 기법 - 대표적인 화이트박스 테스트 기법임 제어 구조 검사 (Control Structure Testing) - 조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트케이스 설계 기법 - 루프 검사(Loop Testing) : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법 - 데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에초점을 맞춰 실시하는 테스트 케이스 설계 기법
[화이트박스 테스트의 검증 기준] 문장 검증 기준(Statement Coverage) =구문 검증 기준 - 소스 코드의모든 구문이 한 번 이상 수행되도록 테스트 케이스를 설계함 - 최소 한번은 모든 문장이 수행되도록 구성하는 검증 기준
결정 검증 기준 (Decision Coverage) = 분기 검증 기준(Branch Coverage) 소스 코드의 모든 조건문에 대해 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스를 설계함 조건식이 참(True)/거짓(False)일 때 수행되도록 구성하는 검증 기준
조건 검증 기준 (Condition Coverage) 소스 코드의 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한 번 이상 수행되도록 테스트 케이스를 설계함 결정 검증 기준과 달리 조건식에 상관없이 개별 조건l이 참(True)/거짓(False)일 때 수행되도록 구성하는 검증 기준 조건/결정 검증 기준 (Condition/Decision Coverage) 결정 검증 기준과 조건 검증 기준을 모두 만족하는 설계로, 조건문이 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력 데이터를 구분하는 테스트 케이스를 설계함 변경 조건/결정 검증 기준 (Modified Condition/ Decision Coverage) 조건/결정 검증 기준을 향상시킨 검증 기준으로, 개별 조건식이 다른 개별 조건식의 영향을받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 테스트 케이스를 설계함 개별 조건식이 다른 개별 조건식의 영향을 받지 않고 전체 조건식의 결과에 독립적으로영향을 주도록 구성하는 검증 기준 다중 조건 검증 기준 (Multiple Condition Coverage) 소스 코드의 조건문에 포함된 모든 개별 조건식의 모든 조합을 고려하도록 테스트 케이스를설계함 루프 테스트 (Loop Test) 프로그램 내에 존재하는 반복 구조에 초점을 맞춰 테스트 데이터 흐름 테스트 (Data Flow Test) 프로그램의 제어 흐름을 따라가면서 변수(데이터)의 정의, 사용, 소멸되는 과정을 집중적으로테스트
[25년 3회]
2. 다음은 소프트웨어 테스트 기법 중 하나에 대한 설명이다.
- 소프트웨어 테스트의 구조 기반(화이트박스)기법 중 하나로, 결정 포인트(Decision Point)내에 존재하는 모든 개별 조건식(Atomic Condition)을 대상으로 하는 커버리지 기준이 있다. - 하나의 결정문(예: if (A && B)또는if (X > 10 || Y == 0))안에는 여러 개의 조건식이 포함될 수 있는데이 커버리지는 각각의 조건식이True와False두 가지 경우를 모두 한 번 이상 만족하도록 테스트 케이스를 설계해야 한다. - 즉,모든 개별 조건이 두 방향의 결과를 거쳐야“커버되었다”고 판단하지만 그렇다고 해서 전체 결정식(Decision Expression)의 결과(True/False)가 모두 수행된다고 보장하지는 않는다.
( 1 ) 최소 한번은 모든 문장 수행 ( 2 ) 결정(Decision) 검증기준이라고도 하며, 조건별 참 / 거짓 ( 3 ) 2번과 달리 전체 조건식을 무시하며, 조건 상관없이 개별 조건 참 / 거짓
답: (1) 문장 (2) 결정 (3) 조건
[24년 3회] 13. 다음은 테스트 커버리지에 대한 문제이다. 아래 내용에 알맞는 답을 보기에서 골라 작성하시오.
1. 테스트를 통해 프로그램의 모든 문장을 최소한 한 번씩 실행했는지를 측정 2. 프로그램 내의 모든 분기(조건문)의 각 분기를 최소한 한 번씩 실행했는지를 측정 3. 복합 조건 내의 각 개별조건이 참과 거짓으로 평가되는 경우를 모두 테스트했는지를 측정
[보기] ㄱ.조건 ㄴ.경로 ㄷ.결정 ㄹ.분기 ㅁ.함수 ㅂ.문장 ㅅ.루프
답: 1. 문장 2. 분기 3. 조건
[23년 2회] 6. 다음은 테스트 커버리지에 대한 내용이다. 내용을 보고 보기에 알맞는 기호를 고르시오.
- 프로그램 내에 있는 결정포인트 내의 모든 각 개별 조건식에 대한 모든 가능한 결과(참/거짓)에 대해 적어도 한번 수행한다. - 소프트웨어 테스트 수행시 소스코드를 어느 수준까지 수행하였는가를 나타내는 기준을 나타낸다. - 실제 업무에서는 다양한 툴을 사용하여 테스팅 수행한다. - True/False에충분한 영향을 줄 수 없는 경우가 발생 가능한 한계점을 지닌다.
[보기] ㄱ. 구문 커버리지 ㄴ. 경로 커버리지 ㄷ. 조건/결정 커버리지 ㄹ. 변형 조건/결정 커버리지 ㅂ. 다중 조건 커버리지 ㅅ. 결정 커버리지 ㅇ. 조건 커버리지
답: ㅇ
[24년 1회] 14. 아래는 애플리케이션 테스트 관리에 대한 내용이다. 설명하는 답을 보기에서 골라 작성하시오.
- 모든 분기와 조건의 조합을 고려하나 모든 조합을 테스트하는 대신에 테스트가 필요한 중요한 조합을 찾아내는데에 중점을 둔다. - 특정 조건을 수행할 때 다른 조건과는 상관없이 전체 결과에 영향을 미치는 조건만을 테스트한 다. - 각각의 파라미터는 적어도 한 번은 최종 결과에 영향을 주어야 한다.
[보기] ㄱ. 구문 커버리지 ㄴ. 결정 커버리지 ㄷ. 조건 커버리지 ㄹ. 변경 조건/결정 커버리지 ㅁ.다중 조건 커버리지 ㅂ.경로 커버리지 ㅅ.조건/결정 커버리지
답: ㄹ.변경조건/결정커버리지
[20년 3회]
7. 다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.
답: 1234561, 124567 or 1234567, 124561
[23년 1회]
19. 다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.
답:1234561, 124567 or 1234567, 124561
[25년 1회] 15. 문장(Statement) 커버리지 테스트를 수행하려고 한다. 코드를 아래의 제어 흐름도 빈칸에 연결되도록 작성하고 문장 커버리지 순서대로 작성하시오.
int Main(int b[], int m, int x) { int a = 0; while (a < m || b[a] < x) { if (b[a] < 0) b[a] = -b[a]; a++; } return 1; }
답: (1) int a=0 (2) a < m || b[a] < x (3) b[a] < 0 (4) b[a] = -b[a]; (5) a++; (6) return1; (7) ③→④→⑤→②→⑥
[25년 2회] 11. 다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.
답: 1234561,124567 or 1234567,124561
분기 커버리지 : 프로그램 내의 모든 조건문의 결과가 True인 경우와 False인 경우를 최소 한번씩은 실행하도록 테스트 경로를 구성하는 것 제어 흐름 그래프에 결정 지점(다이아몬드 박스)이 2번, 6번이므로 두 곳에서 YES와 NO를 모두 가보는 순서로 동작한다.
블랙박스 테스트 (Black Box Test) - 블랙박스 테스트는 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다. - 사용자의 요구사항 명세를 보면서 테스트한다. - 주로 구현된 기능을 테스트한다. - 소프트웨어 인터페이스를 통해 실시된다.
[블랙박스 테스트의 종류] 동치 분할 검사 (Equivalence Partitioning Testing, 동치 클래스 분해) = 동등 분할 기법 - 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 하여 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법 - 동등 분할 기법이라고도 함 - 0이상 10이하의 수 n개와 0미만 10초과의 수 n개를 입력값으로 정한다. 경계값 분석(Boundary Value Analysis) - 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법 - -1, 0, 10, 11을 입력값으로 정한다. 원인-효과 그래프 검사 (Cause-Effect Graphing Testing) - 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법 오류 예측 검사 (Error Guessing) - 과거의 경험이나 확인자의 감각으로 테스트하는 기법 비교 검사 (Comparison Testing) - 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
[20년 3회]
12. 테스트의 종류 중, 둥치분할 테스트, 경계값 분석 테스트 등의 종류가 있는 테스트 기법을 쓰시오.
( ) 통해 요구사항 명세를 입력 조건과 출력 조건 간의 논리적 관계로 표현하고, 이를 기반으로 테스트케이스를 도출한다. ( )의 ‘원인(causes)’은 입력 조건을 의미하고 ‘결과(effects)’는 입력 조건의 결과를 의미하며, 원인과 결과 간의 논리적 관계를 AND, OR, NOT 같은 boolean 연산자를 사용하여 표현한다.
답: cause effect graph
[23년 3회]
16. 다음 설명에 알맞는 답을 보기에서 골라 작성하시오.
- 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법 - 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트 - 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법 - 모든 입력값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원 - 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용
통합 테스트 (Integration Test) - 통합 테스트는 단위 테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을찾는 테스트 기법이다. 종류 - 비점진적 통합 방식: 단계적으로 통합하는 절차 없이 모든 모듈이 미리 결합되어 있는프로그램 전체를 테스트하는 방법 - 종류: 빅뱅 통합 테스트 방식
- 점진적 통합 방식: 모듈 단위로 단계적으로 통합하면서 테스트하는 방법 - 종류: 하향식 통합 테스트, 상향식 통합 테스트, 혼합식 통합 테스트
하향식 통합 테스트(Top Down Integration Test) - 하향식 통합 테스트는 프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는기법이다. - 깊이 우선 통합법이나 넓이 우선 통합법을 사용한다. *스텁 :하향식 통합에 있어서 모듈 간의 통합 시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈
하향식 통합 테스트 절차 ① 주요 제어 모듈은 작성된 프로그램을 사용하고, 주요 제어 모듈의 종속 모듈들은 스텁(Stub)으로 대체한다. ② 깊이 우선 또는 넓이 우선 등의 통합 방식에 따라 하위 모듈인 스텝들이 한 번에 하나씩 실제 모듈로 교체된다. ③ 모듈이 통합될 때마다 테스트를 실시한다. ④ 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트를 실시한다.
상향식 통합 테스트(Bottom Up Integration Test) - 상향식 통합 테스트는 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는기법이다. - 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)가 필요하다. - 데이터의 입·출력을 확인하기 위해 더미 모듈인 드라이버를 생성한다. 상향식 통합 테스트 절차 ① 하위 모듈들을 클러스터(Cluster)로 결합한다. ② 상위 모듈에서 데이터의 입·출력을 확인하기 위해 더미 모듈인 드라이버(Driver)를 작성한다. ③ 통합된 클러스터 단위로 테스트한다. ④ 테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고 드라이버는 실제모듈로 대체된다.
혼합식 통합 테스트 - 혼합식 통합 테스트는 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 사용하여 최적의 테스트를 지원하는 방식이다. - 샌드위치(Sandwich)식 통합 테스트 방법이라고도 한다. 회귀 테스팅 (Regression Testing) - 회귀 테스트는 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지확인하는 테스트이다. - 이미 테스트된 프로그램통 테스팅을 반복하는 것이다. - 회귀 테스트는 수정한 모듈이나 컴포넌트가 다른 부분에 영향을 미치는지, 오류가 생기지 않았는지 테스트하여 새로운 오류가 발생하지 않음을 보증하기 위해 반복 테스트한다.
[21년 2회] 20. 다음 괄호 안에 알맞은 답안을 작성하시오.
- 테스트 하네스의 도구 구성 요소 중, 상향식 테스트시, 상위 모듈 역할을 대신하는 테스트 드라이버와 하향식 테스트 시, 하위 모듈 역할을 대신하는 테스트 ( ) 이 있다.
답: 스텁
[21년 3회]
20. 다음은 소프트웨어 통합 테스트에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
( 1 ) 방식은 이름에서도 알 수 있듯이, 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며, 이 방식을 사용하기 위해서는 ( 2 )가 필요하다. ( 2 )는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.
답: (1) 상향식 (2) 테스트 드라이버
[23년 2회] 20. 다음 설명에 대한 알맞는 답을 작성하시오.
1. - 하향식 테스트 시 상위 모듈은 존재하나 하위 모듈이 없는 경우의 테스트를 위해 임시 제공되는 모듈이다. - 특별한 목적의 소프트웨어를 구현하는 것으로 컴포넌트를 개발하거나 테스트할 때 사용된다. - 서버-클라이언트 구조에서 서버만 구현된 상태로 테스트를 해보고 싶을때 단순히 값만 넘겨주는 가상의 클라이언트를 만들어서 테스트 할 수 있다.
2. - 상향식 테스트 시 상위 모듈 없이 하위 모듈이 존재할 때 하위 모듈 구동 시 자료 입출력을 제어하기 위한 제어 모듈(소프트웨어)이다. - 서버-클라이언트 구조에서 클라이언트만 구현된 상태로 테스트를 해보고 싶을때 접속 인증 등의 간단한 기능만 하는 가상의 서버를 만들어서 테스트 할 수 있다.
답: 1. 스텁 2. 드라이버
[21년 3회]
20. 다음은 소프트웨어 통합 테스트에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
( 1 ) 방식은 이름에서도 알 수 있듯이, 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며, 이 방식을 사용하기 위해서는 ( 2 )가 필요하다. ( 2 )는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.
답: (1) 상향식 (2) 테스트 드라이버
[26년 1회]
19.다음은 통합 테스트에서 사용되는 더미 모듈에 대한 설명이다. 괄호 안에 들어갈 알맞은 용어를 쓰시오.
( 1 ) 은/는 하위 모듈을 대신하여 단순한 결과값만 반환하도록 임시로 작성된 더미 모듈로, 하향식 통합 테스트 수행 시 필요하다. ( 2 ) 은/는 상위 모듈을 대신하여 하위 모듈의 데이터 입력과 출력을 확인하기 위한 더미 모듈로, 상향식 통합 테스트 수행 시 필요하다.
답: 1. 스텁 2. 드라이버
[22년 2회]
11. 다음 설명에 알맞는 테스트 용어를 보기에서 골라 작성하시오.
- 오류를 제거하거나 수정한 시스템이나 시스템 컴포넌트 또는 프로그램이 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지를 확인하는 일종의 반복 시험이다. - 반복적인 시험이 필요한 이유는 오류가 제거·수정되는 상당수의 시스템이 의도치 않았던 오동작이나 새로운 형태의 오류를 일으키기 때문이다. - 결국, 수정·변경된 시스템이나 시스템 컴포넌트 또는 프로그램이 명세된 요구 사항을 충족시키는지를 확인하는 시험의 한 형태이다.
답: Regression (회귀 테스트)
[21년 1회]
3. 다음은 요구사항의 분류에 대한 설명이다. 괄호 ( ) 안에 들어갈 요구사항의 유형에 대해서 쓰시오.
( 1 ) 요구사항은 시스템이 제공하는 기능, 서비스에 대한 요구사항이다. ( 2 ) 요구사항은 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항이다.
답: (1) 기능적 (2) 비기능적
[26년 1회] 4. 다음은 비기능적 요구사항에 대한 설명이다. 각 항목이 의미하는 요구사항 유형을 보기에서 골라 쓰시오.
1. 시스템 운영 중 로그 관리 및 모니터링 기능을 제공해야 한다. 2. 시스템 운영 시 최소 메모리 용량을 확보해야 하며, 자원 사용량은 제한 범위 내에 있어야 한다. 3. 사용자 요청에 대한 응답 시간은 최대 1분을 초과하지 않아야 한다