(1) 공통모듈
(2) 단위모듈
(3) 모듈화
[1] 모듈의 독립성이 높아야 모듈화가 잘 되었다고 평가할 수 있다.
[2] 결합도
[3] 응집도
❋ 모듈화↑ - 독립성↑ (응집도↑, 결합도↓)
(응집도)↑ 기능적, 순차적, 통신적, 절차적, 시간적, 논리적, 우연적 ↓
(결합도)↑ 내용, 공통, 외부, 제어, 스태프, 데이터 ↓
테스트는 결함(fault)을 찾기 위해 소프트웨어를 작동시키는 일련의 행위와 절차를 말한다.
(1) 시험 단계에 의한 분류
[1] 모듈 시험 : 독립적인 환경에서 하나의 모듈만을 테스트
[2] 통합 시험 : 시스템 모듈간의 상호 인터페이스에 관한 테스트. 즉, 모듈간의 데이터 이동이 원하는대로 이루어지고 있는가를 확인하는 작업
[3] 확인 시험 : 사용자의 요구사항을 만족하는지를 확인하는 테스트
[4] 시스템 시험 : 시스템이 초기의 목적에 부합하는지에 대한 테스트
모듈(단위)시험 -> 통합 시험 -> 시스템 시험 (개발자 관점 => 프로세스 Verification)
-> 인수 시험 (알파 시험, 베타 시험) (사용자 관점 => 프로덕트 Validation)
(2) 시험방법에 의한 분류
[1] 블랙박스 시험(Black Box Testing) : 소프트웨어 외부명세서를 기준으로 그 기능, 성능을 시험
[2] 화이트박스 시험(White Box Testing) : 소프트웨어 내부의 논리적 구조를 시험
(3) 화이트박스 시험
[1] 프로그램 내의 모든 논리적 구조를 파악하거나, 경로들의 복잡도를 계산하여 시험사례를 만든다.
[2] 절차, 즉 순서에 대한 제어구조를 이용하여 시험사례들을 유도하는 시험사례 설계방법이다.
[3] 시험사례들을 만들기 위해 소프트웨어 형상(SW Configuration)의 구조를 이용한다.
[4] 프로그램 내의 허용되는 모든 논리적 경로(기본 경로)를 파악하거나, 경로들의 복잡도를 계산하여 시험사례를 만든다.
[5] 기본 경로를 조사하기 위해 유도된 시험사례들은 시험시에 프로그램의 모든 문장을 적어도 한 번씩 실행하는 것을 보장받는다.
1) 기초 경로 시험(구조 시험, 복잡도 시험)
[1] 논리흐름도(흐름그래프 : Flow Graph)
[2] 복잡도
5이하 | 매우 간단한 프로그램 |
5~10 | 매우 구조적이고 안정된 프로그램 |
20이상 | 문제 자체가 매우 복잡하거나 구조가 필요이상으로 복잡한 프로그램 |
50이상 | 매우 비구조적이며 불안정한 프로그램 |
(4) 블랙박스 시험
1) 동등분할(Equivalence Partitioning, 균등분할)
[1] 프로그램의 입력 도메인을 시험사례가 산출될 수 있는 데이터의 클래스로 분류해서 테스트 사례를 만들어 검사하는 방법이다.
[2] 프로그램의 입력조건을 중심으로 입력조건에 타당한 값과 그렇지 못한 값을 설정하여 각 동등클래스 내의 임의의 값을 시험사례로 선정한다.
[ㄱ] 유효동등 클래스 집합 : 프로그램에 유효한 입력을 가진 시험사례
[ㄴ] 무효동등 클래스 집합 : 프로그램에 타당치 못한 입력을 가진 시험 사례
[3] 각 클래스에 최소화 시험사례를 만드는 것이 중요하다.
2) 경계값 분석
[1] 입력자료에만 치중한 동등분할 기법을 보완하기 위한 기법
[2] 입력조건과 출력조건을 시험사례로 선정
[3] 입력조건이 [a, b]와 같이 값의 범위를 명시할 때, a, b 값 뿐만 아니라 [a, b]의 범위를 약간씩 벗어나는 값들을 시험사례로 선정한다. 즉, 입력조건이 특정한 수를 나타낼 경우, 최대값, 최소값, 최대값보다 약간 큰 값, 최소값보다 약간 작은 값들을 선정한다.
3) 원인-결과 그래프 기법
[1] 입력데이터 간의 관계가 출력에 미치는 상황을 체계적으로 분석하여 효용성 높은 시험 사례를 추출하여 시험하는 기법이다.
[2] 프로그램의 외부 명세에 의한 입력조건(원인)과 그 입력으로 발생되는 출력(결과)을 논리적으로 연결시킨 그래프로 표현하여 시험사례를 유도해 낸다.
동등분할, 경계값 분석, 원인-결과 그래프 기법 !중요!
4) 오류츠측(Error-Guessing) 기법
5) 비교검사(Comparision Testing) 기법
6) 조합 테스트(Combinatiorial Test)