2011-03-28 3 views
2

웹 응용 프로그램을 구동하고 데이터의 특정 조합을 기반으로 결과를 확인하기 위해 Perl의 WWW :: Mechanize를 사용하는 복잡한 통합 테스트 세트가 있습니다. 테스트 로직, 루프 스루 (loop through) 데이터 등을 구성하는 20 개가 넘는 서브 루틴이 있습니다. 각각의 테스트는 여러 데이터 서브 세트에서 몇 가지 테스트 서브 루틴을 실행합니다.해결되지 않는 버그에 대한 실패한 테스트를 어떻게 처리해야합니까?

웹 앱이 완벽하지 않아 버그로 인해 매우 구체적인 데이터 조합으로 테스트가 실패하는 경우가 있습니다. 그러나 이러한 조합은 드물기 때문에 우리 팀은 오랫동안 버그를 수정하지 않아도됩니다. 다른 많은 새로운 기능을 구축하는 것이 우선시됩니다.

그럼 실패한 테스트는 어떻게해야합니까? 데이터 조합 당 수십 가지 테스트 중 일부 테스트에 불과합니다. 1) 전체 테스트 스위트가 실패하기 때문에 실패하지 못하게 할 수 있습니다. 2) 주석으로 처리하면 다른 모든 데이터 세트에 대한 테스트를 수행하지 못합니다. 3) 실패한 특정 데이터 세트에 플래그를 추가 할 수 있으며 해당 플래그가 설정되어 있으면 테스트가 실행되지 않지만 내 테스트 서브 루틴의 모든 곳에서 여분의 플래그가 전달됩니다.

어떻게하면 가장 깨끗하고 쉬운 방법일까요? 깨끗하고 쉽게 상호 배타적입니까?

답변

11

이것이 바로 TODO입니다.

할일 블록을 사용하면 내부 테스트가 실패 할 것으로 예상됩니다. Test :: More는 테스트를 정상적으로 실행하지만 "todo"임을 나타내는 특수 플래그를 출력합니다. Test :: Harness는 오류를 ok로 해석합니다. 성공하면 예상치 못한 성공으로보고합니다. 그런 다음 수행해야 할 작업이 완료되었음을 알고 TODO 플래그를 제거 할 수 있습니다.

단순히 테스트 블록을 주석으로 처리하는 것과 달리 todo 테스트의 멋진 부분은 프로그래밍 방식의 할일 목록을 갖는 것과 같습니다. 얼마나 많은 작업이 남아 있는지, 어떤 버그가 있는지 파악하고 있으며, 수정이 완료되면 바로 알 수 있습니다.

일단 수행 할 테스트가 성공하면 블록 밖으로 간단히 이동하십시오. 블록이 비어 있으면 삭제하십시오.

+0

정확하게 내가 시간을 절약 해 주셔서 감사합니다. RTFM! –

0

나는 아마도 그뿐만 아니라 버그에 메모를 유지, 당신의 버그 추적 시스템에 대한 참조 (예 : 버그 IG)와, (그것을 주석) 두 가지 옵션

  1. 테스트를 해제 볼 수있다 이 버그에 대한 준비가되었습니다.

  2. 별도의 테스트 스위트에서 실패한 테스트를 이동하십시오. 실패한 주장을 뒤집어서 스위트를 실행할 수 있습니다. 버그가 아직 녹색이면 버그가 여전히 남아 있고 빨간색으로 변하면 버그가 사라 졌거나 뭔가 다른 것이 생기게됩니다. 물론 bugtracking 시스템과 가방에 대한 링크는 가지고있는 것이 좋습니다.

0

실제로 WWW :: Mechanize와 함께 사용하면 Case가 닫힙니다 (@daxim의 설명 참조). 그렇지 않다면 비슷한 접근법을 생각해보십시오.

# In your testing module 
our $TODO; 
# ... 
if (defined $TODO) { 
    # only print warnings 
}; 

# in a test script 
local $My::Test::TODO = "This bug is delayed until iteration 42"; 
관련 문제