소프트웨어/애플리케이션 테스트란?
소프트웨어 안에서 시스템 사용자가 요구하는 기능, 성능, 사용성 등을 찾아 확인하고 그 안에 숨겨진 결함을 찾는 행동
소프트웨어 테스트 기본 원리
- 결함이 존재 : 테스팅은 결함이 존재함을 밝히는 것
- 완벽한 테스팅은 불가능 : 모든 경우의 수 테스트 불가능
- 개발 초기에 시작 : 테스팅 기간 단축, 결함 예방
- 결함 집중 : 20%에서 80%의 결함을 발견, 파레토 법칙(pareto)
- 살충제 패러독스 : 동일한 테스트로는 새로운 결함을 잡을 수 없음
- 정황에 의존 : 소프트웨어 성격에 따라 테스트가 달라져야함
- 오류 부재의 궤변 : 요구사항을 충족시키지 못하면 오류가 없다고 할 수 없음.
애플리케이션 테스트 분류
1. 실행 여부에 따른 분류
- 정적테스트
- 코드를 실행하지 않고 분석하는 테스트
- 종류 : 워크스루, 인스펙션, 코드검사
- 동적테스트
- 프로그램을 실행하여 오류를 찾는 테스트로 개발 모든 단계에서 수행할 수 있다.
- 종류 : 블랙박스 테스트, 화이트박스 테스트
2. 테스트 기반에 따른 분류
- 명세기반 테스트
- 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 확인하는 테스트
- 종류 : 동등분할 테스트, 경계값 분석 테스트
- 구조기반 테스트
- 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트
- 종류 : 구문 기반 테스트, 결정 기반 테스트, 조건 기반 테스트 등
- 경험기반 테스트
- 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 하는 테스트
- 요구사항 명세가 불명확하거나 테스트 시간에 제약이 있을 경우 수행하면 좋다
- 종류 : 에러 추정, 체크리스트, 탐색적 테스팅
3. 관점(시각)에 따른 분류
- 검증테스트
- 개발자의 관점에서 소프트웨어의 생산 과정을 테스트
- 제품이 명세서대로 완성 되었는가를 검증
- 확인 테스트
- 사용자의 관점에서 소프트웨어의 결과를 테스트
- 사용자가 요구한 대로 제품이 정상 작동하는지를 확인
4. 목적에 따른 분류
- 회복(Recovery) 테스트 : 시스템에 여러 결함을 줘서 실패를 유도하고 올바르게 복구되는지를 확인
- 안전(Security) 테스트 : 시스템에 설치된 시스템 보호 도구가 불법적인 침입에 보호할 수 있는지 확인
- 강도(Stress) 테스트 : 시스템에 과도한 정보량 등을 부과해 과부하시 정상작동 하는지 확인
- 성능(Performance) 테스트 : 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트로 응답시간, 처리량 등을 확인
- 구조(Structure) 테스트 : 소프트웨어 내부의 논리적 경로, 소스 코드의 복잡도 등을 평가
- 회귀(Regression) 테스트 : 변경된 코드에 새로운 결함이 없는지 확인
- 병행(Parallel) 테스트 : 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력해 결과를 비교
테스트 레벨(단통시인)
- 단위테스트 : 사용자 요구사항에 대한 단위 모듈, 서브루틴 등을 테스트하는 단계
- 통합테스트 : 모듈간 또는 컴포넌트 간의 인터페이스를 테스트하는 단계 (상/하향식)
- 시스템 테스트 : 전체 시스템 또는 제품의 동작에 대해 테스트하는 단계 (기능/비기능)
- 인수테스트 : 계약상 요구사항이 만족되었는지 테스트하는 단계 (알파/베타)
테스트 오라클(참샘휴일)
테스트를 수행한 결과가 참인지 거짓인지를 판단하기 위해 미리 정의된 참 값을 대입하여 비교하는 테스트 기법
- 참 오라클 : 모든 테스트 케이스 입력값의 기대한 결과값을 확인
- 샘플링 오라클 : 특정 값을 뽑아 샘플링 값으로 테스트,
- 휴리스틱 오라클 : 샘플릭 오라클에 휴리스틱(추정)을 더해 테스트하지 않은 값을 참으로 추정
- 일관성 검사 오라클 : 이전 수행결과와 수정/변경된 이후 수행 결과가 동일한지 검증
테스트 하네스
- 자동화된 테스트 지원도구
- 테스트와 모니터링하기 위해 만들어진 소프트웨어 구성
- 테스트 드라이버 / 테스트 스텁
테스트 드라이버(Test Driver)
- 컴포넌트나 시스템을 제어하고나 대체. 완성된 컴포넌트를 호출
- 상향식 테스트에 쓰임
테스트 스텁(Test Stub)
- 골격만 있는 컴포넌트를 구현. 모듈을 임시로 만들어 대체.
- 하향식 테스트에 쓰임
화이트박스 테스트
- 구조기반 테스트로 모듈 내부 소스 코드를 보며 수행(직접관찰)
- 종류 : 기초경로검사, 제어구조 검사(조건검사, 루프검사, 데이터 흐름 검사)
화이트박스 테스트 검증기준
- 구문(문장) 커버리지 : 프로그램 내의 모든 명령문을 적어도 한 번 수행
- 결정 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
- 조건 커버리지 : 결정 포인트 내의 개별 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
- 조건/결정 커버리지 : 전체 조건식 + 개별 조건식이 각각 참과 거짓이 되도록 수행
- 변경 조건/결정 커버리지 : 개별 조건식이 다른 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 줌
- 다중 조건 커버리지 : 결정 조건 내 모든 개별 조건식의 가능한 조합을 100%보장
블랙박스 테스트
명세기반 테스트로 외부 사용자의 요구사항 명세를 보며 수행하는 테스트
- 동등(동치)분할 테스트 : 같은 결과가 예상되는 입력 범위를 동등 클래스로 분할하고, 각 범위의 대표값으로 테스트
- 경계값 분석 테스트 : 각 조건별 입력범위의 경계값을 테스트
- 결정테이블 테스트 : 요구사항을 테이블로 구성하여 조건-행위를 조합하여 테스트
- 상태전이 테스트 : 이벤트에 의해 객체 상태가 전이되는 경우의 수 측정
- 유스케이스 테이스 : 프로세스 흐름 기반으로 테스트
- 분류트리 테스트 : 트리 구조로 분석 및 표현하여 테스트
- 페어와이즈 테스트 : 데이터 값을 최소 한 번씩 조합, 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트
- 원인-결과 그래프 테스트 : 입력조건과 출력조건 간의 논리적 관계를 표현하고, 이를 기반으로 테스트
- 비교테스트 : 여러 버전의 프로그램에 같은 데이터를 입력하여 결과를 비교하는 테스트
애플리케이션 성능지표
구분 | 설명 |
처리량(Throughput) | 일정 시간 내에 애플리케이션이 처리하는 일의 양 |
응답시간(Pesponse Time) | 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때 까지의 시간 |
경과시간(Turn Around Time) | 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간 |
자원사용(Resource Usage) | 애플리케이션에 의뢰한 작업을 처리하는 동안 CPU, 메모리, 네트워크 등 자원의 사용량 |
반응형
'공부 > 정보처리기사' 카테고리의 다른 글
[정처기 실기 요약 #3] 데이터베이스 - 모델링 (0) | 2023.09.18 |
---|---|
[정처기 실기 요약 #2] 소프트웨어 모듈화 / 응집도(Cohension)와 결합도(Coupling) (0) | 2023.09.17 |
정보처리기사 필기 기출문제 출제유형 분석(21년 8월 기출) (0) | 2023.02.25 |
정보처리기사 필기 기출문제 출제유형 분석(22년 4월 기출) (0) | 2023.02.19 |
클린코드와 TDD (0) | 2021.10.29 |
댓글