Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

dongdorodongdong

구조적 개발 방법론(3. 구현 / 4. 검사) 본문

Software Engineering

구조적 개발 방법론(3. 구현 / 4. 검사)

d5ngs 2019. 4. 13. 21:39

구현


  • 정의
    - 설계단계에서 생성된 내용을 컴퓨터가 알 수 있는 형태로 변환하는 과정
    - 코딩

  • 프로그래밍 언어 선택 기준
    - 대상 업무의 성격
    - 개발 담당자의 경험과 지식
    - 과거의 개발 실적
    - 4세대 언어 여부X

  • 구조적 프로그래밍
    - 여러 갈래로 분기하여 복잡하게 하지 않음
    - 순서대로 선택적으로 반복 문장을 사용하는 제어 구조만을 사용
    - Dijkstra의 제안
    - 순차 : 명령을 순서적으로 나열
    - 선택 : 특정 논리에 기초하여 명령 선택
    - 반복 : 순환을 제공




검사


  • 정의
    - 품질 보증 활동의 하나로써 오류를 발견하기 위해 수행하는 과정

  • 기법
    - 화이트 박스 테스트
    - 블랙 박스 테스트

  • 순서
    1. 단위 검사 (코드)
    2. 통합 검사 (설계)
    3. 검증 검사 (요구사항)
    4. 시스템 검사



화이트 박스 테스트
  • 정의
    - 모듈 안의 작동을 자세히 관찰 가능
    - 제품의 내부 요소들이 명세서에 따라 수행되고 실행되는지 보장
    - 프로그램 원시 코드의 논리적인 구조를 커버하도록 테스트 케이스를 설계하는 프로그램 테스트 방법
    - 구조 테스트
    - 테스트과정의 전반부에 적용


  • 특징
    - 제어 구조에 따라 선택, 반복 등의 부분들을 수행
    - 논리적 경로를 제어
    - 모듈 안의 작동을 직접 관찰
    - 원시 코드의 모든 문장을 한 번 이상 수행
    - 각 조건에서의 참과 거짓 모든 논리적 결정이 적어도 한 번 이상 실행

  • 종류
    - Basic Path Testing (기초 경로 검사)
    "McCabe가 제안"
    "대표적 기법"

    "실행 경로의 기초를 정의"

    - Condition Testing (조건 검사)
    "모듈 내 논리적 조건을 검사"

    - Loop Testing (루프 검사)
    "loop 구조에 초점을 맞춰 검사"

    - Data Flow Testing (데이터 흐름 검사)
    "변수의 정의, 사용위치에 초점을 맞춰 실시"




블랙 박스 테스트

  • 정의
    - S/W가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하기 위한 방법
    - 테스트 과정의 후반부에 적용


  • 발견할 수 있는 오류
    - 성능
    - 부정확한 기능
    - 인터페이스 오류
    - 논리 구조상의 오류는 X

  • 종류
    - Equivalence Partitioning (동치분할검사)
    "해당 입력 자료에 맞는 결과가 출력되는지 확인"
    "입력 자료에 초점을 맞춤"


    - Boundary Value Analysis (경계값 분석)
    "동치분할검사를 보완"
    "입력 조건의 경계값에서 오류 날 확률이 높다는 점을 이용"

    - Cause-Effect Graphing Testing (원인-효과 그래프 검사)
    "입력과 출력의 상황을 체계적으로 분석"

    - Fault Based Testing (오류 예측 검사)
    "경험, 확인자의 감각으로 검사"

    - Comparison Testing (비교 검사)
    "여러 버전의 프로그램에 검사 자료를 제공하여 비교"



단위 검사

  • 정의
    - 모듈에 대한 검사

  • 특징
    - 화이트 박스 테스트 기법 사용
    - class testing 사용



합 검사
  • 정의
    - 모듈들을 결합하여 검사

  • 종류
    - 하향식
    "상위 모듈에서 하위 모듈 방향으로 통합하면서 검사"
    "Stub 필요 : 일시적으로 제공되는 시험용 모듈"
    "통합 검사 시 인터페이스가 이미 정의 되어 있어 통합이 간단"
    "검사 초기에는 시스템의 구조를 사용자에게 보여줄 수 있다."
    "상위층에서 test case를 쓰기가 어려움"
    "레벨이 낮은 데이터 구조의 세부사항은 설계 초기 단계에서 필요"

    - 상향식
    "기능 추가가 쉽지 않다"
    "하위 모듈에서 상위 모듈 방향으로 통합하면서 검사"
    1. 하위 모듈을 클러스터로 결합
    2. 드라이버라는 제어 프로그램 작성
    3. 클러스터 검사
    4. 드라이버 제거하고 클러스터를 상위로 결합



검증 검사
  • 정의
    - 요구사항을 충족하는지 검사

  • 특징
    - 블랙 박스 테스트 기법 사용

  • 종류
    - 형상 검사
    "구성 요소, 목록, 유지보수를 위한 모든 사항이 표현되었는가를 검사"

    - 알파 검사
    "개발자의 장소에서 사용자가 시험하고 개발자는 뒤에서 결과를 지켜봄"

    - 베타 검사
    "실업무를 가지고 사용자가 직접 시험하는 검사"
    "최종사용자가 여러 사용자 앞에서 수행"
    "오류가 발견되면 개발자에게 통보하는 방식"

    - 시스템 검사
    "해당 컴퓨터 시스템에서 수행 되는지를 검사"


* McCabe의 Cyclomatic(순환 복잡도)

- 프로그램의 독립적인 경로의 수를 정의하고, 모든 경로가 한 번 이상 수행되었음을 보장하기 위해 행함
- 화살표수 - 노드수 + 2 = 4



* Pareto의 법칙

- S/W 테스트에서 오류의 80%는 전체 모듈의 20%내에서 발견된다.