[정보처리기사도전기]#14 통합 구현

제2장 통합 구현

제1절 모듈 구현

1. 단위모둘 구현

(1) 공통모듈

  • 전체 시스템 설계를 할 때에 각각의 서브 시스템에서 공통으로 사용되는 모듈들을 하나로 묶어서놓은 소프트웨어 라이브러리를 말한다.
  • 공통 모듈을 만드는 이유는 각각의 서브 시스템에서 제각각 모듈을 만들면 개발비도 중복으로 들어가고 표준화도 되지 않기 때문이다.
  • 공통 모듈을 하나로 만들면 나중에 서브 시스템이 추가되더라도 공통 모듈은 재개발 없이 재사용이 가능하다는 장점이 있다.

(2) 단위모듈

  • 화면 모듈, 화면에서 입력받은 데이터 처리를 위한 서비스 컴포넌트, 비즈니스 트랜잭션 컴포넌트등이 있다.
  • 공통모듈을 먼저 구현하고 이를 단위모듈 구현시에 재사용한다.

(3) 모듈화
[1] 모듈의 독립성이 높아야 모듈화가 잘 되었다고 평가할 수 있다.
[2] 결합도

  • 결합도는 모듈들이 서로 관련되거나 연결된 정도를 나타낸다.
  • 두 모듈 간의 상호 의존도

[3] 응집도

  • 한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관 정도를 나타내며, 응집도가 높아야 좋은 모듈이 된다.

❋ 모듈화↑ - 독립성↑ (응집도↑, 결합도↓)
(응집도)↑ 기능적, 순차적, 통신적, 절차적, 시간적, 논리적, 우연적 ↓
(결합도)↑ 내용, 공통, 외부, 제어, 스태프, 데이터 ↓

2. 단위모듈 테스트

테스트는 결함(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) 기초 경로 시험(구조 시험, 복잡도 시험)

  • 가장 대표적인 화이트박스 기법으로 McCabe에 의해 제안되었으며, 시험영역을 현실적으로 최대화시켜준다.
  • 상세설계 및 원시코드를 기초로 논리흐름도를 작성하며, 프로그램의 논리적 복잡도 측정한다.
  • 시험사례 설계자가 절차적 설계의 논리적 복잡도를 측정하여 이 측정을 실행 경로의 기초를 정의하는 데 사용할 수 있게 한다.
  • 제어흐름을 표현하기 위해 논리흐름도를 이용한다.

[1] 논리흐름도(흐름그래프 : Flow Graph)

  • 원(Node(N)) : 프로그램의 한 Line(명령문) 또는 순서적으로 수행되는 여러 라인의 집합(일련의 절차적 명령문)
  • 화살표(Edge E) : 실행순서, 제어의 흐름
  • 영역 : 노드와 간선의 의해 한정된 부분

[2] 복잡도

  • 프로그램의 논리적 복잡도를 수량(Quentative)적으로 측정하는 소프트웨어 측정법(SW Metrics)
  • V(G) = E - N + 2(E : 간선의 수, N : 노드의 수)
  • V(G) = P + 1 (P : 분기 Node수)
  • 복잡도와 품질
5이하매우 간단한 프로그램
5~10매우 구조적이고 안정된 프로그램
20이상문제 자체가 매우 복잡하거나 구조가 필요이상으로 복잡한 프로그램
50이상매우 비구조적이며 불안정한 프로그램

(4) 블랙박스 시험

  • 프로그램의 논리(알고리즘)을 고려치 않고 프로그램의 기능이나 인터페이스에 관한 외부 명세로부터 직접 시험하여 데이터를 선정하는 방법
  • 기능 시험, 데이터 위주(Data-Driven) 시험, 입출력 위주(IO-Driven) 시험
  • 블랙박스 시험 방법은 소프트웨어의 기능적 요구 사항에 초점을 맞추고 있다.
  • 프로그램의 논리나 알고리즘과는 상관없이 기초적 시스템 모델의 관점

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)

좋은 웹페이지 즐겨찾기