ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구조기반(structural) 테스팅
    테스팅 관련/테스트 2020. 5. 28. 01:13

     

     

    구조 기반 기법은 화이트박스 테스팅 기법 중 하나

     

     

    블랙박스 테스팅
    코드나 내부 구조에 대한 지식없이 소프트웨어가 원하고 예상하는대로 작동하는지 테스트하는 방법
    화이트박스 테스팅
    코드, 내부 구조를 기반으로 테스트하는 방법
    예. 코드 리뷰/검사, 페어 프로그래밍
    코드 커버리지
    모든 코드가 잘 실행되는지, if문의 true/false가 최소 한번씩은 실행되는지와 같은 컨셉 위주로 테스트

     


     

     

    가능한 시나리오들을 모두 테스트하는 것은

    가능하지도 or 실용적이지 않기 때문에

    구조 기반 테스팅은 중요하다

     

     

    → 주어진 시간내에 더 많은 테스트를 실행하는 것적절하게 사용되기 위해 충분한 테스트를 실행하지 않는 것을 고려하여, 타협해야한다.

     

     

     절충하기 위해서는,

    코드 커버리지 기준이 필요하다.

     

    코드 커버리지 기준

    - 구문(statement): 테스트에서 모든 코드가 최소 한번은 실행되었는지

    - 조건(condition)

    - 결정(decision)

    - 브랜치(branch)

    - 조건 / 결정

    - 변경된 조건 / 결정

    - 관찰 가능한 변경된 조건 / 결정

     

     


     

    구조 기반 기법의 문제점

     

    1. 객체 지향 프로그램에 대한 프로시저 간(interprocedural) 또는 총 레벨(gross-level)의 커버리지

     

    객체 지향 요소들은 구조 기반 기법을 어렵게 만든다

    다형성은 프로그램의 흐름(flow)을 결정하는데 있어서 큰 부분을 차지한다 구조 기반 커버리지 테스트를 어렵게 만듬

    다형성(Polymorphism): 객체 지향 프로그래밍의 중요한 특징 중의 하나로 함수 이름이나 연산자가 여러 목적으로 사용될 수 있는 것을 의미한다. 객체 지향에서의 다형성이란 클래스가 하나의 메시지에 대해 각 클래스가 가지고 있는 고유한 방법으로 응답할 수 있는 능력이며, 응용 프로그램에서 하나의 함수나 연산자가 두 개 이상 의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것을 말한다.

     

     

    2. 회귀 테스팅

    회귀(Regression) 테스팅: 개선을 위한 소프트웨어 수정 후 변경 결과로 소프트웨어의 변경되지 않은 영역에서 결함이 발견되거나 유입되지 않았는지 확인하기 위해 이전 테스트 구성 요소 또는 시스템에 대해 진행하는 테스트.
    변경 전이랑 같은지 확인하기 위해, 같은 테스트 스위트(suite)를 새롭게 변경된 프로그램에 실행하는 기법.

    (코드 커버리지 기준을 제공하기 전에 사용된) 몇몇의 또는 모든 테스트들은

    구조변화를 일으키는 변경요소들로 인해

    무효화될 수 있다.

     

     

    3. Late binding

     

Designed by Tistory.