문제

안녕하세요. 내 프로젝트에는 수백 개의 테스트 사례가 있습니다. 이러한 테스트 사례는 체크인할 때마다 트리거되고 개발자 그룹에 메일을 보내는 빌드 프로세스의 일부입니다. 이 프로젝트는 상당히 규모가 크며 5년 이상 진행되었습니다.
이제 빌드하는 데 한 시간 이상 걸리는 테스트 케이스가 너무 많습니다. 테스트 케이스 중 일부는 제대로 구성되지 않았으며 리팩토링 후 실행 시간을 크게 줄일 수 있었지만 수백 개의 테스트 케이스가 있으며 하나씩 리팩토링합니다. 하나는 너무 많은 것 같습니다.
이제 나는 모든 체크인의 일부가 아닌 야간 빌드의 일부로만 일부 테스트 사례(실행하는 데 시간이 오래 걸림)를 실행합니다.
다른 사람들은 어떻게 관리하는지 궁금합니다.

도움이 되었습니까?

해결책

테스트 스위트가 몇 분 이상 걸리면 개발자가 너무 느려지고 테스트가 무시되기 시작할 것이라고 말했다. 당신이 그 함정에 빠지는 것처럼 들립니다.

테스트 케이스가 데이터베이스에 대해 실행 중입니까? 그렇다면 그것은 가장 큰 성능 문제의 원천 일 가능성이 높습니다. 일반적으로 시험 사례는 가능하면 I/O를 수행해서는 안됩니다. 종속성 주입을 사용하면 데이터베이스 개체를 코드의 데이터베이스 부분을 시뮬레이션하는 모의 개체로 바꿀 수 있습니다. 이를 테스트 할 수 있습니다 암호 데이터베이스가 올바르게 설정되어 있는지 걱정하지 않고

적극 권장합니다 레거시 코드로 효과적으로 작동합니다 Michael Feathers. 그는 한 번에 코드를 리팩토링하지 않고도 실행중인 많은 두통을 처리하는 방법에 대해 논의합니다.

업데이트:

또 다른 가능한 도움은 ndbunit과 같은 것입니다. 나는 아직 그것을 광범위하게 사용하지 않았지만 유망한 것 같습니다. http://code.google.com/p/ndbunit/

다른 팁

아마도 Oracle 데이터베이스를 유지하지만 RAM 드라이브에서 실행하는 것을 고려할 수 있습니까? 테스트 데이터 만 포함하므로 크지 않아도됩니다.

우리는 약 1000개의 테스트를 보유하고 있으며 그 중 상당 부분이 REST를 통해 통신하고 데이터베이스에 도달합니다.총 실행시간은 약 8분 정도입니다.한 시간이 너무 긴 것 같지만, 무엇을 하고 있는지, 테스트가 얼마나 복잡한지는 잘 모르겠습니다.

하지만 내 생각에는 당신을 도울 수 있는 방법이 있는 것 같아요.우리는 TeamCity를 사용하고 있으며 여러 빌드 에이전트를 보유할 수 있는 훌륭한 기능을 갖추고 있습니다.당신이 할 수 있는 일은 테스트 프로젝트를 여러 개의 테스트만 포함하는 각 하위 프로젝트로 구성된 하위 프로젝트로 분할하는 것입니다.JNunit/NUnit 카테고리를 사용하여 구분할 수 있습니다.그런 다음 각 에이전트가 한 가지 유형의 하위 프로젝트만 빌드하도록 TeamCity를 구성합니다.이렇게 하면 테스트를 병렬로 실행할 수 있습니다.상담원 수가 적으면(3개는 무료로 제공됨) 20분 정도 소요될 수 있으며 이는 허용될 수도 있습니다.각 에이전트를 VM에 배치하는 경우 추가 머신이 필요하지 않을 수도 있으며 많은 RAM만 있으면 됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top