테스트의 종류
End-To-End Testing / UI Testing
- 크롬 브라우저를 띄운다음에 내가 만든 페이지로 들어가서 의도한 대로 기능이 동작하는지 테스트하는 방법
- Manual Testing은 실행하기 쉽다는 장점이 있지만 비용이 많이 들고 부정확하며 실행 시간이 오래 걸린다. 자동화 할 수 있지만 UI Testing은 자동화 하기가 가장 까다롭고 또 실행하기도 까다롭다.
- 즉, UI Testing이 가장 어렵고 까다롭다.
Integration Testing
- 백엔드 기준으로 httpie 또는 postman을 사용해서 Json response가 제대로 출력되는지 테스트하는 방법이다.
- integration testing(통합 테스트)인 이유는 두 개 이상의 클래스 또는 시스템을 결합을 테스트하기 때문이다.
- 예를 들면, 장고로 서버를 띄우고 모델 클래스와 결합하여 데이터베이스 시스템과 연동한 테스트이다.
- Integration Testing이 E2E Testing 다음으로 공수가 많이 든다.
Unit Testing
- Unit Testing는 함수와 같이 테스트 할 수 있는 가장 작은 단위를 테스트 하는 코드를 작성해서 테스트하는 방법이다.
- Unit Testing이 가장 쉬우며 효과가 좋다.
Testing Pyramid, 어떤 테스트를 해야할까
- Google Test Automation Conference에서 제안된 테스트 피라미드
- 시스템을 테스트 할때 크게 3가지 방법으로 나눌 수 있다.
- 전체 테스트 비중을 아래와 같은 수치로 구현하는 것이 권장된다.
E2E(UI) Testing
- 10%
Integrating Testing
- 20%
Unit Testing
- 70%
Unit test의 장점
- 테스트케이스가 꼼꼼하게 작성되어 있다면, 개발과정 중에 미리 문제를 파악할 수 있다.
- 코드변경시, 변경한 부분으로 인한 영향도를 쉽게 파악할 수 있다.
- 코드 리팩토링을 안심하고 할 수 있다. 테스트케이스들은 내가 가입한 보험들 같다.
- 테스트 자동화를 통해서 항상 딜리버리 가능한 제품을 만들 수 있다.
- 새로운 입력이 팀에 합류했을때, 개발 스타일, 표준, 컨벤션등을 공유하기에 좋다.
- 페어 프로그래밍을 할때, 테스트케이스 작성하고 개발하는 역할 핑퐁을 통해서 개발을 페어로 집중해서 진행할 수 있다.
- TDD + Pair Programming을 한다면, 테스트케이스 작성한 사람의 설계를 공유하면서 소스 개발까지 이어질 수 있으므로 집중력있게 개발할 수 있다.
참고사이트
E2E Test 알아보기
TestPyramid
설마 아직도 테스트 코드를 작성 안 하시나요?
Unit Test (단위 테스트) 도입하기 - 1편
유닛테스트에 대한 생각