*프로그램 테스트 개요 및 종류-개요(1) 테스트 작업의 의미와 중요성1) 개요. 소프트웨어 개발공정 중에서 가장 중요하고 집중적으로 많은 노력과 기간을 투자해야 하는 단계. 개발될 소프트웨어의 기능과 성능을 검사하는 작업2) 테스트의 정의. 시스템이 정해진 요구를 만족하는지를 여러 가지 방법과 도구를 통해 평가하는 일련의 과정. 코딩 내용만을 검사하는 것이 아니라 생명주기의 모든 단계에 적용되는 시스템의 평가를 의미. 시험 사례나 자동 시험 도구를 사용하여 정확한 검사를 실시하며, 검사 노력과 검사 시간을 단축3) 테스트의 목적. 프로그램 실행시 오류 발견. 좋은 시험 사례를 통해 오류 발견률 향상. 미 탐지된 오류를 발견하여 위해 성공적 시험을 준비4) 나선형 시험 전략. 시스템 테스트(System Test) : 소프트웨어가 공학적으로 작성되었는지 검사. 확인 테스트(Validation) : 요구 사항대로 잘 작성되었는지 검사. 무결성 검사(Integrity) : 설계가 정확히 표현되었는지 검사. 단위 테스트(Unit test) : 코드가 오류 없이 작성되었는지 검사(2) 시험 기법① 블랙 박스 검사(black box test) :원시 코드는 보지않고 목적 코드를 수행하면서 검사. 동등 분할 : 입력 자료가 허용된 규칙이나 범위 내에 있는지 검사. 경계값 분석 : 동등 분할과 유사하나 입력 자료의 경계치 부근에서 검사, 출력 자료도 검사. 원인 결과 그래프 : 여러 가지 복잡한 조건에 따라 출력에 영향을 줄 수 있는 기능 검사. 비교 시험 : 일관성을 보장하기 위해 두 시스템의 결과를 동시에 실행하며 비교. 오류 예측 : 과거의 경험이나 전문가의 감각으로 오류를 찾는 방법②화이트 박스 검사(white box test) :소프트웨어의 절차를 보면서 검사. 구조 시험 : 프로그램의 구조(수행 경로)를 검사하며 McCabe의 흐름 복잡도를 이용. 루프 시험 : 반복 구조에 대해서 집중적으로 검사하며 중첩 루프, 연결 루프, 비 구조적 루프의 문제점을 판단하여 효율적인 구조로 개선하기 위한 검사-종류1. 테스트 종류(1) 단위 테스트(Unit test). 독립적으로 작성된 모듈 내부의 오류를 개별적으로 검사. 그 모듈의 기능을 올바로 수행하는지 확인(2) 통합 테스트(Integration test)① 하향식(top down) 테스트. 프로그램의 구성을 깊이 우선, 너비 우선 접근을 통해 단계적으로 진행하며 검사. 스터브(하위의 시험 대상 모듈)를 작성하여 의사 결정에 관한 중요 사항을 검사. Calling 작업을 제대로 수행하는지를 알기 위해 하위 모듈을 호출해 보는 검사② 상향식(bottom up) 테스트. 프로그램의 구성을 하위의 모듈부터 시작하여 상위 모듈로 역행하며 검사. 하위의 모듈을 클러스터로 묶어 드라이버(상위의 시험 대상 모듈)를 작성하여 실시. Called 작업이 제대로 되는지 알기 위해 상위 모듈에서 호출해서 처리되는 과정을 확인③ 절충식(sandwich) 테스트. 상위 수준에서는 하향식 통합 검사를, 하위 수준에서는 상향식 통합 검사를 실시④ 빅 뱅(big bang) 테스트. 모든 모듈을 결합하여 한꺼번에 검사. 오류가 발생된 원인과 발생된 장소를 찾기 힘들어 수정 작업이 곤란(3) 확인 테스트(Validity test)① 통합 테스트가 끝난 후 요구 사항 명세서를 토대로 사용자의 기능을 만족하는지 검사② 형상 검사(audit). 소프트웨어 구성 요소, 목록, 유지 보수를 지원하는 사항이 제대로 되어 있는지 검사③ 알파 검사(α test). 개발자 환경에서 통제된 상황아래 오류를 검사하는 방법④ 베타 검사(β test). 사용자 환경에서 개발자의 개입 없이 정해진 시간 동안 사용해 보면서 검사하는 방법(4) 시스템 테스트(System test). 회복(recovery) 검사 : 장애시에 얼마나 빠르게 복구되는지를 검사. 안전(security) 검사 : 외부의 침입에 대한 보호 메커니즘이 잘 되어 있는지를 검사. 강도(stress) 검사 : 비 정상적인 상황에 얼마나 잘 대처하는지를 검사