화이트박스테스트, 객체지향테스트

원래벌레·2022년 5월 23일
0
post-custom-banner

💎 화이트박스 테스트

  • 시스템의 내부 구조를 보고 테스트 케이스를 설계하는 과정

  • 블랙박스 테스트만을 하게되면 프로그래머가 악의적으로 만든 백도어나 살라미의 기법을 로직에 적용하게 되는 경우 사용자들이 피해를 입게 된다. 이러한 부분을 막기 위해서 화이트박스 테스트를 해주어야 한다.

💍 화이트박스테스트의 커버리지

1) 문장 커버리지 : 메소드에 나오는 문장을 모두 수행하는 조건 -> 테스트케이스가 하나인 경우도 생겨난다.
2) 분기 커버리지 : 모든 if문 즉 분기가 true false를 다 확인하는 경우
3) 경로 커버리지 : 모든 경로를 테스트 하는 경우
4) 조건 커버리지 : 복합적으로 구성된 분기의 각 요소들이 true인지 false인지를 확인 하는 경우 ex) (x || y) : x=T y=T , x=T y=F, x=F y=T, x=F y=F 네가지 경우가 모두 테스트 데이터가 된다.

  • 경로테스트(경로 커버리지) : 각 분지점에서 조건이 참이되게 하는 입력과 거짓이 되게 하는 입력을 선택

  • 흐름도에서 확인하는 경로 테스트의 독립 경로 갯수 : (간선 = 화살표, 노드 = 다각형)
    사이클로매틱 복잡도 = CC = 간선의 수 - 노드의 수 +2

  • 경로 테스트의 한계
    1) 기존 경로만 테스트 한다. 경로에 없는 테스트는 테스트하지 못한다.
    2) 객체지향 시스템의 경우 정적이지 않고 동적이기 때문에 모든 경로를 찾기는 어렵다.

💎 객체지향 테스트

💍 사용 사례 기반 테스트 방법

- 사용 사례 명세로부터 테스트 케이스를 만들어라
- 확장된 사용 사례에서 테스트 케이스를 만들어라
1) 일반적인 사례
2) 예외적인 사례

💍 상태 기반 테스트 방법

  • 객체지향 언어로 작성한 시스템은 다형성, 동적바인딩, 기능이 다수의 작은 메소드로 분산 등의 특징이 있다.

  • 이러한 특징흔 새로운 형태의 오류를 발생시킨다. 인스펙션과 정적 분석방법의 효과를 떨어뜨린다.

  • 상태 기반 테스트 절차
    1) 시스템의 상태에 대해 테스트할 입력 데이터를 선택한다.
    2) 컴포넌트나 시스템을 검사한다.
    3) 실행 상태를 오러클(예상되는 상태)과 비교한다.

💎 통합 및 시스템 테스트

💍 통합 테스트

  • 두개 이상의 컴포넌트에 초점을 두어 단위 테스트에서 발견하지 못한 결함을 찾아낸다.

  • 스터브와 드라이버 작성이 필요하다.
    cf) 스터브: 테스트될 컴포넌트가 호출하는 컴포넌트가 부분적으로 구현된 것
    드라이버 : 테스트될 컴포넌트를 호출하는 컴포넌트의 부분적인 구현

  • 통합 테스트에서 전제하는 계층적 시스템의 예

  • 통합 유형
    1) 동시식 : 모든 컴포넌트를 동시에 통합, 거의 안쓰임 , 장점 : 스터브나 테스트 드라이버가 필요x
    단점 : 단순해 보이지만 비용이 많이 듦, 고장과 관련된 컴포넌트를 찾아내기 어려움
    2) 상향식 : 하위층의 컴포넌트를 테스트하고 위 층에 있는 컴포넌트를 차례로 통합
    장점 : 인터페이스의 결함을 쉽게 발견
    단점 : 시스템의 골격이 나중에 테스트됨, 상위층에서 발견된 결함은 서브시스템의 인터페이스에 영향을 줄 수 있음
    3) 하향식 : 최상위 층을 단위테스트하고 아래층으로 점증적으로 통합
    장점 : 사용자 인터페이스를 담당하는 컴포넌트부터 테스트, 시스템의 골격을 먼저 테스트
    단점 : 스터브를 개발하는데 많은 시간을 할애, 만든 스터브에 오류가 생길 수 있음, 수 많은 스터브가 필요함
    4) 샌드위치식 : 상향식과 하향식의 장점을 살리기 위해 두가지 방법을 혼용한 것
    절차 :
    1) 서브시스템을 타깃층, 타깃 아래층, 타깃 윗층의 3부분으로 분할하여 재구성
    2) 테스트 실시 : 1) 타깃층 선정, 2) 타깃층을 중심으로 위쪽은 하향식으로 통합테스트, 3) 아래층은 상향식으로 통합테스트, 4) 통합테스트가 끝나면 타깃을을 확장 : 타깃층 < 타깃윗층+ 타깃층+ 타깃아래층
    3) 반복

💍 시스템 테스트

  • 전체 시스템을 빌드한 후 요구 중심의 테스트

  • 블랙박스 기법으로 테스트 케이스를 추출합니다.


종류

  • 기능 테스트 : 기능적 요구를 만족시키는 테스트 -> 시스템 테스트
    - 사용사례를 만족하는가?

  • 성능 테스트 : 비기능적 요구를 만족시키는 테스트 -> 시스템 테스트
    - 부하를 걸어서 시스템이 고장나지 않는가?
    - 의도적인 침입과 파괴를 할 때 시스템에 문제가 없는가?
    - 일부러 고장을 내고 복구를 하는 것이 빠른가? : 회복테스트

  • 파일럿 테스트(알파, 베타 테스트) -> 인수 테스트
    - 필드 테스트라고 불림
    - 절차 :
    1) 시스템을 설치한 후 선발된 사용자들이 사용해 봄
    2) 사용자들은 시스템이 영구적으로 설치된 것처럼 여기고 시스템을 검토
    3) 사용자에게 어떤 가이드라인이나 테스트 시나리오가 주어지지 않음

  • 인수 테스트(알파, 베타 테스트) -> 인수 테스트

  • 설치 테스트 -> 인수 테스트
    - 시스템이 인수된 후에 목표시스템을 설치함
    - 개발시스템 -> 목표시스템으로 전환
    - 설치테스트 : 목표 환경에서 기능테스트와 성능 테스트를 반복한다.

profile
학습한 내용을 담은 블로그 입니다.
post-custom-banner

0개의 댓글