고객의 매우 구체적인 요구 사항에 따라 정렬되지 않은 검색 결과 목록을 정렬하는 데 도움이되는 목록 비교기를 작성하고 있습니다. 요구 사항은 다음 순서에 따라 순위 관련 알고리즘을 중요도 순서로 요구합니다.
- 이름과 정확히 일치
- 검색어의 모든 단어 이름 또는 결과의 동의어
- 검색어 이름 또는 결과의 동의어 (% 내림차순)
- 설명에있는 검색어의 모든 단어
- 설명에서 검색어의 일부 단어 (% 내림차순)
- 마지막 수정 날짜 내림차순
이 비교기의 자연스러운 디자인 선택은 2의 거듭 제곱에 따라 점수가 매겨진 순위 인 것처럼 보였습니다. 중요도가 낮은 규칙의 합은 중요도가 높은 규칙에 대한 긍정적 인 일치 이상이 될 수 없습니다. 이것은 다음 점수에 의해 달성됩니다.
- 32
- 16
- 8 (내림차순 %에 따른 2 차 타이 브레이커 점수)
- 4
- 2 (내림차순 %에 따른 2 차 타이 브레이커 점수)
- 1
TDD 정신에서 나는 먼저 단위 테스트부터 시작하기로 결정했습니다. 각 고유 시나리오에 대한 테스트 케이스를 갖는 것은 규칙 3 및 5의 2 차 타이 브레이커 로직에 대한 추가 테스트 케이스를 고려하지 않는 최소 63 개의 고유 테스트 케이스입니다.
실제 테스트는 실제로 적습니다. 실제 규칙 자체에 따라 특정 규칙은 하위 규칙이 항상 참임을 보장합니다 (예 : '모든 검색어 단어가 설명에 나타나는 경우'규칙 '일부 검색어 단어가 설명에 나타나는 경우'규칙은 항상 참임). 이러한 각 테스트 사례를 작성하는 데 여전히 노력의 수준이 있습니까? 이것이 TDD에서 약 100 % 테스트 범위를 말할 때 일반적으로 요구되는 테스트 레벨입니까? 그렇지 않은 경우 수용 가능한 대체 테스트 전략은 무엇입니까?