[소프트웨어공학] 소프트웨어 검사
검사 관련 용어정의
- 검사(Testing)
오류를 찾는 작업 - 검증(Verification)
개발된 소프트웨어와 사용자의 요구분석 명세서와의 차이를 확인하는 작업 - 디버깅(Debugging)
검사로 찾아낸 오류를 수정하는 작업 - 검토 회의(Walk-through)
소프트웨어 생명주기의 단계마다 산출된 명세서를 가지고 다음 단계로 넘어가기 전에 오류를 찾아내는 작업 - 정형 기술 검토(FTR)
소프트웨어에 관련된 여러 사람이 모여 회의하는 정형화된 오류 검토 회의
검사방법
화이트 박스 검사
상자 안을 들여다 볼 수 있다는 뜻으로 원시 프로그램을 직접 보면서 프로그램 상 허용되는 논리적인 모든 경로를 직접 검사하는 방법
- 프로그램 모듈의 논리적 구조를 체계적으로 점검하는 구조 검사
- 원시 코드의 모든 문장을 한 번 이상 수행함으로써 진행되는 구조 검사
- 검사 대상의 가능한 경로를 어느 정도 통과하는 지의 적용 범위성을 측정 기준으로 한다
-
프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적인 경로를 검사
- 종류
- 기초 경로 검사(Basic Path Testing)
모든 논리적인 경로를 복잡도로 계산하여 구한 후 경로를 수행할 수 있는 검사 경우를 직접 입력하여 오류를 검출하는 방법오일러의 공식
: V - E + R = 2
V: 노드의 수, E: 간선의 수, R:영역의 수 - 루프 검사(Loop Testing)
반복문 관련 오류 검출 - 데이터 흐름 검사(Data Flow Testing)
제어 흐름 그래프에 데이터 사용 현황(정의, 소멸, 사용)을 테스트 - 조건 검사(Condition Testing)
조건문 관련 오류 검출
- 기초 경로 검사(Basic Path Testing)
- 찾을 수 있는 오류
- 자세하고 세부적 오류 검출 가능
- 반복문, 참거짓을 판단할 수 있는 논리 구조 상의 오류 검출 가능
블랙 박스 검사
상자 안을 볼 수 없다는 뜻으로 원시 프로그램은 보지 않고 프로그램만 실행시켜 데이터 입력에 대한 결과만을 보고 오류를 판단하는 방법
- 종류
- 균등 분할(Equivalence Partitioning)
입력 자료에 초점을 맞춰 검사 사례를 만드는 방법.
타당한 자료와 타당하지 않은 자료의 개수를 균등하게 하여 정함 - 한계값 분석(Boundary Value Analysis)
입력조건의 중간값에서 보다 경계값에서 에러가 발생될 확률이 높다는 점을 이용하여 이를 실행하는 테스크 케이스를 만드는 방법 - 원인-결과 그래프(Cause-Effect Graphing)
입력 데이터 간의 관계가 출력에 미치는 영향을 그래프로 표현하여 오류 검출 - 오류 예측(Error Guessing)
각 시험기법들이 놓치기 쉬운 오류들을 감각 및 경험으로 찾아보는 것 - 비교 검사(Comparison Testing)
여러 버전의 프로그램에 동일한 검사 자료를 제공하여 동일한 결과가 출력되는 지 비교 및 확인하는 검사 - 페어 와이즈 조합 테스트
모든 가능한 입력 값들의 조합들을 테스트하는 대신에 모든 Pair의 조합을 테스트하는 방법 - 상태 전이 검사
시스템의 상태가 변화함에 따른 검사
- 균등 분할(Equivalence Partitioning)
- 비정상적인 자료를 입력해도 오류 처리를 수행하지 않은 경우의 오류 검출 가능
- 정상적인 자료를 입력해도 요구된 기능이 제대로 수행되지 않는 경우의 오류를 검출 가능
- 성능 오류, 자료 구조 상의 오류, 인터페이스, 시작과 종결 상의 오류를 찾을 수 있다
검사 순서
- 단위(코드) 검사
- 통합(설계) 검사
- 검증(요구사항) 검사
- 시스템 검사
단위 검사
원시 프로그램의 모듈을 대상으로 화이트 검사
를 실시하는 방법
- 인터페이스 검사
- 자료 구조 검사
- 경로 검사
- 오류 처리 검사
- 한계값 검사
통합 검사
단위 검사를 성공적으로 실시한 후에 단위별로 결합하면서 오류를 검출하는 방법
하향식(Top-Down) 통합 검사
상위 모듈에서 하위 모듈로 결합하면서 오류를 찾는 방법으로 가짜 모듈(Stub
)이 필요하다
- 전체 프로그램을 매번 실행하고 종속적인 모듈은 가짜 모듈(Stub)로 대치한다
- 통합 방법에 따라 가짜 모듈을 실제 모듈로 대치한다
- 각 모듈이 통합되면 검사를 실시
- 통합될 때마다 회귀 검사를 실시
- 프로그램 전체를 실행하면서 검사 가능
- 중요 모듈을 우선 검사할 때에는 부적합
- 독립적인 구조로 검사할 수 있다
상향식(Bottom-Up) 통합 검사
최하위의 모듈부터 상위로 진행하면서 통합하는 방식으로 가짜 모듈은 필요없지만 통합 시에 통합된 클러스터(Cluster
)를 실행할 수 있는 시험 가동기(Driver
)가 필요하다
클러스터 : 여러 개의 모듈을 하나로 묶어 놓은 단위
드라이버 : 임시로 실행시켜 검사해 보기 위한 임시 프로그램 모듈
- 낮은 수준의 모듈들을 클러스터로 결합
- 검사 사례 입/출력을 조정하기 위해 드라이버 작성
- 클러스터 검사
- 드라이버 제거하고 클러스터를 상위로 결합
- 중요 모듈을 우선 검사할 때 유리
혼합식(Mixed) 통합 검사
하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 사용하여 검사하는 방법. 샌드위치식 통합 방식이라고도 한다.
검증 검사
소프트웨어가 사용자의 요구사항을 충족시키는가에 중점을 두고 검사하는 방법. 요구사항 명세서를 토대로 블랙 박스 테스트
를 사용
- 형상 검사 : 소프트웨어 구성요소, 목록, 유지보수를 지원하기 위해 필요한 사항 표현 검사
- 알파 검사 : 개발자의 장소에서 사용자가 개발자 앞에서 실행하는 검사
- 베타 검사 : 다수의 사용자를 제한되지 않은 환경에서 프로그램을 사용하게 하고 오류가 발견되면 개발자에게 통보하는 방식
시스템 검사
개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 검사
- 확인 검사 : 이해관계가 있는 모든 사람이 참석하여 오류 검출하는 방법
- 보안 검사
- 무결성 검사
- 스트레스 검사
- 부피 검사
- 메모리 검사
- 성능 검사
- 호환성 검사
- 신뢰성 검사
- 회복 검사
- 사용 용이성 검사
- 유지보수 용이성 검사
정형 기술 검토(FTR : Formal Technical Review)
- 목적
- 소프트웨어가 요구사항에 일치되는 정도를 확인
- 소프트웨어가 표준화되었는지 검토
- 정형화된 소프트웨어가 개발되도록 지원
- 프로젝트 관리
- 검토 지침
- 제품 검토의 집중성 : 수정이 아닌 제품의 검토에 집중
- 사전 준비성 : 검토를 위한 자료를 사전에 배포하여 검토
- 의제의 제한성 : 의견을 제한하되 충분히 받아들인다
- 안건 고수성
- 논쟁 반박의 제한성
- 문제 공개성
- 참가 인원의 제한성
- 문서성 : 발견된 오류는 문서화한다
오류 증폭 모형
소프트웨어 개발 생명주기 중 검사 단계에서 오류를 찾는 것보다 생명주기의 단계마다 확인하고 검사하면 많은 양의 오류 검출 및 수정이 가능하다.
이러한 방법을 검토 회의
(Walk-through)라고 하며 검토 회의를 할 경우에 예측할 수 있는 오류 감소 비율을 이론적으로 정립한 것을 오류 증폭 모델이라 한다.
(전달된 오류수 + 오류 증폭수 + 생성된 오류수) X (100% - 오류 제거 비율)
오류 증폭수 = (이전 단계에서 전달된 오류수 - 전달된 오류 수) X 오류 증폭 비율
댓글남기기