728x90
반응형
Intro
코드를 더 안전하게 만드는 궁극적인 방법: 다양한 종류의 테스트를 사용하는 것
일반적인 테스트: 사용자 관점에서 애플리케이션이 올바르게 작동하는지 확인
- 애플리케이션 외부에서 올바르게 작동하는 것이 목표
- 충분한 수의 tester를 처리
- 개발자에게 유용하지만 불충분함 => 단위테스트가 필요한 이유
- 시스템의 구체적인 element들의 올바른 작동을 보장하지 못함
- 개발 중에 더 빠른 피드백을 제공하지 못함
단위 테스트 (Unit test)
구현된 elements의 작동방식에 대해서 빠른 피드백을 제공하기 때문에 개발중에 유용함
테스트는 누적되므로 regression에 있어서도 쉽게 확인 가능
수동으로 테스트하기 어려운 사례도 확인가능*TDD(Test Driven Development)방식에서는 단위테스트를 먼저 작성 후 이를 충족하는 구현체를 개발
단위테스트에서 체크되어야하는 것들
Common use cases
- 일반적으로 우리가 해당 요소를 사용할 때 기대되는 결과에 대한 검증
- 아래의 예제와 같이 함수가 몇개의 테스트에 대해서 잘 작동하는지 검증
@Test
fun `fib works correctly for the first 5 positions`() {
assertEquals(1, fib(0))
assertEquals(1, fib(1))
assertEquals(2, fib(2))
assertEquals(3, fib(3))
assertEqauls(5, fib(4))
}
Common error cases or potential problems
- 올바르게 동작하지 않거나 과거게 문제가 있었던 것으로 나타났던 사례 검증
Edge-cases and illegal arguments
- Intwe의 경우, Int.MAX_VALUE와 같은 큰 숫자 검증
- nullable object의 경우, null이거나 null로 채워진 개체 검증
- 음수에 대한 fibonacci ...
단위테스트의 장점
- 잘 테스트된 elements가 더 안정적이어서, 자신감을 가지고 개발할 수 있다!
- elements가 제대로 테스트되면 리팩토링하는 것도 두렵지 않다!
- 수동으로 확인하는 것보다 단위테스트를 사용해 올바르게 작동하는지 확인하는 것이 빠른 경우가 많다. (피드백이 빨라 개발자가 대처하기 쉬움)
단위테스트의 단점
- 단위테스트를 작성하는데 시간이 걸린다. 장기적으로는 좋은 단위테스트를 작성한 경우, 디버깅하고 버그를 찾는데 적은 시간을 할애하므로 시간을 절약할 수 있음
- 테스트가 가능하도록 코드를 조정해야한다.
- 좋은 단위 테스트를 작성하는 것은 어렵기 때문에, 개발 이외의 부분과 마주하는 기술과 이해가 필요하다. TDD를 공부하세요!
728x90
반응형
'개발 > Java, Kotlin' 카테고리의 다른 글
[Effective Kotlin] Item 24: Consider variance for generic types (0) | 2021.09.09 |
---|---|
[Effective Kotlin] Item 17: Consider naming arguments (1) | 2021.08.25 |
[Kotlin test framework] Kotest (0) | 2021.08.21 |
가비지컬렉션 (Garbage Collection) (0) | 2020.12.29 |
JVM (Java Virtual Machine) (0) | 2020.12.28 |
댓글