파레토 법칙 : 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는법칙
살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않은 현상
오류-부재의 궤변 : 소프트웨어의 결함을 제거해도 요구사항을 만족하지 않으면 품질이 높다고 할 수 없다
확인(Validation) : 고객의 요구사항을 만족했는지 확인
검증(Verification) : 개발자입장에서 명세서에 맞게 만들어졌는지 보는것
정적 테스트
프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
- 동료검토 : 동료들이 결함을 발견
- 워크스루 : 회의를 하기 전 명세서를 미리 배포하여 사전 검토한 후에 결함을 발견
- 인스펙션 : 작성자를 제외한 검토 전문가들이 명세서를 확인
동적 테스트
프로그램을 실행하여 오류를 찾는 테스트
목적에 따른 테스트
- 회복 테스트
- 안전 테스트
- 강도(Stress) 테스트
- 성능
- 구조
- 회귀(Regression)
- 변경, 수정된 코드에 새로운 결함이 없음을 테스트
- 병행(Parallel)
- 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트
화이트박스테스트
- 논리적인 모든 경로를 테스트하며 구조적 테스트이다.
기초경로 검사(Base Path Testing)
제어구조 검사(Control Structure Testing)
- 조건검사(Condition Testing) : 논리적 조건을 테스팅
- 루프검사(Loop) : 반복구조에 초점을 맞춰 테스팅
- 데이터 흐름 검사(Data Flow) : 변수의 정의와 변수 사용자 위치에 초점을 맞춰 테스트
화이트박스 테스트 검증 기준
- 문장 검증 기준(Statement) : 모든 구문이 한번이상 수행되도록 테스트
- 분기 검증 기준(Bracnh) / 결정 검증 기준(Decision): 모든 조건문의 결과가 True인경우와 False인 경우가 한번이상 수행되도록 테스트
- 조건 검증 기준(Condition) : 개별 조건식의 결과가 True인 경우와 False인 경우가 한번이상 수행되도록 테스트
- 분기/조건 기준 : 모든 조건문의 True인 경우와 False인 경우에 따라 조건 검증 기준의 입력데이터를 구분하는 테스트 케이스 설계
블랙박스 테스트
- 각 기능이 완전히 작동되는 것을 입증하는 테스트
테스트 종류
- 동치분할검사(Equivalence Partitioning Testing) : 타당한 input ,타당하지 않은 input을 넣어 입력결과가 맞는지 확인
- 경계값 분석(Boundary value Analysis) : 중간값보단 경계값을 테스트 케이스로 설정, 동치 분할 기법을 보안
- 원인-효과 그래프(Cause-Effect-Graph 테스팅) : 입력과 출력 데이터의 관계를 분석하고 효용성이 높은 TC를 선정
- 오류 예측 검사(Error Guessing) : 과거의 경험이나 감각으로 테스트
- 비교검사(Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 결과가 동일한 결과가 나오는지 테스트
V-모델에 따른 애플리케이션 테스트
요구사항 → 분석 → 설계 → 구현 → 단위테스트 → 통합테스트 → 시스템 테스트 → 인수테스트
- 단위테스트
- 컴포넌트나 모듈단위로 테스트
- 통합테스트
- 컴포넌트들을 연결하면서 테스트
- 시스템 테스트
- 전체 시스템이 잘 돌아가는지 테스트
- 인수테스트
- 사용자 요구사항에 맞는지 테스트
- 알파 테스트 : 개발자옆에서 사용자가 하는 테스트
- 베타 테스트 : 선별된 사용자가 다른사용자들 앞에서 하는 테스트
하향식 통합 테스트
- 상위 → 하위
- DFS,BFS 사용
- 종속 모듈들은 스텁으로 대체한다
상향식 통합 테스트
- 하위 → 상위
- 하위 모듈을 클러스터로 결합
- 입.출력을 확인하기 위해 드라이버를 작성한다.
- 클러스터 단위로 테스트
- 테스트가 끝나면 클러스터는 올라가고 드라이버가 실제 모듈로 대체된다
회귀 테스팅(Regression Testing)
- 통합테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 이미 테스트된 프로그램의 테스팅을 진행한다
애플리케이션 성능분석
- 처리량(Throughput) : 일정 시간내에 애플리케이션이 처리하는 일의 양
- 응답 시간(Response) : 요청을 전달한 시간부터 응답이 도착할때 까지 걸린 시간
- 경과 시간(Turn Around Time) : 작업 의뢰 시간 → 처리 완료까지 걸린 시간
- 자원 사용률(Resouce Usage) : 작업동안의 CPU사용량,메모리 등등…
성능 테스트 도구?
JMeter : HTTP,FTP 등 프로토콜을 지원하는 부하 테스트, 여러플랫폼에서 지원
LoadUI : 서버 모니터링 등 사용자 편리성이 강화된 도구
OpenSTA : JMETER랑 같은데 WINDOW에서 지원
- 스파게티 코드 : 복잡한 코드
- 외계인코드 : 오래되거나 개발자가 없어서 유지보수가 어려운 코드