2016-10-09 4 views
1

이 기술의 초보자 ... 그러나 지금까지, 제 독서에서 단위 테스트, 수용/통합 테스트 (동일하지 않음) 및 종단 간 테스트라는 3 가지 범주가 있다는 것을 이해합니다.TDD 테스트 기술의 차별화 된 기술은 무엇입니까?

3 가지 중 하나는 단위 테스트 만 번개처럼 빠르게 실행되는 것입니다. 개발하는 동안 항상 전체 프로젝트에 대한 모든 단위 테스트를 실행하는 것이 매우 합리적입니다. 그러나 같은 것은 다른 유형에 대해서는 말할 수 없습니다.

그러므로 전체 프로젝트에 대한 모든 단위 테스트를 실행하는 동안 각 테스트 실행마다 단일 수용 테스트 (또는 관련 그룹의 그룹)를 실행하려는 것 같습니다.

"빨간색"상태 인 최신 종단 간 테스트의 경우 이러한 테스트가 수락 테스트보다 더 느릴 수 있으므로 간헐적으로 만 실행하고 싶지 않을 수 있습니다. 그리고 전체 엔드 투 엔드 컬렉션은 어쩌면 다른 작업을하거나 야간이나 스트로크를 할 때만 가능합니까?

저는 Gradle을 사용하고 있습니다. 예를 들어, tests \ unittests 디렉토리 아래의 모든 단위 테스트 만 실행하는 특별한 테스트 작업을 만들 수 있다는 것을 알고 있습니다.하지만 내 생각이 맞으면, 코드를 끊임없이 편집하는 것 이외의 다른 수락 테스트를 건너 뛰거나 선택하는 습관적인 방법이 있습니까? 꽤 귀찮을 수 있습니다.

예를 들어 특정 수용 범주 또는 종단 간 테스트에 특정 "범주"로 태그를 지정하거나 이러한 테스트를 계층 적 폴더 구조로 정렬 할 수 있습니까?

답변

1

것은 내가 Gradle을 사용하지 않은,하지만 파이썬에서 나는 정기적 설명 두 가지 사용 기능 테스트의 특정 클래스 (하위 집합의

  • 태그는 일반적으로 실행할 수 "연기"테스트로 태그를 각 배포) 계층에서
  • 나타내는 시험 보통 태그되어
    • 작은/부
    • 통합
    • 기능 (연기 검정 고시 기능 테스트)
    • UI
    • E2E 단지 단위 테스트가 번개 빠른 실행을 의미하는 것으로 보인다

.

이것은 모든 단위 테스트가 IO free 일 것을 권장하며, 이는 한 번만 커밋 할 때 조명을 빠르게 실행하는 것을 목표로합니다. 이 프로세스는 대개 Repo에 대한 모든 커밋을 트리거하는 CI 빌드 작업으로 코딩됩니다.

그러나 다른 유형과 같다고 할 수는 없습니다. 실제로 허용되는 빌드 시간과 프로젝트 크기에 따라 다릅니다. 나는 대부분의 프로젝트가 실제로 많은 통합을 갖고 있지 않으며, 과도한 통합이있을 경우 일반적으로 서비스가 재검토되어야한다는 좋은 징조임을 알게되었습니다. 적분 통합을 위해, 재현하기 어려운 오류 케이스로부터 보호하기 위해 얼마나 많은 테스트가 필요한지, 인터페이스 변경시 중단 될 수 있는지 확인하기 위해 얼마나 많은 테스트가 필요한가 ??내 경험으로는 많지 않습니다. 최근에 통합 테스트를 위해 docker-compose을 사용하기 시작했습니다. 이는 많은 테스트 20-30이 모든 커밋에 대해 매우 빠르게 실행될 수 있도록합니다.

docker-compose는 깨끗한 e2e 환경을 수용하여 수용/기능 테스트를 실행하도록 허용합니다.

더 높은 수준의 테스트는 자주 실행되지 않지만 가능한 한 자주 실행해야한다는 것이 내 경험입니다. 예를 들어, 모든 엔드 포인트의 모든 메소드를 다루는 300 개의 기능 테스트와 함께 API를 사용합니다. UI와 상호 작용하지 않고 HTTP 만 사용하기 때문에 약 1 분 정도 걸립니다. 환경에 배포 할 때마다 정기적으로 실행됩니다.

+0

감사 ... 매우 도움이 됨 –