특정 조치에 대한 최대 실행 시간을 지정하는 비 기능 요구 사항 이있는 프로젝트에서 QA는 요구 사항에 지정된 하드웨어 및로드 모두에서 정확한로드 하에서 정밀한 하드웨어를 사용하여 전용 머신에서이 조치의 성능을 확인해야합니다.
반면에 소스 코드를 잘못 변경하면 성능에 심각한 영향을 줄 수 있습니다. 소스 코드가 소스 제어에 도달하고 QA 부서에서 확인 하기 전에 이러한 부정적인 영향을 조기 에 발견 하면 QA 부서에서 문제를보고하고 개발자가 나중에 여러 커밋을 수정하여 시간을 잃는 데 유리할 수 있습니다.
이렇게하려면 좋은 생각입니까?
단위 테스트를 사용하여 동일한 조치를 실행하는 데 소요 된 시간을 n n 번 이해하려면,
C #의 속성을 통해 테스트 당 시간 초과 를 사용하려면
[TestMethod, Timeout(200)]
?
이 접근법에는 몇 가지 문제가 있습니다.
개념적 으로 단위 테스트는 실제로는 아닙니다. 기능 요구 사항 확인, 통합 테스트 또는 성능 테스트 등 코드의 작은 부분 만 테스트하면됩니다.
Visual Studio의 단위 테스트 시간 초과는 초기화 및 정리가 해당 테스트에 존재하지 않거나 결과에 영향을주기에는 너무 짧다는 점을 고려하여 실제로 측정 할 것으로 예상되는 것을 측정합니까?
이런 식으로 성능을 측정하는 것은 추악합니다. 하드웨어,로드 등과 상관없이 모든 머신에서 벤치 마크를 실행하는 것은 하나의 데이터베이스 제품이 항상 다른 제품보다 빠르다는 벤치 마크 를 수행하는 것과 같습니다 . 다른 한편으로, 나는 그 단위 테스트가 확실한 결과가 될 것이라고 기대하지 않으며 QA 부서에서 사용되는 것입니다 . 이러한 단위 테스트는 예상 성능에 대한 일반적인 아이디어를 제공 하고 본질적 으로 개발자에게 그의 마지막 수정 작업이 성능에 심각한 영향을 미쳤다는 것을 알리기 위해 사용됩니다 .
이러한 테스트에는 TDD (Test Driven Development) 가 불가능합니다. 코드 구현을 시작하기 전에 어떻게 실패합니까?
너무 많은 성능 테스트는 테스트 실행에 필요한 시간에 영향을 미치므로이 방법은 간단한 조치로만 제한됩니다.
이러한 문제를 고려할 때 QA 부서의 실제 성능 지표와 결합 된 경우 이러한 단위 테스트를 사용하는 것이 여전히 흥미 롭습니다.
내가 잘못? 이를 위해 단위 테스트를 사용할 수없는 다른 문제가 있습니까?
내가 틀렸다 면 소스 코드가 소스 제어에 도달하고 QA 부서에서 확인하기 전에 소스 코드의 변경이 성능에 심각하게 영향을 미쳤다는 것을 개발자에게 알리는 올바른 방법은 무엇 입니까?
¹ 실제로, 단위 테스트는 하드웨어 성능이 비슷한 개발자 PC에서만 실행되므로 성능 테스트에 실패 할 수없는 가장 빠른 기계와 통과하지 못한 가장 느린 기계 사이의 간격이 줄어 듭니다.
² 행동으로, 실행하는 데 몇 밀리 초가 걸리는 다소 짧은 코드 조각을 의미합니다.