통합 대 단위 테스트
단위 테스트와 통합 테스트는 완전히 분리되어 있어야합니다. 단위 테스트는 한 가지만 테스트하고 나머지 시스템은 완전히 격리해야합니다. 단위는 느슨하게 정의되어 있지만 일반적으로 방법이나 함수로 귀결됩니다.
각 장치에 대해 테스트를 수행하여 알고리즘이 올바르게 구현되었음을 알 수 있으며 구현에 결함이있는 경우 무엇이 잘못되었는지 즉시 알 수 있습니다.
단위 테스트 중에 완전한 격리 테스트를 수행하므로 스텁 및 모의 객체 를 사용 하여 나머지 응용 프로그램처럼 작동합니다. 여기에서 통합 테스트가 시작됩니다. 모든 장치를 개별적으로 테스트하는 것은 좋지만 실제로 장치가 함께 작동하는지 알아야합니다.
이는 모델이 실제로 데이터베이스에 저장되어 있는지 또는 알고리즘 X가 실패한 후 실제로 경고가 발행되는지 아는 것을 의미합니다.
테스트 주도 개발
한 걸음 물러서서 TDD (Test Driven Development)를 살펴보면 몇 가지 고려해야 할 사항이 있습니다.
- 실제로 통과시키는 코드를 작성하기 전에 단위 테스트를 작성하십시오.
- 테스트를 통과하고이를 달성하기에 충분한 코드 만 작성하십시오.
- 이제 테스트가 통과되었으므로 한 걸음 물러서야합니다. 이 새로운 기능으로 리팩터링해야 할 것이 있습니까? 모든 것이 테스트에 포함되므로 안전하게 수행 할 수 있습니다.
통합 우선과 마지막 통합
통합 테스트는 두 가지 방법 중 하나로이 TDD주기에 적합합니다. 미리 글을 쓰는 사람들을 알고 있습니다. 통합 테스트를 엔드-투-엔드 (end-to-end) 테스트라고하며, 유스 케이스의 전체 경로 (애플리케이션 설정, 부트 스트래핑, 컨트롤러로 이동, 실행, 결과 확인, 출력 등 ...). 그런 다음 첫 번째 단위 테스트부터 시작하여 통과, 두 번째 추가, 통과 등을 수행합니다. 기능이 완료 될 때까지 점점 더 많은 통합 테스트 부분이 통과합니다.
다른 스타일은 단위 테스트로 피쳐 단위 테스트를 작성하고 나중에 필요한 것으로 간주되는 통합 테스트를 추가하는 것입니다. 이 두 가지의 큰 차이점은 통합 테스트의 경우 먼저 응용 프로그램의 디자인을 생각해야한다는 것입니다. 이런 종류의 TDD는 TDD가 응용 프로그램 설계에 관한 것이지 테스트에 관한 것이라는 전제에 동의하지 않습니다.
실용성
우리는 같은 프로젝트에서 모든 테스트를 수행합니다. 그러나 다른 그룹이 있습니다. 연속 통합 도구는 먼저 단위 테스트로 표시된 것을 실행합니다. 성공한 경우에만 (실제 요청, 실제 데이터베이스 사용 등) 통합 테스트 실행이 느려집니다.
우리는 보통 한 클래스에 하나의 테스트 파일을 사용합니다.
추천 독서
- 테스트에 따라 성장하는 객체 지향 소프트웨어이 책은 통합 테스트 첫 번째 방법론의 매우 좋은 예입니다
- dot.net의 예제를 사용한 단위 테스트 기술 dot.net의 예제를 사용한 단위 테스트 : D 단위 테스트의 기본 원리에 대한 훌륭한 책
- TDD에 관한 Robert C. Martin (무료 기사) : 그가 링크 한 첫 두 기사도 읽어보십시오.