본문 바로가기
[Effective Unit Testing] Chap7. 테스트 가능 설계 [Effective Unit Testing] Chap7. 테스트 가능 설계 7.1. 테스트 가능 설계란? -테스트 가능 설계의 가장 큰 의의는 당연히 코드를 더 잘 테스트할 수 있도록 해준다는 것이다. -테스트 용이성(testability)이란 테스트할 수 있는 소프트웨어냐 아니냐를 설명하는 용어가 아니다.그보다는 소프트웨어를 멀마나 쉽게 테스트할 수 있느냐를 평가하는 용어다.단위 테스트를 위한 시나리오 준비는 식은 죽 먹기여야 한다.테스트 용이성이 떨어질수록 테스트를 작성하는 프로그래머의 부담이 커진다. 7.1.1. 모듈러 설계 -제품은 특정 역할을 담당하는 독립 모듈로 구성된다는 그 본질만 잘 반영하면 자연스럽게 모듈러 설계가 만들어진다.제품의 전체 기능을 뚜렷한 역할로 나누고 그 역할 각각을 독립된.. 2019. 3. 17.
[Effective Unit Testing] Chap6. 신뢰성 [Effective Unit Testing] Chap6. 신뢰성 -테스트를 작성하는 이유이기도 한 신뢰할 수 있는 코드를 만들기 위해서는 테스트 자체도 믿음직해야 한다.소프트웨어 개발에는 코드를 수정하고 개선하고 관리하는 일이 빠질 수 없는데, 만약 테스트를 믿지 못한다면 아무 관련 없어 보이는 코드라도 쉽사리 바꾸지 못한다. -주석은 이해를 돕기 위한 설명글로 코드에 적어 넣을 수 있다는 요긴함이 있지만,자칫 한눈파는 순간 엉터리 정보로 둔갑하는가하면, 본문 전체를 주석 처리한 테스트는 실제로는 아무것도 안 하면서 성공했다고 보고되기도 한다. 6.1. 주석으로 변한 테스트 -주석으로 변한 테스트(Commented-out Test)는 아무런 설명도 없이 읽는 이에게 혼란을 가져다 준다. 6.1.1. 예시.. 2019. 3. 15.
[Effective Unit Testing] Chap4. 가독성 [Effective Unit Testing] Chap4. 가독성 -테스트를 읽은 프로그래머는 코드가 “해야 할 일”을 이해할 수 있어야 한다.또한, 테스트를 실행한 후에는 코드가 실제로 "한 일”이 무엇인지 말할 수 있어야 한다. -테스트의 핵심인 단언문은 대상 코드의 올바른 동작을 규정한다. -결국, 테스트 코드는 읽기 쉬워야 한다.테스트가 무슨 일을 하는지 파악하기 위해 머리를 쥐어뜯는 일은 없어야 한다. -테스트 냄새는 숱하게 많지만, 그중에서도 가장 흔한 냄새는 바로 "기본 타입 단언”이다. 4.1. 기본 타입 단언 -단언문은 가정이나 의도를 명시해야 한다.또한 코드의 동작을 서술하는 문장이어야 한다.기본 타입 단언(Primitive Assertion)이란 단언하려는 이유나 의도가 의미를 알 수 .. 2019. 3. 13.
[Effective Unit Testing] Chap2. 좋은 테스트란? [Effective Unit Testing] Chap2. 좋은 테스트란? -좋은 테스트의 고려 사항은 아래와 같다. 테스트 코드의 가독성과 유지보수성 프로젝트 안에서, 그리고 소스 파일 안에서 코드는 적절히 구조화되어 있는가? 테스트가 무엇을 검사하는가? 테스트는 안정적이고 반복 가능한가? 테스트가 테스트 더블을 잘 활용하는가? ... 2.1. 읽기 쉬운 코드가 유지보수도 쉽다.-자동화된 테스트는 결함을 효과적으로 막아주지만, 테스트 역시 코드인지라 가독성 문제에서 벗어날 수는 없다.읽기 어려운 코드는 검증하기도 어렵고, 결과적으로 테스트를 조금만 작성하는 사태로까지 이어진다.또 그렇게 작성된 테스트는 우리가 생각하는 좋은 테스트와는 거리가 멀다.제품의 구조와 API 가 테스트를 고려하지 않고 만들어졌다.. 2019. 2. 27.
[Effective Unit Testing] Chap1. 좋은 테스트의 약속 [Effective Unit Testing] Chap1. 좋은 테스트의 약속 -좋은 설계임을 증명하려거든 자동화된 테스트를 만들어보라! -테스트에 대한 인식 전환이 필요하다.테스트란 단순한 기능 검증 수단만이 아닌 요구사항을 명시한 문장이요, 모듈과 API 설계 수단이며, 사용설명서이자, 최고의 인수인계/유지보수 자료이기까지 하다.개발자의 설계역량 면에서 보면, 디자인 패턴에만 의지하기보다 테스트하기 쉬운 설계를 추구하는 쪽이 훨씬 탄탄한 기본기와 응용력을 길러줄 것이라고 감히 단언할 수 있다. 1.1. 더 좋은 테스트를 작성하기 위한 현황 점검-테스트 선행 방식에서는 자동화된 테스트를 단순한 오류 예방 목적으로뿐 아니라, 코딩 전에 그 코드에 기대하는 동작을 정의하는 설계 보조 수단으로까지 활용한다.구.. 2019. 2. 26.
반응형