김시용
1. 📌 핵심 개념 정리
✅ 요약하기
각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.
- TDD 법칙 세가지
- 실패 하는 단위 테스트를 작성할 때까지 실제 코드 작성하지 않는다.
- 컴파일은 실패하지 않으면서 실행이 실패하는 저도로만 단위 테스트 작성한다.
- 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.
이렇게 하면 방대한 테스트 코드가 나오므로 심각한 관리 문제를 유발하기도 함
- 깨끗한 테스트 코드
- 테스트 코드는 실제 코드 못지 않게 중요하다.
- 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트다.
- 테스트 코드는 실제 코드 처럼 가독성을 위해 명료성, 단순성, 풍부한 표현력 필요
- 단, 실제 코드만큼 효율적일 필요는 없다 -> 실제 환경과 테스트 환경은 다르기 때문에
ex) 임베디드 시스템인 경우 자원과 메모리가 많이 제한적이므로 StringBuffer 사용해야하지만 테스트 환경에서는 자원이 제한적일 가능성이 낮기에 테스트 코드는 StringBuffer가 보기 흉하므로 사용을 꺼린다. - 테스트 당 assert 하나, 개념 하나
- F.I.R.S.T
- Fast : 테스트는 빨라야 하다.
- Independent : 각 테스트는 서로 의존하면 안 된다.
- Repeatable : 테스트는 어떤 환경에서도 반복 가능해야 한다.
- Self-Validating : 테스트는 bool값으로 결과 내기
- Timely : 테스트는 적시에 작성해야 한다.
(단위 테스트는 테스트하려는 실제 코드를 구현하기 직전에 구현한다)
2. 🤔 이해가 어려운 부분
🔍 질문하기
책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.
- 단위 테스트 자동화
-
어려웠던 부분
애자일과 TDD를 통한 단위 테스트 자동화 방법 -
궁금한 점
단위 테스트 자동화라는게 테스트 코드를 자동으로 작성해주는 것인가?
Q. 정확히 단위 테스트 자동화가 무엇을 의미하는가?
A. 테스트 코드를 자동으로 작성해주는 것이 아니라, 이미 작성된 테스트 코드를 자동으로 실행하고 결과를 보고하는 시스템을 구축하는 것을 의미-
자동 실행: 단위 테스트 자동화는 작성된 테스트 코드를 자동으로 실행할 수 있게 해 줍니다. 이는 수동으로 테스트를 수행하는 것보다 훨씬 빠르고 효율적이며, 반복적으로 수행할 수 있습니다.
-
테스트 결과 보고: 테스트가 실행되면 결과를 자동으로 수집하고 보고할 수 있습니다. 실패한 테스트에 대한 정보와 통과한 테스트에 대한 정보를 제공하여 개발자가 문제를 빠르게 파악하고 수정할 수 있게 돕습니다.
-
연속 통합(CI): CI/CD(지속적 통합 및 지속적 배포) 환경에서는 코드 변경 사항이 발생할 때마다 자동으로 테스트를 실행합니다. 이를 통해 새로운 코드가 기존 코드와 잘 작동하는지 확인할 수 있습니다.
-
도구 사용: JUnit, Mockito, Selenium 등과 같은 테스트 자동화 도구를 사용하여 테스트 케이스를 작성하고 실행할 수 있습니다. 이러한 도구들은 개발자가 테스트를 작성할 때 많은 편의성을 제공하며, 자동화된 실행을 통해 품질 보증을 강화합니다.
-
-
No Comments