Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- zipkin
- 타입스크립트
- 체인 패턴
- Serial GC
- MSA
- java 정렬
- 디자인패턴
- 배치
- Java
- 스프링 배치
- The law of Demeter
- Transaction Pattern
- Spring Boot Actuator
- JPA
- 키클락
- 사가 패턴
- spring batch
- spring cloud
- 생산자 소비자 패턴
- saga pattern
- Resilinece4j
- Spring Cloud Netfilx Eureka
- Parallel Old GC
- 멀티스레드
- thread
- 디자인 패턴
- TypeScript
- 알고리즘
- 스레드
- Action Pattern
Archives
- Today
- Total
PSD( Private-Self-Development )
단위테스트( Unit Test ) 와 테스트 주도 개발( TDD ) 본문
단위 테스트( Unit Test ) 란?
응용프로그램에서 테스트 가능한 가장 작은 소프트웨어( Java에서는 주로 클래스 )를 실행하여
예상대로 동작하는지 확인하는 테스트이다.
이러한 테스트 방식은 테스트 주도 개발 개념( TDD )과 합쳐지면 더 강력해진다.
테스트 주도 개발( TDD ) 이란?
테스트 주도 개발이란 테스트 위주의 반복 테스트를 이용한 소프트웨어 방법론이다
기존 방식과의 차이점
일반 개발 방식
요구사항 분석, 설계, 개발, 테스트, 배포 의 개발 절차를 가지게 되는데
여러 잠재적 문제점을 가지고 있다.
- 소비자의 요구사항이 처음부터 명확하지 않을 수 있다.
- 개발자가 이해하고 구현한 내용과 소비자의 요구사항이 다를 수 있다.
- 완벽한 설계가 사실상 불가능하다.
- 전체 기능을 한번에 테스팅하기 때문에 자잘한 버그 또한 있을 수 있다.
- 위의 사항으로 인해 짧은 기간에 재설계 및 재구현과 같은 비효율적이고 좋지 않은 개발 절차를 가지게 될 가능성이 높다.
TDD
- 테스트 케이스를 먼저 작성
- 테스트 케이스에 맞는 실 개발 진행
- 테스트 진행
- 피드백 및 추가 기능 구현, 리팩토링
- 반복
위 와 같은 개발 절차를 가지고 진행한다.
단위 테스트 + TDD의 장점과 단점
장점
-
코드의 유지보수성 향상
-
객체 지향적인 코드 생산
-
프로그래밍 시간이 단축된다
- 테스트 문서 대체
- 테스팅에 대한 시간과 비용을 절감
단점
- 기존의 개발 방식을 바꿔야 한다.
- 처리 기한이 급한 경우 생산성이 저하된다.
좋은 단위테스트의 조건
- 1개의 테스트 함수에 대해 assert를 최소화하라
- 1개의 테스트 함수는 1가지 개념 만을 테스트하라
좋고 깨끗한 테스트 코드는 FIRST라는 5가지 규칙을 따라야 한다.
- Fast: 테스트는 빠르게 동작하여 자주 돌릴 수 있어야 한다.
- Independent: 각각의 테스트는 독립적이며 서로 의존해서는 안된다.
- Repeatable: 어느 환경에서도 반복 가능해야 한다.
- Self-Validating: 테스트는 성공 또는 실패로 bool 값으로 결과를 내어 자체적으로 검증되어야 한다.
- Timely: 테스트는 적시에 즉, 테스트하려는 실제 코드를 구현하기 직전에 구현해야 한다.
참조
https://tecoble.techcourse.co.kr/post/2021-05-25-unit-test-vs-integration-test-vs-acceptance-test/
'Backend > 기타' 카테고리의 다른 글
Nginx 란? (0) | 2023.01.19 |
---|---|
DDD(Domain Driven Design) (0) | 2022.12.01 |
Java 서버 와 Node.js 서버 장단점 및 비교 (0) | 2022.11.09 |
인터넷 브라우저에 도메인 주소 입력 시 발생하는 현상 (0) | 2022.11.09 |
단방향 암호화 ( HASH ) 와 단점 보완 (0) | 2022.10.03 |