테스트의 장점
- 장애에 관한 신속한 피드백
- 개발 주기에서 조기 장애 감지
- 회귀에 신경 쓸 필요 없이 코드를 최적화할 수 있도록 하는 안전한 코드 리팩터링
- 기술적 문제를 최소화하는 안정적인 개발 속도
테스트 방법
화이트 박스 테스트
- 내부 구조와 동작에 중점을 두고 하는 테스트
- 코드의 내부 로직, 제어 흐름, 데이터 흐름 등을 이해하고 검증하는 데에 사용
- 테스트 케이스를 설계할 때 코드의 특정 부분을 직접 확인
- 주요 기법으로는 구문 검사, 경로 검사, 조건/분기 검사 등
블랙 박스 테스트
- 소프트웨어의 내부 구조를 무시하고 기능을 테스트하는 방법
- 시스템이 어떻게 동작하는지에 대한 내부 정보 필요 없이 사용자 관점에서 테스트
- 테스트 케이스는 입력 값과 예상 출력 값에 기반하여 설계
- 요구 사항을 충족하는지 확인, 시스템의 기능 및 비기능적 요구 사항 테스트
- 주요 기법으로는 등가 분할, 경계 값 분석, 상태 전이 테스트 등
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 코드를 실행하게 되면 아래와 같이 실행 결과 출력

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