애플리케이션에 잠재되어 있는 결함을 찾아내는 일
기본원리 | 설명 |
---|---|
파레토 법칙 | 20%부분에서 전체 결함의 80% 가발생 |
살충제 패러독스 | 동일한 테스트 케이스로 같은 테스트만 반복한다면 결함이 발견되지 않음 |
오류-부제의 궤변 | 모든 오류를 제거해도 사용자 요구사항에 만족하지 못한다면 품질이 높다고 할 수 없음 |
완벽한 테스트 불가능 | 결함없음을 증명할 수는 없다 |
테스팅은 정황 의존 | (context)정황에 따라 테스트 결과가 바뀐다. 정황에 따라 테스트를 달리 해야한다. |
테스트와 위험은 반비례 | 테스트를 할 수록 위험은 내려감 |
테스트의 점진적 확대 | 테스트는 작은 부분부터 시작하여 점점 확대하며 진행 |
테스트의 별도 팀 수행 | 테스트는 개발자와 관계없는 별도의 팀에서 수행. |
원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계
각 기능 작동 입증에 중점, 내부구조 모른채로 명세 보면서 테스트, 인터페이스 통해실시
이름 | 내용 |
---|---|
동치 분할 검사 | 입력 자료 개수 비 균등하게 하여 출력 확인 |
경계값 분석 | 입력 조건의 경계값을 테스트 케이스로 선정 |
원인 - 효과 그래프 검사 | 입력데이터 , 출력의 관계 분석 후 효용성 높은 테스트 케이스를 선정하여 검사 |
오류 예측 검사 | 과거의 경험이나 확인자의 감각으로 테스트 |
비교 검사 | 여러 버전의 프로그램에 대하여 동일한 테스트 케이스로 동일 결과 출력되는 지 확인 |
단위 테스트 : 사용자 요구사항 기반으로 한 테스트 최우선.
모듈이나 컴포넌트에 초점을 맞춰 테스트
통합 테스트 : 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
시스템 테스트 : 개발된 소프트웨어가 완벽하게 수행되는가를 점검하는 테스트
기능적 요구사항/ 비기능적 요구사항 테스트
인수 테스트 : 사용자의 요구사항을 충족하는지에 중점을 주고 테스트
ex) 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트
베타 테스트 : 선정된 최종 사용자가 여려명의 사용자 앞에서 테스트
사용자 인수 테스트 / 운영상의 인수 테스트 / 계약 인수 테스트 / 규정 인수 테스트
[종류]
상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트 , 깊이우선 or 넓이 우선 택1
하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
= 샌드위치식 통합 테스트 방법, 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 사용하여 최적의 테스트를 지원하는 방식
= 통합테스트로 인한 오류 없는지 하는 반복 테스트
일반적인 절차라고 생각하면 됨.
계획 -> 분석/디자인 -> 테케및 시나리오 작성 -> 수행 -> 결과평가 -> 결함추적 및 관리
에러 발견 -> 에러 등록 -> 에러 분석 -> 결함 확정 -> 결함 할당 -> 결함 조치 -> 결함 조치 검토 및 승인
사용자의 요구사항을 정확하게 준수했는지 확인하기 위해 설계된 테스트 항목에 대한 명세서
= 테스트케이스의 적용 순서가 있는 집합
= 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법
이름 | 내용 |
---|---|
참 오라클 | 모든 테케 입력값에 대해 기대하는 결과를 제공하는 오라클 |
샘플링 오라클 | 특정한 몇몇(ex 경계값) 대해서만 기대하는 결과 제공 |
추정 오라클(Heuristic) | 특정 케이스 입력값은 제공하고, 나머지는 추정으로 처리 |
일관성 검사 오라클 | app 에 변경이 있을시 수행 전과 후의 값이 동일한지 확인하는 오라클 |
테스트 유형에 따른 자동화 도구
정적 분석 도구 : 프로그램실행x 하고 분석하는 도구
테스트 실행 도구 : 스크립트 언어를 사용하여 테스트를 실행하는 도구
- 데이터 주도 접근 방식 : 스프레드 시트에 테스트 데이터 저장
성능 테스트 도구 : 가상의 사용자 만들어 테스트 수행
테스트 통제 도구 : 테스트 계획 관리 수행, 결함관림 등을 수행 하는 도구
ex) 형상 관리 도구, 결함/ 추적 관리 도구
= 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트 되도록 하는 도구
이름 | 설명 |
---|---|
테스트 드라이버 | 하위모듈호출, 파라미터 전달 |
테스트 스텁 | 테스트용 모듈 |
테스트 슈트(Test Suites) | 테스트케이스 집합 |
테스트 케이스 | 명세서 |
테스트 스크립트 | 자동화된 명세서 |
목 오브젝트(Mock object) | 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체 |
소프트웨어 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 것 = 결함
JMeter(HTTP/FTP) / LoadUI (서버 모니터링) / OpenSTA(부하 테스트)
Scouter(단일 뷰 통합/실시간 모니터링) / Zabbix (웹 기반 서버 모니터링 도구)
식 | 예시 |
---|---|
push, pop | |
이진 트리, 이진 탐색 | |
for문 | |
힙 정렬, 2-way 합병 정렬 | |
삽입, 쉘, 선택, 버블, 퀵 정렬 | |
피보나치 |
= 맥케이브순환도, 맥케이브 복잡도 메트릭
제어 흐름도 이론에 기초를 둔 논리적인 복잡도를 측정하기 위한 소프트웨어의 척도
v는 영역수, E는 화살표 수 N은 노드수
좋은코드 = Clean code
나쁜 코드 = Bad code
- 가독성
- 단순성
- 의존성 배제
- 중복성 최소화
- 추상화
정적 분석 도구
pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura
동적 분석 도구
Avalanche, Valgrind