728x90
반응형
블랙박스 테스팅(Black Box Testing)
- 프로그램 구조를 고려하지 않음
- 테스트 케이스는 프로그램이나 모듈의 요구나 명세를 기초로 결정
- 입력과 출력에 대해 알아야 함
- 기능 테스트
- 가능한 모든 기능을 전부 테스트 하는 것이 좋음
- 종류
화이트 박스 테스팅(White Box Testing)
- 모듈의 논리적인 구조를 체계적으로 점검하는 구조적 테스팅
- 모듈 안의 작동을 자세히 관찰, 각각 라인이 제대로 수행되는지를 철저하게 시험
- 종류
- 검증 기준(Test Coverage)
- 테스트를 어느 정도 완벽히 수행할 것인가의 기준
단위 테스트(Unit Test)
코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트
- 인터페이스, 외부적 I/O, 자료 구 조, 독립적 기초 경로, 오류처리 경로, 경계 조건 등을 검사
- 사용자의 요구사항을 기반으로 한 기능 성 테스트를 최우선으로 수행
- 구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행
- 발견 가능한 오류
- 알고리즘 오류에 따른 원치 않는 결과
- 탈출구가 없는 반복문의 사용
- 틀린 계산 수식에 의한 잘못된 결과
- 단위 모듈의 구현 과정
- 단위 기능 명세서 작성 -> 입출력 기능 구현 -> 알고리즘 구현
- IPC(Inter-Process Communication)
- 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합으로, 복수의 프로세스를 수행하며 이뤄지는 프로세스 간 통신까지 구현이 가능
- IPC의 대표 메소드 5가지
Shared Memory | 다수의 프로세스가 공유 가능한 메모리를 구성하여 프로세스 간 통신을 수행 |
Socket | 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스들 간 통신을 수행 |
Semaphores | 공유 자원에 대한 접근 제어를 통해 프로세스 간 통신을 수행 |
Pipes&named Pipes | - Pipe 라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행 - 하나의 프로세스가 Pipe를 이용 중이라면 다른 프로세스는 접근 할 수 없음 |
Message Queueing | 메시지가 발생하면 이를 전달하는 형태로 프로세스 간 통신을 수행 |
통합 테스트(Integration Test)
단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
시스템 테스트(System Test)
개발된 소프트웨어가 해당 컴퓨터 시스 템에서 완벽하게 수행되는가를 점검하는 테스트
- 환경적인 장애 리스크를 최소화하기 위해서는 실제 사용 환경과 유사하게 만든 테스트 환경에서 테스트를 수행
- 시스템 테스트는 기능적 요구사항과 비기능적 요구사 항으로 구분하여 각각을 만족하는지 테스트
인수 테스트(Acceptance Test)
개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법
- 인수 테스트는 개발한 소프트웨어를 사용자가 직접 테스트
- 인수 테스트에 문제가 없으면 사용자는 소프트웨어를 인수하게 되고, 프로젝트는 종료
- 인수 테스트의 종류
하향식과 상향식 통합 테스트
하향식 통합 테스트 (Top Down Integration Test) |
상향식 통합 테스트 (Bottom Up Integration Test) |
프로그램의 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트 | 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트 |
- 주요 제어 모듈을 기준으로 하여 아래 단계로 이동하면서 통합, 이때 우선 통합법이나 넓이 우선 통합법을 사용 - 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음 - 상위 모듈에서는 테스트 케이스를 사용하기 어려움 |
- 가장 하위 단계의 모듈부터 통합 및 테스트가 수행 - 스텁(Stub)은 필요하지 않지만, 하나의 주요 제어 모듈과 관련된 종 속 모듈의 그룹인 클러스터(Cluster)가 필요 |
드라이버와 스텁
회귀 테스팅(Regression Testing)
이미 테스트된 프로그램의 테스팅을 반복하는 것
통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트
- 수정한 모듈이나 컴포넌트가 다른 부분에 영향을 미치는지 오류가 생기지 않았는지 테스트하여 새로운 오류가 발생하지 않음을 보증하기 위해 반복 테스트
- 모든 테스트 케이스를 이용해 테스팅하는 것이 가장 좋음
- 시간 비용이 많이 필요 -> 기존 테스트 케이스 중 변경된 부분을 테스트할 수 있는 테스트 케이스만을 선정하여 수행
애플리케이션 테스트 프로세스
순서
테스트 계획 | - 프로젝트 계획서, 요구 명세서 등을 기반으로 테스트 목표를 정의하고 테스트 대상 및 범위를 결정 |
테스트 분석 및 디자인 | - 테스트의 목적과 원칙을 검토, 사용자의 요구 사항을 분석 |
테스트 케이스 및 시나리오 작성 | - 테스트 케이스의 설계 기법에 따라 테스트 케이스를 작성, 검토 및 확인 후 테스트 시나리오 작성 |
테스트 수행 | - 테스트 환경 구축 후 테스트 수행 - 테스트의 실행 결과를 측정하여 기록 |
테스트 결과 평가 및 리포팅 | - 테스트 결과를 비교 분석하여 테스트 결과서를 작성 |
결합 추적 및 관리 | - 테스트를 수행한 후 결함이 어디에서 발생했는지, 어떤 종류의 결함인지 등 결함을 추적하고 관리 |
테스트 시나리오(Test Scenario)
테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합
테스트 케이스들을 적용하는 구체적인 절차를 명세한 문서
- 테스트 시나리오에는 테스트 순서에 대한 구체적인 절차, 사전 조건, 입력 데이터 등이 설정
테스트 오라클(Test Oracle)
테스트 오라클은 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동을 말함
- 테스트 오라클은 결과를 판단하기 위해 테스트 케이스에 대한 예상 결과를 계산하거나 확인
- 종류
테스트 자동화 도구
개념
- 테스트 자동화는 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것
도구의 유형
테스트 하네스(Test Harness) 구성 요소
테스트 드라이버(Test Driver) | - 테스트 대상의 하위 모듈을 호출, 매개변수를 전달, 모듈 테스트 수행 후의 결과를 도출하는 도구 |
테스트 스텁(Test Stub) | - 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구 - 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈 |
테스트 슈트(Test Suites) | - 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합 |
테스트 케이스(Test Case) | - 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값 - 실행 조건, 기대 결과 등으로 만들어진 테스트 케이스의 집합 |
테스트 스크립트(Test Script) | - 자동화된 테스트 실행 절차에 대한 명세서 |
목 오프젝트(Mock Object) | - 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체 |
728x90
반응형
'자격증 준비 > 정보처리기사필기 - 2과목(소프트웨어 개발)' 카테고리의 다른 글
[정보처리기사 필기] 2과목 - 정렬, 검색 알고리즘 (0) | 2023.01.12 |
---|---|
[정보처리기사 필기] 2과목 - 자료구조 (0) | 2023.01.11 |
[정보처리기사 필기] 2과목 - 빌드 (0) | 2023.01.11 |
[정보처리기사 필기] 2과목 - 성능과 품질 (0) | 2023.01.10 |
[정보처리기사 필기] 2과목 - 테스팅(1) (0) | 2023.01.03 |