모듈 구현
1. 단위 모듈 구현
1. 단위 모듈 구현의 개념
- 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기위한 단위 컴포넌트별 구현 기법이다.
- 인터페이스 모듈, 데이터베이스 접근모듈 등 통합 구현에 필요한 단위에 컴포넌트를 구현한다.
2. 단위 모듈 구현 원리
[4가지]
- 정보은닉(Information Hiding) : 어렵거나 변경 가능성이 있는 모듈을 타 모듈로부터 은폐
- 분할과 정복(Divide & Conquer) : 복잡한 문제를 분해, 모듈 단위로 문제 해결
- 데이터 추상화(Data Abstraction) : 각 모듈 자료 구조를 액세스하고 수정하는 함수내에 자료 구조의 표현 내역을 은폐
- 모듈 독립성(Module Inpendency) : 낮은 결합도와 높은 응집도를 가짐
3. 단위 모듈 구현 대상
- 단위 모듈은 화면 모듈, 화면에서 입력받은 데이터 처리를 위한 서비스 컴포넌트, 비즈니스 트랜잭션 컴포넌트 등이 이싿.
- 통합 구현에서 단위 모듈 구현은 상세 설계된 단위 모듈, 환경 변수를 실제 프로그래밍 언어로 구현한다.
cf : 환경변수 : 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임이다.
2. 단위 모듈 테스트
1. 단위 모듈 테스트의 개념
- 단위 모듈 테스트를 위해 IDE(Integrated Development Environment)도구를 활용하여 개별 단위 모듈에 대한 디버깅을 수행
- 단위 모듈 테스트는 화이트 박스 기법을 사용한다.
cf: 화이트박스(Whitebox) 기법 : 화이트 박스 기법은 프로그램의 로직을 이해하고, 내부 구조화 동작을 검사하는 소프트웨어 테스트 방식을 말한다.
2. 단위 모듈 테스트의 종류
1. 화이트박스 테스트
- 단위 모듈 테스트의 가장 기본적 방법은 모듈 내부의 소스를 보면서 수행하는 화이트 박스 테스트
- 소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트를 수행
2. 메소드 기반 테스트
- 단위 모듈의 외부에 공개된 메소드 기반의 테스트
- 메소드에 서로 다른 파라미터 값을 호출하면서 다양한 테스트를 수행
3. 화면 기반 테스트
- 사용자용 화면이 있는 경우, 각각의 화면단위로 단위 모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트를 수행
- 화면 기반 테스트는 화면과 연계된 서비스, 비즈니스 컴포넌트 및 공통 컴포넌트를 한꺼번에 단위 모듈 테스트에 참여
- 사용자 시나리오에 기반한 단위 모듈 테스트를 할 수 잇는 장점이 있음
4. 테스트 드라이버(Driver)/ 테스트 스텁(Stub)
- 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현 되지 않은 경우 테스트 드라이버, 테스트 스텁을 통해 테스트를 수행
- 테스트 드라이버는 하위 모듈은 있지만 상위 모듈은 없는 경우 사용하는 기법이며, 테스트 스텁은 상위 모듈은 있지만 하위 모듈은 없는 경우
3. 단위 모듈 테스트 커버리지
1. 테스트 커버리지 개념
- 프로그램의 테스트 수행 정도를 나타내는 값으로 테스트 수행의 완벽성을 정하는 도구이다.
2. 테스트 커버리지 유형
- 대표적인 테스트 커버리지 유형은 구문 커버리지, 결정 커버리지, 조건 커버리지로 구분 된다.
[테스트 커버리지 유형]
1. 구문 커버리지
- 프로그램 내 모든 문장을 적어도 한 번 이상 실행하는 것을 기준으로 수행하는 테스트 커버리지
- 조건문 결과와 관계없이 구문 실행 개수로 계산
2. 결정 커버리지
- 결정 조건 내 전체 조건식이 최소한 참/거짓 한 번의 값을 가지도록 측정하는 테스트 커버리지
3. 조건 커버리지
- 전체 조건식 결과와 관계없이 각 개별 조건식이 참/거짓 한 번 모두 한 번씩 갖도록 조합하는 테스트 커버리지
4. 조건/결정 커버리지
- 전체 조건식이 참/거짓 한 번씩 가지면서, 개별 조건식이 참/거짓 모두 한 번씩 갖도록 조합하는 테스트 커버리지
5. 변경 조건/결정 커버리지
- 각 개별 조건식이 다른 개별 조건식의 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 테스트 커버리지
6. 다중 조건 커버리지
- 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 테스트 커버리지
4. 소스 코드 커버리지 사례
1. 구문 커버리지
if(a>0 and b>0) or (C>D)
then value = value + add; --------------------1
else
then value = value + add; --------------------2
2. 결정 커버리지
- 결정 커버리지는 A,B,C,D값 관계없이 전체 조건식이 참/거짓이면 된다.
- 조건 커버리지는 전체 조건식과 관계없이 A,B,C,D 값에 의해 개별 조건식이 참/거짓 한 번씩을 갖도록 수행
3. 조건 커버리지
- 조건 커버리지는 개별 조건식 참/거짓의 모든 값을 갖게 되는 경우 달성되는 커버리지 이다.
4. 조건/결정 커버리지
- 조건 커버리지와 결정 커버리지를 최소한의 조합으로 달성하는 경우이다.
- 모든 개별 조건식이 참이고, 전체 조건식이 참일 경우와, 모든 개별 조건식이 거짓이면서, 전체 조건식이 거짓일 경우를 의미한다.