테스팅
-
정의
- 노출되지 않은 숨어있는 결함을 찾기 위해 소프트웨어를 작동시키는 일련의 절차
- 테스트 케이스에 따라 SW를 동적으로 실행시켜 예상 결과치와 비교 분석
-
목적
- 프로그램의 잠재된 오류 발견
- 기술적 기능 및 성능의 확인
- 결함이 없음을 증명하는 것이 아니고 결함이 존재함을 보여주는 작업
-
이점
- 디버깅 감소: 디버깅에 소모되는 시간 절약
- 코드베이스 규모에 상관없이 수시로 리팩토링 작업 가능
- 테스트 코드는 프로덕션 코드와 병렬적으로 존재하여 신뢰성 있다
- 테스트 코드가 코드 리뷰어의 시간을 절약하도록 도움
- 디자인, 설계에 도움
-
원칙

- 종류
- 프로그램 실행 여부
- 동적 테스트: 프로그램 실행을 요구하는 테스트. ex) 화이트 / 블랙 박스
- 정적 테스트: 프로그램 실행 없이 구조를 분석하여 논리성 검증
- 테스트에 대한 시각
- 검증 : 시각적으로 소프트웨어가 명세화 된 기능을 올바로 수행하는지 확인
- 확인: 사용자 시각으로 올바른 소프트웨어가 개발되었는지 입증
- 공인: 사용자 또는 전문가가 SW품질을 공식적으로 확인
- 테스트 목적에 따른 분류
- 회복 테스트:
- 다양한 방법을 실패를 유도하고 회복이 적절히 되는지 검증
- 운영체제 ,DBMS, 통신용 소프트웨어 등의 안정성 테스트에 중요
- 안전 테스트:
- 시스템 내의 보호 기능이 불법적인 침투로부터 시스템을 보호하는지 테스트
- 해킹 등으로부터 보호하는 목적
- 메시지의 기밀성, 무결성, 사용자 인증, 접근 통제 등의 보안 기능 테스트
- 강도(stress) 테스트:
- 비정상적인 값, 양, 빈도의 자원을 입력하여 수행 상태 테스트
- 부하, 메모리 부족, 특정 서비스나 하드웨어가 사용 불가능할 때 같은 상황 테스트
- 민감도 테스트: 유효한 입력 중 부적절한 결과 일으키는 데이터 조합을 알아냄
- 인수 테스트의 한 종류
- 구조 테스트:
- 소프트웨어 내부의 논리적인 경로에 대한 복잡도 평가
- 내부적 형상의 구조를 이용
- 화이트 박스 테스트 및 유닛 테스트로도 분류 된다.
- 성능 테스트:
- 통합된 시스템의 전후 관계에서 실행 시간을 테스트
- 효율성 진단
- 자원 이용, 처리 시간, 요구된 응답에 대한 반응 등 목표치를 달성하는지 테스트
- SW의 실시간 성능을 테스트, 강도 테스트와 함께 실시
- 엄격한 형식으로 자원 이용률 측정이 필요
블랙 박스 테스팅
- 소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트로 기능 테스트라고도 한다.
- 사용자의 요구사항 명세를 보면서 테스트, 주로 구현된 기능을 테스트
- 소프트웨어 인터페이스에서 실시
- 부정확하거나 누락된 기능, 인터페이스 오류, 자료구조 나 외부 데이터 베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종료 오류등을 발견하기 위함