문제

어떤 종류의 실행을 평가 하는 것을 목표로의 단위 테스트(#테스트 per second)?얼마나 너무 오래는 개인에 대한 단위 테스트?

나는 아는 것에 관심이 있다면 사람들은 어떤 특별 임계값 여부를 결정하기 위한 그들의 테스트는 너무 느리게,또는 그것이 바로 그 때 마찰의 오래 실행되는 테스트이 당신의 더 나은?

마지막으로,때 당신이 결정하는 테스트를 실행할 필요가 더 빠르고,어떤 기술을 사용 할속 테스트?

참고:통합 테스트를 명백하게 다른 문제를 다시.우리는 엄격히 말하는 단위 테스트를 실시해야 하는 가능한 한 자주.


응답을 모집: 주셔서 감사합니다 아주 좋은 반응까지.대부분의 조언을 것 같다하지 않는 걱정에 대해서도 집중하에서 품질과 그냥 선택적으로 실행하면 그들은 너무 느려집니다.답변으로 특정 번호를 포함한 목표 <10ms 이하 0.5 하고 1 초,테스트하거나 유지하는 전체 세트의 일반적으로 테스트를 실행에서 10 초입니다.

인지의 여부를 표시하기 위해 오른쪽으로 하나는"허용된 응답을 때"그들은 모두 유용:)

도움이 되었습니까?

해결책

모든 단위 테스트에서 실행해야에서 두 번째(는 모든 단위 테스트를 결합을 실행해야에서 1 초)입니다.지금 나는 확실히이 있는 실용적인 제한을 하지만 했으로 프로젝트 1000 실행되는 테스트를 이 빠르다.당신은 정말 원하는 속도 그래서 개발자가 없는 두려워팩터링는 일부의 핵심 부분이 모델(즉,세상에 가서 커피를 이러한 테스트는...10 분 후에 그가 다시 온다).

이 요구사항은 또한 당신을 디자인하는 응용 프로그램습니다.그것이 의미하는 귀하의 도메인 모델은 순수하고 포함 참조하는 모든 종류의 끈기(파일 I/O,데이터베이스,etc.).단위 테스트에 대한 모든 테스트는 비즈니 relatonships.

지금 하지 않는 것을 의미을 무시하고 테스트하는 데이터베이스는 지속성을 알려준다.그러나 이러한 문제는 이제 절연 뒤에 저장소할 수 있는 별도로 테스트하는 통합 테스트를 위치에서 별도의 프로젝트입니다.단위 테스트를 실행할 지속적으로 작성할 때 도메인 코드와 실행의 통합 테스트를 한 번에 확인합니다.

다른 팁

만약 우리가 얘기하는 엄격한 단위 테스트,나는 목표를 더 완전성을 위해 속도보다.는 경우 실행 시간이 일으키는 원인이 되는 것을 시작하는 마찰,별도의 시험으로 다른 프로젝트/클래스 etc., 만 실행하는 테스트는 관련 당신이에 최선을 다하고 있습니다.자 통합 서버를 실행한 모든 테스트에 대역이 지정되어 있습니다.

의 목표는 100 개의 테스트합니다.방법은 당신이 얻을 수 있으로 다음과 같은 마이클 깃털의 규칙의 단위 테스트.

하는 중요한 포인트에서 나왔는 과거 CITCON 토론하는 경우에 당신의 테스트 없이 빠르고 매우 가능성이 높을 얻을 수없는 디자인 혜택의 단위 테스트입니다.

나에 더 집중하는 경향이 가독성 테스트의 속도보다.그러나 제가 만들려고 합리적으로 빠르다.내가 생각하는 경우 그들은 실행의 순서에 밀리초,아무 문제도 없습니다.를 실행할 경우 두 번째나 이상의 테스트...당신은 수도 뭔가를 해야 하는 최적화되어 있습니다.

느린 테스트에만 문제가 될 시스템으로 성숙하고의 원인을 구축하고,당신이 더 많은 가능성이 높으로 실행는 문제의 많은 종류의 느린 테스트 보다는 오히려 하나 또는 2 개 시험을 최적화할 수 있습니다 쉽게...따라서 당신은 아마도 주목을 바로 보이는 경우가 많이 실행되는 테스트 시간을 밀리초 단위로 수백 각(또는 악화,초 각),오히려 그의 수백을 시험하는 장점이(어느 시점에서 그것은 정말 어려운 문제를 해결하).

그럼에도,그것은 단지는 시간을 줄일 때 사이 귀하의 자동화를 구축 문제는 오류를...는다면 그것은 나중에 시간(거나 심지어는 몇 시간 이상),나는 생각한다.문제가 실행되기 전에 그들은 당신에 체크,하지만 이것은 피할 수 있 선택하여부를 테스트하는 실행과 관련된 당신이 무슨하게 작업을 수행할 수 있습니다.그냥 있는지 확인 해결을 구축하는 경우 확인 코드에서는 당신을 테스트하지 않았 실행!

우리는 현재에 270 테스트 주위에 3.무언가를 초입니다.아마 주위에 8 테스트를 수행하는 파일 IO.

이들은 실행시 자동으로 성공적인 구축사의 라이브러리에서 모든 엔지니어는 기계입니다.우리는 더 광범위한(그리고 시간이 걸리는)전체가 금연 시험에 의해 수행되는 빌드 기계,매일 밤 또는 수동으로 시작할 수 있습에서는 엔지니어는 기계입니다.

당신이 볼 수 있듯이 우리는 아직 도달하는 문제의 테스트를 너무 시간이 소요됩니다.10 초 내에 지점을 시작이 될 방해,우리가 시작할 때에 접근하는 것 그것이 뭔가가 우리가 가지고 갈 것입니다.우리는 가능성이 낮은 수준 라이브러리는 더 강력한 이후 그들은 자주 변경하고 몇 가지 종속성으로 시간대를 선택하여 빌드 또는 구성을 그들은 단지에 의해 실행된 건축 기계입니다.

는 경우에 당신은 그것을 찾을 수의 몇 초 이상을 실행 백이나 그래서 테스트할 필요가 있습을 검토하이 무엇을 분류하기로 유닛 테스트는지 여부와 더 나은 것으로 처리 전체가 금연 시험합니다.

마일리지는 분명히 높은 변수에 따라서 귀하의 지역의 개발이다.

데이터 지점--Python 회귀 테스트

여기에는 숫자는 내 컴퓨터에 실행하기 위한"인 테스트에 대해"Python2.5.2:

  • 숫자의 테스트:3851(약)
  • 실행 시간:9min6sec
  • 실행률:7 개 시험/sec

나는 판단 내에서 단위 테스트는 테스트별로지에 의하여#테스트합니다.의 목표는 500ms 또는 적습니다.이상인 경우에는,내가 보는 것은 테스트를 찾는 이유입니다.

생각할 때 나는 테스트를 느리게,그것은 일반적으로 의미는 그것을 너무 많.따라서,단지 refactoring 테스트를 분할하여 그것으로 더 많은 테스트를 일반적으로 않습니다.다른 시간 내가 주의 테스트를 느리게 실행되는 경우 테스트를 보여줍니다 병목 현상에서 나의 코드,다음토 코드 순서입니다.

가 있었다 좋은 기사 이에서 힘의 두 게임,저자의 Unittest 에 대한 여러++.

얼마나 너무 오래에 대한 개별 단위 테스트?

나는 그에 따라 달라집 컴파일 속도입니다.하나는 일반적으로 실행하는 테스트에서 모든 컴파일.의 목적은 장치를 테스트하지 않을 느리게,그러나"메시지아무것도 끊어,이동"(또는"무언가가 파산지").

나는 귀찮게 하지 않습에 대한 테스트 실행 속도까지 이것은 뭔가하기 시작합니다.

위험은지 실행하는 테스트하기 때문에 그들은 너무 느려집니다.

마지막으로,때 당신이 결정 테스트 를 실행할 필요가 더 빠르고,어떤 기술 do 당신이 사용하는 최대 속도 테스트?

먼저 할 일이 관리하는 이유를 찾기 위해 그들은 너무 느려서 어떠했는 문제입니다 단위에서 테스트에서 또는 코드는 아래에서 테스트?

나려진 테스트 스위트 룸으로 여러 논리적인 부분을 실행하는 부분만 에 의해 영향을 받는 코드 변경 시 모든 컴파일.나는 실행되는 다른 스위트 덜 자주,아마도 하루에 한 번 또는 때에 내가 부러 수있는 무언가를,그리고 적어도 하기 전에 통합하기.

일부 프레임워크를 제공하는 자동 실행의 특정한 단위 테스트를 기반으로 추론 등과 같은 마지막 수정된 시간입니다.비스,레일 자동 테스트를 제공합 훨씬 빠르고 반응의 실행을 테스트할 때 내가 저장한 모델 레일 app/models/foo.rb, 해당 장치에서 테스트 test/unit/foo_test.rb 을 얻을 실행합니다.

내가 알지 못하는 경우에도 비슷한 존재하는 다른 플랫폼에 대한,하지만.

하나의 가장 중요한 규칙에 대한 단위 테스트는 그들을 실행해야 fast.

얼마나 너무 오래는 개인에 대한 단위 테스트?

개발자들을 실행할 수 있어야의 전체 단위 테스트에서는 초고,확실히지 않는 분입니다.개발자가해야 할 수 있을 신속하게 그들을 실행한 후에 코드를 변경합니다.너무 오래 걸리는 경우,그들이 귀찮게 하지 않을 실행하고 당신이 그들을 잃는 주요 이점 중 하나의 테스트합니다.

어떤 종류의 실행을 평가 하는 것을 목표로의 단위 테스트(#테스트 per second)?

당신이해야 하는 목표에 대해 각 시험에서 실행하는 주문의 밀리초,아무것도 1 위에 두 번째는 아마 테스트를 너무 많.

우리는 현재에 대해 800 테스트에서 실행되는 30 초,27 테스트합니다.이 포함되어 있는 시간을 실행하 모바일 에뮬레이터를 실행하는 데 필요한다.그들의 대부분 각 가 0-5ms(면 내가 올바르게 기억).

우리가 하나 또는 두 개의 것을 약 3 초 이는 아마 후보에 대한 확인이지만,중요한 것은 전체를 테스트하지 않는 시간이 오래 걸리는 그것이 기하급수적으로 떨어지고 말 개발자는 그것을 실행하지 않은 훨씬 느리게 우리의 지속적인 통합 구축.

우리는 또한 구성 가능한 시간 제한 제한을 설정하면 5 초--아무것도 오래 걸리는 것입니다 실패입니다.

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