| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- MST
- 크루스칼
- 구현
- 그래프 탐색
- 프림
- BFS
- 자바
- 코딩테스트
- OrderBy
- Baekjoon
- SQL코딩테스트
- 누적합
- GROUPBY
- 다익스트라
- JOIN
- AWS
- 배포
- 피로그래밍
- 프로그래머스
- django
- 알고리즘
- SQL
- 최단경로
- Database
- db
- union find
- Pirogramming
- EC2
- Java
- 백준
Archives
- Today
- Total
NullNull
Testing Pyramid와 Unit Test 본문
Testing Pyramid
Mike Cohn 이 Agile로 거둔 성과이며 이를 개념화 한 내용이다. 아래 계층일 수록 작성해야하는 테스트의 수가 많지만 실행 속도가 가장 빠르고 비용도 저렴하다. 반면에 위의 계층일수록 작성해야 하는 테스트의 수는 적어지지만 실행 리소스가 많이 든다.
- 밑으로 갈 수록 더 많은 양의 테스트를 작성해야 함
- 위로 갈 수록 작성이 어렵고 유지보수가 어려움
- Unit Test가 작성이 쉽기 때문에 가장 많은 양으로 작성해야함

각 계층에서 테스트 하는 단위와 성격은 아래와 같다.
Unit Test
- 작은 단위(Class, Method 단위)의 기능에 대한 유효성을 검증하는 테스트
- Target의 Scope는 엄격하게 정해지지 않음
- 최대한 간단하고 디버깅하기 쉽게 작성
Integration Test
- 서로 다른 모듈 혹은 클래스 간 상호작용의 유효성을 검사하는 테스트
- @SpringBootTest 어노테이션으로 통합 테스트 수행
UI Test (E2E Test, Acceptance Test)
- 실제 앱을 사용자의 흐름에 따라 화면에 직접 터치해가며 일련의 동작을 수행해 보는 테스트
- Acceptance Test
Unit Test
이 중에서 Unit Test에 대해서 더 생각해보자. Unit Test는 가장 아래 계층으로 가장 많은 수의 테스트를 작성해야 한다. 그 이유는 테스트를 실행하는데 리소스가 가장 적게 소모되기 때문이다.
이 관점에서 Unit Test는 상대적으로 작은 노력으로 코드의 의동한 동작 여부를 확인할 수 있다. 이는 곧 프로젝트의 안정성을 향상시키면서 효율적으로 테스팅을 수행하도록 돕는다. 또한 다양한 뿐을 커버하면서 리팩토링 시 안정성을 보장할 수 있다. 만약 리팩토링 후 Unit Test가 실패한다면, 코드 수정이 부적절하게 이루어졌음을 신속하게 감지할 수 있기 때문이다.
이러한 과정을 통해 최종적으로는 개발과 테스팅에 소요되는 시간과 비용을 절감할 수 있다. Unit Test는 작은 범위에서 높은 효과를 가져와, 개발 주기를 단축하고 유지보수를 용이하게 만든다.
Unit Test
작성해야 하는 이유
- 코드 수정 및 기능을 추가할 때 수시로 빠르게 검증 할 수 있음
- 리팩토링 시에 안정성을 확보할 수 있음
- 개발 및 테스팅에 대한 시간과 비용 절감 가능
좋은 단위 테스트의 특징 (FIRST)
- F : Fast - 테스트는 빠르게 동작하여 자주 돌릴 수 있어야 함
- I : Independent - 각각의 테스트는 독립적이며 서로 의존해서는 안된다.
- R : Repeatable - 어느 환경에서도 반복 가능해야 한다.
- S : Self-Validating - 테스트는 성공 또는 실패로 bool 값으로 결과를 내어 자체적으로 검증되어야 한다.
- T : Timely - 테스트하려는 실제 코드를 구현하기 직전에 작성해야 한다.
Java 에서 단위 테스트를 작성하는데 도움을 주는 모듈과 라이브러리는 다음과 같다.
- JUnit
- Matcher (Hamcrest, AssertJ, Truth)
- Mockito
이들에 대해서 하나하나 알아보자. (다음 글..부터)
Comments