TDD(Test-Driven Development)
정의
TDD는 소프트웨어 개발 프로세스에서 테스트가 개발을 주도하는 방식입니다. 개발자는 코드를 작성하기 전에 실패하는 테스트 케이스를 먼저 작성합니다. 그 후, 테스트를 통과할 수 있는 최소한의 코드를 작성합니다. 마지막으로, 코드를 리팩토링하여 요구 사항을 만족시키는 동시에 코드의 품질을 향상시킵니다.
중요성
- 품질 보증: TDD는 버그를 사전에 찾아내어 소프트웨어의 품질을 높이는 데 도움이 됩니다.
- 설계 개선: 테스트를 먼저 작성하면 더 깨끗하고 유지 관리가 용이한 코드를 설계하도록 강제합니다.
- 문서화의 역할: 테스트 케이스는 기능의 사용 방법과 요구 사항을 문서화하는 역할을 합니다.
- 리팩토링 용이성: 이미 작성된 테스트 케이스가 있기 때문에 코드를 안전하게 리팩토링할 수 있습니다.
단위 테스트(Unit Tests)
단위 테스트는 소프트웨어의 가장 작은 단위인 함수나 메서드의 정확성을 검증하는 테스트입니다. 단위 테스트는 독립적으로 실행되며, 다른 테스트와 격리되어야 합니다. 이를 통해 개발자는 코드의 특정 부분이 예상대로 작동하는지 빠르게 확인할 수 있습니다.
테스트 프레임워크
테스트 프레임워크는 테스트 케이스의 작성, 실행 및 결과 보고를 도와주는 도구입니다. Java의 대표적인 테스트 프레임워크로는 JUnit이 있으며, Spring 프로젝트에서는 Spring Test를 사용할 수 있습니다. Mockito와 같은 모킹 프레임워크를 사용하여 의존성을 목 객체로 대체함으로써 테스트를 더 격리시킬 수 있습니다.
- Mockito
Mock을 지원하는 프레임워크입니다, 보통 Spring Boot Test에서 사용하는 Junit 상위에서 동작합니다. 객체를 만들고 관리하여 검증할 수 있는 방법을 제공해주는 라이브러리입니다.
Mockito는 Test Double 이라는 것에 대해서 많이 접하게 되는데, 테스트할 경우 실제 객체의 역할을 대신해주는 객체를 뜻한다. 즉, DB로부터 조회한 값을 연산하는 로직을 구현했다면, 테스트 코드에 경우 실제 DB에 연산하지 않는 다는 것.
그래서 Mock을 지원한다는데, 그게 뭔데? 라고 한다면 Mock이란것은 테스트를 원하는 코드에 객체를 대신 동작하기 위해 만들어지는 가짜 객체다. 테스트 대상인 Mock 객체는 내부의 가상화 된 메소드를 부를 수 있다. 가상화단 메소드가 호출에 어떤 결과를 반환할 지 결정하고, 해당 내용에 따라 동작하도록 프로그래밍한 객체 그 자체를 Mock 이라고 부른다.
말로 하는게 어렵다면, 실제로 돌려보면 쉽게 파악할 수 있다. 다음엔 Mockito를 이용해 Mock이 어떤 역할을 하는지 알아보자
'기본 CS지식' 카테고리의 다른 글
aws cloud practitioner 컴퓨팅/클라우드 분야 (0) | 2024.04.27 |
---|---|
네트워크 프로토콜 -웹소켓 (1) | 2024.04.26 |
NoSQL이란 (1) | 2023.11.01 |
메모리 관리란 (0) | 2023.10.23 |
운영체제 기본지식 (0) | 2023.10.20 |