ฉันกำลังทำงานกับเครื่องมือเปรียบเทียบรายการเพื่อช่วยในการจัดเรียงรายการผลการค้นหาที่ไม่เรียงลำดับตามข้อกำหนดเฉพาะจากลูกค้าของเรา ข้อกำหนดเรียกร้องให้อัลกอริทึมความเกี่ยวข้องจัดอันดับด้วยกฎต่อไปนี้ตามลำดับความสำคัญ:
- ตรงกับชื่อ
- คำค้นหาทั้งหมดในชื่อหรือคำพ้องความหมายของผลลัพธ์
- คำค้นหาบางคำในชื่อหรือคำพ้องความหมายของผลลัพธ์ (% จากมากไปหาน้อย)
- คำทั้งหมดของคำค้นหาในคำอธิบาย
- คำบางส่วนของคำค้นหาในคำอธิบาย (% มากไปหาน้อย)
- วันที่แก้ไขล่าสุดจากมากไปน้อย
ตัวเลือกการออกแบบตามธรรมชาติสำหรับตัวเปรียบเทียบนี้ดูเหมือนจะเป็นอันดับที่จัดอันดับขึ้นอยู่กับพลังของ 2 ผลรวมของกฎที่สำคัญน้อยกว่านั้นไม่สามารถเป็นได้มากกว่าการจับคู่เชิงบวกกับกฎที่มีความสำคัญสูงกว่า นี่คือความสำเร็จโดยคะแนนต่อไปนี้:
- 32
- 16
- 8 (คะแนน tie-breaker รองตาม% จากมากไปน้อย)
- 4
- 2 (คะแนน tie-breaker รองตาม% จากมากไปน้อย)
- 1
ในจิตวิญญาณ TDD ฉันตัดสินใจเริ่มต้นด้วยการทดสอบหน่วยของฉันก่อน ในการมีกรณีทดสอบสำหรับแต่ละสถานการณ์ที่ไม่ซ้ำกันจะต้องมีอย่างน้อย 63 กรณีทดสอบที่ไม่ซ้ำกันโดยไม่พิจารณากรณีทดสอบเพิ่มเติมสำหรับตรรกะตัวแบ่งลำดับที่สองในกฎข้อที่ 3 และ 5 ซึ่งดูเหมือนจะเป็นเรื่องที่น่ากลัว
การทดสอบจริงจะน้อยลง ตามกฎจริงเองกฎบางอย่างทำให้มั่นใจได้ว่ากฎที่ต่ำกว่าจะเป็นจริงเสมอ (เช่นเมื่อ 'คำค้นหาทั้งหมดปรากฏในคำอธิบาย' จากนั้นกฎ 'คำค้นหาคำบางคำที่ปรากฏในคำอธิบาย' จะเป็นจริงเสมอ) ยังคงมีระดับความพยายามในการเขียนแต่ละกรณีทดสอบเหล่านี้คุ้มค่าหรือไม่ นี่เป็นระดับของการทดสอบที่มักจะถูกเรียกเมื่อพูดถึงการครอบคลุมการทดสอบ 100% ใน TDD หรือไม่? ถ้าไม่เช่นนั้นกลยุทธ์การทดสอบทางเลือกที่ยอมรับจะเป็นอย่างไร