3 분 소요

3. 정적 테스트

정적 테스트

정적 테스트의 개요

프로그램 코드를 실행하지 않고 여러 참여자가 모여 소프트웨어 개발 중에 생성되는 모든 명세나 코드를 검토해서
실패보다는 결함을 찾아내는 방법

  • 실패보다는 결함을 찾아낸다.

sw_10_1

비정형방법

  • 기술적 검토방법
    • 개별 검토, 동료 검토, 검토 회의
  • 관리적 검토방법
    • 소프트웨어 검사, 감사
  • 비공식 검토
  • 공식 검토

공식 검토 수행절차

1)계획 -> 2)착수 -> 3)개별 준비 -> 4)검토회의 수행 -> 5)재작업 및 수정 -> 6)완료 작업 또는 후속 처리 확인

  • 검토회의 수행: 본 회의에서 참석자들은 발견한 결함 내용과 결함의 처리 방법 등을 정리하고 문서로 작성
검토회의

•개발자가 소집한 전문가들에 의해 개발자의 작업을 검토 •3~5명 정도의 전문가(프로젝트 팀장, 다른 개발자, 품질 보증단장)들이 절차에 따라 평가 •설계 문서들이 고객의 요구 사항을 정확히 명시하고 있는지 여부, 작업 진척 상황 등 확인

소프트웨어 검사 (공식검토)

1)계획 -> 2)개괄 설명회 -> 3)검사 준비 -> 4)검사 회의 -> 5)수정 -> 6)후속 조치

설계와 구현시 소프트웨어 검사 (설계 검사 / 원시 코드 검사)

명세 기반 테스트와 구현기반 테스트 구분

동적 테스트

명세 기반 테스트(블랙박스 테스트)

•의사는 몸속을 직접 열어 확인하는 것이 아니라 다양한 의료 장비를 통해 병의 원인을 찾음 •입력 값에 대한 예상 출력 값을 정해놓고 그대로 결과가 나오는지를 체크

신텍스 기법

•문법을 정해놓고 적합/부적합 입력 값에 따른 예상 결과가 제대로 나오는지 테스트

동등 분할 기법

•각 영역에 해당하는 입력 값을 넣고 예상되는 출력 값이 나오는지 실제 값과 비교

경계 값 분석 기법

경계에 있는 값을 테스트 데이터로 생성하여 테스트하는 방법

구현 기반 테스트

•위장 내시경 검사, 조직 배양 검사, 개복해서 어느 부위에 어떤 이상이 생겼는지 확인하며 병을 진단 •입력 데이터를 가지고 실행 상태를 추적함으로써 오류를 찾아내기 때문에 동적 테스트 부류에 속함 •프로그램 내부에서 사용되는 변수나 서브루틴 등의 오류를 찾기 위해 프로그램 코드의 내부 구조를 테스트 설계의 기반으로 사용

화이트박스 테스트 절차

코드의 내부구조와 동작을 검증하는 방법 -> 테스트 데이터를 생성

① 테스트 데이터 적합성 기준을 선정한다.

② 테스트 데이터를 생성한다. •테스트 데이터 적합성 기준을 근거로 한 가지 방법이 결정되면 명세나 원시 코드를 분석해 선정된 기준을 만족하는 입력 데이터를 만듬

③ 테스트를 실행한다. (테스트 방법) •문장 검증 기준 •분기 검증 기준 •조건 검증 기준 •분기/조건 검증 기준 •다중 조건 검증 기준  •기본 경로 테스트

테스트 분류

단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트, 회귀테스트 등 각 테스트의 목적과 적용 시점, 특징을 이해하며, 소프트웨어 품질 보증에 기여하는 방법을 학습합니다.

단위 테스트

단위 테스트(모듈 테스트)

•프로그램의 기본 단위인 모듈을 테스트 •구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 요구분석명세서대로 정확히 구현되었는지 테스트 •개별 모듈이 제대로 구현되어 정해진 기능을 정확히 수행하는지를 테스트 •한 모듈을 테스트하려면 그 모듈과 직접 관련된 상위 모듈과 하위 모듈까지 모두 존재해야 함

드라이버와 스텁

•테스트 드라이버: 상위 모듈의 역할을 하는 가상의 모듈, 테스트할 모듈을 호출하는 역할 •스텁: 하위 모듈의 역할을 하는 가상의 모듈, 테스트할 모듈이 호출할 때 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할 •드라이버와 스텁 모듈은 테스트할 때 필요한 기능만 제공할 수 있도록 단순하게 구현

sw_10_2

단위 테스트 수행 후 발견되는 오류

•잘못 사용한 자료형 •잘못된 논리 연산자 •알고리즘 오류에 따른 원치 않는 결과 •틀린 계산 수식에 의한 잘못된 결과 •탈출구가 없는 반복문의 사용

통합 테스트

통합 테스트의 개요 (오류찾기)

•단위 테스트가 끝난 모듈을 통합하는 과정에서 발생할 수 있는 오류를 찾는 테스트 •‘모듈 간의 상호작용이 정상적으로 수행되는가’ 테스트 •모듈 사이의 인터페이스 오류는 없는지, 모듈이 올바르게 연계되어 동작하고 있는지 체크

모듈 통합 방법에 따른 분류

한꺼번에 하는 방법: big-bang 테스트점진적으로 하는 방법: 하향식 기법, 상향식 기법

•Big-bang 테스트

•단위 테스트가 끝난 모듈을 한꺼번에 결합해 테스트를 수행하는 방식 •이 방법은 소규모 프로그램이나 프로그램의 일부를 대상으로 하는 경우가 많고 그만큼 절차가 간단하고 쉬움 •한꺼번에 통합하면 오류가 발생했을 때 어떤 모듈에서 오류가 존재하고 또 그 원인이 무엇인지 찾기가 매우 어려움

시스템 테스트

시스템 테스트의 개요

•시스템 전체가 정상적으로 작동하는지를 체크

•사용자에게 개발된 시스템을 전달하기 전에 개발자가 진행하는 마지막 테스트

실제 사용 환경과 유사하게 테스트 환경을 만들고 요구 분석 명세서에 명시한 기능적, 비기능적 요구 사항을 충족하는지 테스트 (실제 사용 환경과 유사하게 테스트 환경을 만들기) •주로 부하를 주는 상황에서 수행하고, 비기능적 테스트를 중심으로 수행

인수 테스트

인수 테스트의 개요

•시스템이 예상대로 동작하는지 확인하고, 요구사항에 맞는지 확신하기 위해 하는 테스트 •시스템을 인수하기 전 요구분석명세서에 명시된 대로 모두 충족시키는지 사용자가 테스트 •인수 테스트가 끝나면 사용자는 인수를 승낙한 것 •시스템이 사용자에게 정상적으로 인수되면 프로젝트는 종료 •인수 테스트 시 인수 테스트 계획서는 사용자가 직접 작성하거나, 개발자가 작성한 것을 사용자가 승인

회귀 테스트

확정 테스트

•원시 코드의 결함을 수정한 후 제대로 수정되었는지 확인하는 테스트

회귀 테스트

•한 모듈의 수정이 다른 부분에 영향을 끼칠 수도 있다고 생각하여 수정된 모듈뿐 아니라 관련된 모듈까지 문제가 없는지 테스트 •한 모듈의 수정이 다른 부분에 미치는 영향을 최소화하기 위해 필요

댓글남기기