February 07, 2022
🔖 오늘 읽은 범위 : 9장 - 단위테스트
위 세 가지 규칙을 따르면 실제 코드를 사실상 전부 테스트하는 테스트 케이스가 나온다. 하지만 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다.
테스트는 유연성, 유지보수성, 재사용성을 제공한다.
단위테스트
다.BUILD-OPERATE-CHECK 패턴이 테스트 구조에 적합하다. 각 테스트는 명확하게 세 부분으로 나눠진다.
이중 표준
테스트를 분리하면 중복되는 코드가 많아지는데, 이 때는 TEMPLATE METHOD
패턴을 사용하면 중복을 제거할 수 있다.
깨끗한 테스트는 다음 다섯 가지 규칙을 따르는데, 각 규칙에서 첫 글자를 따오면 FIRST 가 된다.
테스트 코드는 지속적으로 깨끗하게 관리하자. 표현력을 높이고 간결하게 정리하자. 테스트 API 를 구현해 도메인 특화 언어를 만들자.
테스트 코드는 작성하다보면 깔끔하게 작성하기가 어려울 때가 많다. 테스트 당 개념 하나를 놓치고 생각대로 작성했기에 그렇게 작성할 수 밖에 없었던게 아닐까.
오늘부터 다시 알고리즘을 풀면서 테스트 코드를 좀 더 깨끗하게 작성하는 방법을 익혀봐야겠다.
FIRST 전략 중 가장 공감이 되는 부분은 Fast 이다. 이전에 오픈소스에 기여할 때, 특정 테스트는 오래 걸려서 테스트 돌릴 때 빼고 돌리는 형태로 작업을 했었다. 작업할 때 돌리지 못한 테스트는 Pull Request 시에 테스트 할 수 있었는데 이 부분을 작업하면서 같이 돌릴 수 있으면 좀 더 많은 범위를 테스트할 수 있지 않았을까 아쉬움이 남는다. (테스트 코드 경험이 많지 않아서 작성한 예시는 매번 돌리지않아도 되는 테스트였을 수 있다.)
알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의하는 패턴
알고리즘이 단계별로 나누어지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른 형태로 사용이 필요한 경우 유용한 패턴이다.
참고: https://yaboong.github.io/design-pattern/2018/09/27/template-method-pattern/
Build - 테스트 시나리오를 준비하는 단계
Operate - 메서드를 실행하는 단계
Check - 실행된 메소드의 결과가 예상했던 것과 일치하는지 확인한다.
https://medium.com/swlh/usual-production-patterns-applied-to-integration-tests-50a941f0b04a
가독성
이 필요하다.**단위테스트**
다.