2010-02-11 4 views
12

단위 테스트를 작성할 때 대개 프로덕션 클래스 당 하나의 테스트 클래스가 있으므로 내 계층 구조는 다음과 같습니다.통합 테스트를 구성하는 방법은 무엇입니까?

src/main 
    -package1 
    -classA 
    -classB 
    -package2 
    -classC 
src/test 
    -package1 
    -classATests 
    -classBTests 
    -package2 
    -classCTests 

그러나 통합 테스트를 수행 할 때 조직의 복잡성이 줄어 듭니다. 예를 들어, classA와 classB를 함께 테스트하는 테스트 클래스가있을 수 있습니다. 당신은 어디에 넣을까요? classA, classB 및 classC를 함께 테스트하는 테스트 클래스는 어떻습니까?

또한 통합 테스트에는 일반적으로 외부 특성 또는 구성 파일이 필요합니다. 어디에서 배치하고 지명 규칙을 사용합니까?

답변

1

src/test 아래에 통합 테스트 디렉토리를 만들 수 있습니까? 물론 통합 테스트의 경우 분리가 명확하지 않지만 A, B 및 C를 함께 그룹화하는 무언가가 있습니까? 나는 이것으로 시작해서 일이 어떻게 진행되는지 보았습니다. 지금 당장 완벽한 솔루션을 제시하는 것은 힘들며 "OK"솔루션은 아무런 해결책보다 낫습니다.

2

우리의 통합 테스트는 사양과 동일한 방식으로 구성되는 경향이 있습니다. 그리고 그들은 범주 및/또는 기능에 의해 수집되는 경향이 있습니다.

+1

이 답변은 전혀 도움이되지 않으며 upvote 자격이 없습니다 : - | – t3chb0t

1

통합 테스트는 여전히 하나 이상의 클래스에 바인딩 한 이후 더 높은 단위 테스트입니다. 그룹에서 다른 모든 클래스에 (의존적으로) 의존하는 클래스를 선택하고 해당 클래스와 테스트를 연관 시키십시오.

실제 통합 테스트가있는 경우 구체적인 클래스와의 연관성은 거의 없습니다. 그런 다음 테스트는 애플리케이션 주제 영역 (도메인)과 기능 유형별로 분류됩니다. 예를 들어, 도메인은 주문, 출하, 인보이스, 인 타이틀먼트 등이며, 기능 유형은 트랜잭션, 웹, 메시징, 배치 등입니다. 이들의 순열은 통합 테스트를 구성하는 방법에 대한 첫 번째 단점을 제공합니다.

1

나는 TDD를 할 때 단위 테스트에서 클래스와 테스트 사이에 1 : 1 관계가 항상있는 것은 아니라는 것을 발견했다. 그렇게한다면 리팩토링에 어려움을 겪게됩니다. 실제로 리팩토링을 한 후에는 약 50 % 1 : 1 커플 링과 50 % 테스트로 끝나기 때문에 여러 클래스 또는 하나의 클래스로 연결되는 테스트 클러스터에 연결할 수 있습니다.

통합 테스트는 무언가가 작동하고 있거나 작동하지 않는다는 것을 증명하려고 시도 할 때 발생합니다. 이는 무언가를 전달해야하거나 버그를 발견 할 때 걱정할 때 발생합니다. 통합 테스트에서 완전한 적용 범위를 얻으려고하는 것은 나쁜 생각입니다.

가장 중요한 것은 테스트가 이야기를해야한다는 것입니다. BDD'ish 용어로 : 당신이 그런 일을 할 때 주어진 일이 일어나야합니다. 테스트는 유닛, API, 응용 프로그램, 서비스 등을 사용하려는 사람들의 의도에 대한 예입니다. ...

테스트의 세분성과 구성은 스토리에서 따릅니다. 단순한 규칙을 앞에두고 설계해서는 안됩니다.

+0

잘 형성된 대답 –

1

나는 f4의 답변에 동의하고 싶습니다. 이러한 종류의 검사 (UT보다 높은 수준)는 일반적으로 특정 클래스와 상관 관계가 없습니다. 테스트는 프로젝트 요구 사항 및 사양에 충실해야합니다.

테스트 요구 사항에 맞는 테스트 프로젝트를 실제로 개발해야하는 경우 요구 사항 또는 사용자 스토리별로 패키지가있는 별도의 프로젝트 (요구 사항 관리 방식에 따라 다름)를 권장합니다.예를 들어 :

 
src/itest 
    -package1 - corresponds to story#1 
    -classA - test case1 
    -classB - test case2 
    -package2 - corresponds to story#1 
    -classC - test case2 
    -packageData - your common test data and utilities 

그러나 명심 - 통합 또는 시스템 레벨 테스트를하고는 일반적으로 복잡한 작업이며, 그 범위는 쉽게 커버 할 수있는 소프트웨어 프로젝트를 테스트보다 더 넓은 수 있습니다. 타사 테스트 자동화 도구를 고려해 볼 준비가되어 있어야합니다. 통합 또는 시스템 테스트 수준에서는 맞춤형 테스트 패키지를 개발하는 것보다 더 효율적인 방법이기 때문입니다.

관련 문제