Dart Unit Test

김도현·2023년 12월 18일
post-thumbnail

테스트의 장점

  • 장애에 관한 신속한 피드백
  • 개발 주기에서 조기 장애 감지
  • 회귀에 신경 쓸 필요 없이 코드를 최적화할 수 있도록 하는 안전한 코드 리팩터링
  • 기술적 문제를 최소화하는 안정적인 개발 속도

테스트 방법
화이트 박스 테스트

  • 내부 구조와 동작에 중점을 두고 하는 테스트
  • 코드의 내부 로직, 제어 흐름, 데이터 흐름 등을 이해하고 검증하는 데에 사용
  • 테스트 케이스를 설계할 때 코드의 특정 부분을 직접 확인
  • 주요 기법으로는 구문 검사, 경로 검사, 조건/분기 검사 등

블랙 박스 테스트

  • 소프트웨어의 내부 구조를 무시하고 기능을 테스트하는 방법
  • 시스템이 어떻게 동작하는지에 대한 내부 정보 필요 없이 사용자 관점에서 테스트
  • 테스트 케이스는 입력 값과 예상 출력 값에 기반하여 설계
  • 요구 사항을 충족하는지 확인, 시스템의 기능 및 비기능적 요구 사항 테스트
  • 주요 기법으로는 등가 분할, 경계 값 분석, 상태 전이 테스트 등

Unit Test

  • 특정 모듈이 의도한 대로 잘 작동하는가를 테스트하는 것

Unit Test가 필요한 경우

  • DB: 스키마가 변경되는 경우, 모델 클래스가 변경되는 경우
  • Network: 예측한 데이터가 제대로 들어오는지 확인
  • 데이터 검증: 예측한 데이터를 제대로 처리하고 있는지 확인

사용을 위해서는 test package를 설치해야 한다.(https://pub.dev/packages/test)
test 코드는 별도의 test 폴더에서 생성

테스트는 아래와 같이 실행 할 수 있다.
lib 폴더에서 일반적인 함수 작성

// 리스트에서 가장 큰 값을 찾아 반환하는 함수
int findMax(List<int> numbers) {
  return numbers.max;
}

test 폴더에서 test 코드를 작성하여 실행

void main() {
  // 테스트의 설명을 작성
  test('가장 큰 수를 반환하는지 테스트', () {
    expect(findMax([2, 5, 1, 9, 3]), 9);
    // expect 함수를 이용하여 결과 검증
  });
}

Debug를 통해 test 코드를 실행하게 되면 아래와 같이 실행 결과 출력

별도의 에러가 발생되지 않았다면 정상 작동하는 코드이다.

0개의 댓글