안드로이드 개발자 노트
[이펙티브 코틀린] item10. 단위 테스트를 만들어라 본문
반응형
코드를 안전하게 만드는 가장 궁극적인 방법은 다양한 종류의 테스트를 하는 것입니다.
이러한 종류의 테스트는 사용자의 관점에서 애플리케이션 외부적으로 제대로 작동하는지 확인하는 것이 목표입니다.
단위 테스트는 개발자가 만들고 있는 요소가 제대로 동작하는지를 빠르게 피드백해주므로 개발하는 동안에 큰 도움이 됩니다.
단위 테스트는 일반적으로 다음과 같은 내용을 확인합니다.
- 일반적인 유스 케이스: 요소가 사용될 거라고 예상되는 일반적인 방법을 테스트한다.
- 일반적인 오류 케이스와 잠재적인 문제: 제대로 동작하지 않을 거라고 예상되는 일반적인 부분, 과거에 문제가 발생했던 부분 등을 테스트한다.
- 에지 케이스와 잘못된 아규먼트: Int의 경우 Int.MAX_VALUE를 사용하는 경우, nullable의 경우 'null' 또는 'null 값으로 채워진 객체'를 사용하는 경우를 의미한다. 피보나치 수는 양의 정수로만 구할 수 있다. 음의 정수 등을 넣으면 아규먼트 자체가 잘못된 것이다.
TDD(Test Driven Development)는 개발 전에 테스트를 먼저 작성하고, 테스트를 통과시키는 것을 목적으로 하나하나 구현해 나가는 방식입니다.
단위 테스트의 장점을 정리해보면 다음과 같습니다.
- 테스트가 잘 된 요소는 신뢰할 수 있다.
- 테스트가 잘 만들어져 있다면, 리펙터링하는 것이 두렵지 않다. 테스트가 있으므로, 리펙터링했을 때 버그가 생기는지 쉽게 확인할 수 있다.
- 수동으로 테스트하는 것보다 단위 테스트로 확인하는 것이 빠르다. 빠른 속도의 피드백 루프가 만들어지므로, 개발의 전체적인 속도가 빨라지며 버그를 빨리 찾을 수 있으므로 버그를 수정하는 비용도 줄어든다.
하지만 다음과 같은 단점도 있습니다.
- 단위 테스트를 만드는 데 시간이 걸린다. 장기적으로 좋은 단위 테스트는 '디버깅 시간'과 '버그를 찾는 데 소모되는 시간'을 줄여야 한다.
- 테스트를 활용할 수 있게 코드를 조정해야 한다. 이러한 변경을 통해서 잘 정립된 아키텍처를 사용하는 것이 강제된다.
- 좋은 단위 테스트를 만드는 작업이 꽤 어렵다. 남은 개발 과정에 대한 확실한 이해와 소프트웨어 테스팅 또는 테스트 주도 개발과 관련된 내용을 이해하는 것이 필요하다.
정리
- 가장 중요한 것은 애플리케이션이 올바르게 동작하는지 확인하는 것이고 이것이 테스트이다.
- 테스트 중 개발 과정에서 가장 효율적으로 활용할 수 있는 테스트는 단위 테스트이다.
반응형
'Kotlin > 이펙티브 코틀린' 카테고리의 다른 글
[이펙티브 코틀린] item11. 가독성을 목표로 설계하라 (0) | 2023.09.24 |
---|---|
[이펙티브 코틀린] Item9. use를 사용하여 리소스를 닫아라 (0) | 2023.09.16 |
[이펙티브 코틀린] Item8. 적절하게 null을 처리하라 (0) | 2023.09.09 |