테스트 기본중의 기본

테스트 기본

  • 적어도 설계 단계에서 클래스 다이어그램시퀸스 다이어그램은 꼭 작성하자

    • 클래스 다이어그램: 객체지향 설계에서 클래스 간의 관계와 구조를 시각적으로 표현한 다이어그램. 클래스의 속성, 메서드, 상속 등을 나타냄

    • 시퀀스 다이어그램: 시스템 내 객체 간 상호작용 순서를 시간 흐름에 따라 표현한 다이어그램. 메시지 교환 과정과 실행 순서를 보여줌

    • 하나의 거대한 코드를 방지할 수 있고, 리팩토링 효과도 시각화 가능해짐

  • 테스트 라이프 사이클(단위 테스트 -> 통합 테스트 -> 시스템 테스트)의 각 단계에서 적절한 방법을 수행해야함

    • 적절한 테스트 방법: 경계값 테스트, 조합 테스트, 상태 전이 테스트

    • 경계값 테스트: 입력값의 경계나 한계점에서 발생할 수 있는 오류등을 체크 (최대/최소값, 경계 바로 안팎의 값)

    • 조합 테스트: 서로 다른 입력값의 조합에 따라 발생할 수 있는 오류등을 체크

    • 상태 전이 테스트: 시스템이 어떤 상태에서 다른 상태로 전이될 때 올바르게 작동되는지 체크 (상태와 전이 조건 기반으로 진행)

경곗값 테스트

경곗값 테스트만 확실히 수행해도 80% 이상의 버그를 잡을 수 있다.

  • 문자 그대로 '경계를 테스트하는 방법'

  • 일반적으로 요구사항 사양의 경계에서 버그가 발생한다.

    • 테스터도 집요하게 경계가 되는 값을 입력해 버그를 발견하려고 한다!

  • 프로그램에서 경계라 불리는 위치에서는 항상 버그가 숨어있다.

>>=의 잘못된 사용 (닫힘 관계 버그)

  • 개발자가 >=로 입력해야 하는 곳에 >라고 잘못 입력한 경우

if (a > 1) {
  // 출력 처리
} else {
  // 에러 처리
}

잘못 입력한 숫자, 요구사항 사양 오해 등

  • 개발자가 1이라 입력하는 대신 잘못해서 2로 입력한 경우

if (a >= 2) {
  // 출력 처리
} else {
  // 에러 처리
}

경계가 없음

  • 개발자가 조건문을 작성하는 것을 잊어버린 경우 (else)

if (a >= 2) {
  // 출력 처리
}
// else 까머금

여분의 경계

  • 불필요한 경계를 개발자가 작성한 경우

if (a > 2 %% a < 10) {
  // 출력 처리 
} else {
  // 에러 처리
}

상태 전이 테스트

'상태'를 모델화해서 테스트를 수행하는 방법

  • '상태 전이'란 크게 상태전이로 나누어 표현됨

  • 어떤 상태에서 다른 상태로 이동하기 위해서는 전이가 발생함

  • Ex: 애플리케이션이 기동하는 상태를 상태 A, 기동하지 않는 상태를 B라 정의, 상태 A에서 상태 B로 바뀌려면 애플리케이션이 종료 상태를 거쳐야함

  • 상태 전이 테스트에서는 함수(또는 클래스) 레벨에서 단위 테스트가 끝난 뒤, 해당 함수가 다른 함수에서 호출되는지 등을 확인

  • 상태 전이 테스트에서는 일반적으로 상태 전이 매트릭스를 사용함

상태 전이 매트릭스

이벤트/상태
시스템
입력 대기
대화 상자 열기

기동

입력 대기

N/A(두 번째 인스턴스가 기동하지 않는 것을 확인)

N/A(두 번째 인스턴스가 기동하지 않는 것을 확인)

메뉴 명령어

N/A

파일 대화 상자 열기

N/A

입력

N/A

입력 대기

N/A

대화 상자 닫기

N/A

N/A

입력 대기

애플리케이션 종료

N/A

시스템

N/A(종료하지 않는 것을 확인)

개발자라면 이와 같은 내용을 올바른 문장으로 만들고 테스터에게 전달하는 행동매우 중요하다.

  • 그렇지 않다면 스스로 테스트를 수행해야 한다.

  • 만약 이 중 한가지라도 부족하면 시장의 버그로 연결된다.

Last updated