해당 자료는 부산대학교 채흥석 교수님의 소프트웨어 공학 강의 자료입니다.

세상이 발전하며 소프트웨어의 규모도 점점 커져왔다.
최근에는 과거와 비교도 안 될 정도로 큰 규모의 소프트웨어가 생겨나고 있는데,
코드가 커지고 복잡해 질수록 Test의 중요성 또한 점점 커지게 됐다.

소프트웨어의 품질을 보장하는 방법에는 V&V 라는 개념이 있다.
해당 방법은 Defect(결함)을 Code에서 발견하고 Debug 할 수 있도록 하는 작업이다.

Validation & Verification

위에서 언급한 V&V는 Validation & Verification 의 약어이다.
해당 개념은 아래와 같이 두 가지 방법으로 분류할 수 있다.

  • Static Approach : 실행하지 않고, Code를 보고 분석하는 방법
    • Static Analysis
  • Dynamic Approach : 실제로 실행해서 Runtime에서 결함을 찾는 방법
    • Simulation
    • Testing

Static Approach : Static Analysis

Dynamic Approach : Black Box Test

Dynamic Approach 중에서도 Testing에 대해서 얘기를 해보자.
그 중에서도 Black Box Test에 대해 먼저 알아보자.

이름이 Black Box Test인 이유는 말 그대로 우리가 소스 코드를 보지 않기 때문이다.
소스 코드를 보지 않고, 요구사항만으로 Test Suite를 작성해 Test한다.

  • Equivalence Partitioning : 동등 분할 기법
    • Test Case들을 특정 구간(Class)로 분할을 한다.
    • 해당 구간의 Case들은 어떤 값을 집어도 같은 결과가 나와야 한다.
    • Example : 입장 조건
  • Boundary Value Analysis : 경계값 분석 기법
    • Test Case들을 특정 구간으로 분할을 먼저 한다.
    • 이후 구간의 경계값들을 분석하여 Test Case로 만든다.
      • 값의 개수에 따라 2-Value, 3-Value로 나눌 수 있다.
    • Example : 입장 조건
  • Combinatorial Testing : 조합 테스팅
    • Test Case들을 특정 구간으로 분할을 먼저 한다.
    • Valid한 값, Invalid한 값으로 구분을 지어 Case를 만든다.
    • 해당 Case들을 Valid 끼리는 모두 조합을 한다.
      • Invalid한 Case는 Valid와 딱 한번씩만 조합한다.
    • Example : ID와 근무시간
  • Pairwise Strategy
    • 변수의 선택지가 굉장히 많은 경우, 모두 조합을 함이란 불가능하다.
    • 따라서, 변수의 쌍을 만들어 조합을 생각한다.
      • 해당 조합이 단 한번만 등장할 수 있도록 Test Case를 짠다.
    • Example : PICT

Dynamic Approach : White Box Test

White Box Test는 위의 Black Box Test와 정반대의 개념이다.
Black Box Test의 한계를 극복하기 위해 소스코드를 보고 결함을 찾는다.

  • Statement Coverage
  • Branch(Decision) Coverage
  • Condition Coverage
  • Condition-Decision Coverage
  • Multiple Condition Coverage
  • MCDC