애플리케이션 테스트
- 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차
- 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인하고 기능을 정확히 수행하는지 검증한다.
기본 원리
기본 원리 | 설명 |
완벽한 테스트 불가능 | 소프트웨어의 잠재적인 결함을 줄일 수 있지만 소프트웨어에 결함이 없다고 증명할 수는 없음 |
파레토 법칙 (Pareto Principle) | 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙 |
살충제 패러독스 (Pesticide Paradox) | 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상 |
테스팅은 정황(Context) 의존 | 소프트웨어의 특징, 테스트 환경, 테스터의 역량 등 정황에 따라 테스트 결과가 달라질 수 있으므로, 정황에 따라 테스트를 다르게 수행해야 함 |
오류-부재의 궤변 (Absense of Errors Fallancy) |
소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없는 것 |
테스트와 위험은 반비례 | 테스트를 많이 하면 할 수록 미래에 발생할 위험을 줄일 수 있음 |
테스트의 점진적 확대 | 테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 함 |
테스트의 별도 팀 수행 | 테스트는 개발자와 관계없는 별도의 팀에서 수행해야함 |
프로그램 실행 여부에 따른 테스트
정적 테스트
- 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
- 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도, 남은 결함등을 발견하기 위해 사용함
- 종류 : 워크스루, 인스펙션, 코드 검사
- 워크스루 : 소프트웨어 개발자가 모집한 전문가들이 개발자의 작업 내역을 검토하는 것
- 미리 준비된 자료를 바탕으로 정해진 절차에 따라 평가함
- 인스펙션 : 워크스루를 발전시킨 형태
- 소프트웨어 개발 단계에서 산출된 결과물의 품질을 평가하고, 이를 개선하기 위한 방법을 제시
- 워크스루 : 소프트웨어 개발자가 모집한 전문가들이 개발자의 작업 내역을 검토하는 것
동적 테스트
- 프로그램을 실행하여 오류를 찾는 테스트
- 소프트웨어 개발의 모든 단계에서 테스트를 수행함
- 종류 : 블랙박스 테스트, 화이트박스 테스트
테스트 기반(Test Bases)에 따른 테스트
명세 기반 테스트
- 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트
- 종류 : 동등 분할, 경계 값 분석등
구조 기반 테스트
- 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트
- 종류 : 구문 기반, 결정 기반, 조건 기반 등
경험 기반 테스트
- 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트
- 사용자의 요구사항에 대한 명세가 불충분하거나 테스트 기간에 제약이 있는 경우 수행하면 효과적임
- 종류 : 에러 추정, 체크 리스트, 탐색적 테스팅
시각에 따른 테스트
검증(Verification) 테스트
- 개발자의 시각에서 제품의 생산 과정을 테스트하는 것
- 제품이 명세서대로 완성됐는지를 테스트 함.
확인 테스트(Validation) 테스트
- 사용자의 시각에서 생산된 제품의 결과를 테스트하는 것
- 사용자가 요구한대로 제품이 완성됐는지, 제품이 정상적으로 동작하는지를 테스트함
목적에 따른 테스트
회복 (Recovery) 테스트 | 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트 |
안전(Security) 테스트 | 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보 호할 수 있는지를 확인하는 테스트 |
강도(Stress) 테스트 | 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트 |
성능(Performance) 테스트 | 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트로, 소프트웨어의 응답2 시간, 처리량 등을 테스트 |
구조(Structure) 테스트 | 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트 |
회귀(Regression) 테스트 | 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트 |
병행(Parallel) 테스트 | 변경된 소프트웨어가 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트 |
'자격증' 카테고리의 다른 글
2024 제2회 기사 실기 출제 예상(2) (3) | 2024.07.26 |
---|---|
2024 제2회 기사 실기 출제 예상(1) (0) | 2024.07.18 |
정보처리기사 필기 기출 오답 정리 (1) | 2023.03.11 |