ฉันชอบการทดสอบแบบสุ่มและฉันก็เขียนมัน อย่างไรก็ตามไม่ว่าพวกเขาจะมีความเหมาะสมในสภาพแวดล้อมการสร้างที่เฉพาะเจาะจงและห้องทดสอบใดที่พวกเขาควรจะรวมอยู่ในคำถามที่เหมาะสมยิ่งขึ้น
เรียกใช้การทดสอบในพื้นที่ (เช่นข้ามคืนบนกล่อง dev ของคุณ) พบข้อบกพร่องทั้งที่ชัดเจนและไม่ชัดเจน สิ่งที่คลุมเครือนั้นมีความลึกลับมากพอที่ฉันคิดว่าการทดสอบแบบสุ่มเป็นสิ่งที่เหมือนจริงเพียงอย่างเดียวที่จะกำจัดพวกมันออกไป จากการทดสอบฉันใช้ข้อผิดพลาดที่ยากต่อการค้นพบผ่านการทดสอบแบบสุ่มและให้นักพัฒนาถอดรหัสครึ่งโหลทบทวนฟังก์ชั่น (ประมาณหนึ่งโหลบรรทัดของโค้ด) ที่เกิดขึ้น ไม่มีใครสามารถตรวจจับได้
ข้อโต้แย้งหลายข้อของคุณที่มีต่อข้อมูลที่สุ่มนั้นเป็นรสชาติของ "การทดสอบที่ไม่สามารถทำซ้ำได้" อย่างไรก็ตามการทดสอบแบบสุ่มเขียนดีจะจับเมล็ดที่ใช้ในการเริ่มต้นเมล็ดแบบสุ่มและส่งออกเมื่อล้มเหลว นอกเหนือจากการอนุญาตให้คุณทำแบบทดสอบซ้ำด้วยมือสิ่งนี้จะช่วยให้คุณสร้างการทดสอบแบบใหม่ซึ่งทดสอบปัญหาเฉพาะโดยการเข้ารหัสฮาร์ดโค้ดสำหรับการทดสอบนั้น แน่นอนว่ามันอาจจะดีกว่าที่จะเขียนรหัสการทดสอบอย่างชัดเจนที่ครอบคลุมกรณีนั้น แต่ความเกียจคร้านมีคุณธรรมและนี่ยังช่วยให้คุณสามารถสร้างกรณีทดสอบใหม่โดยอัตโนมัติจากเมล็ดที่ล้มเหลว
ประเด็นหนึ่งที่คุณทำให้ฉันไม่สามารถโต้เถียงได้คือมันทำลายระบบการสร้าง การทดสอบการสร้างและการรวมอย่างต่อเนื่องส่วนใหญ่คาดว่าการทดสอบจะทำสิ่งเดียวกันทุกครั้ง ดังนั้นการทดสอบที่ล้มเหลวแบบสุ่มจะสร้างความสับสนวุ่นวายสุ่มล้มเหลวและชี้นิ้วมือไปที่การเปลี่ยนแปลงที่ไม่เป็นอันตราย
วิธีการแก้ปัญหาคือยังคงใช้การทดสอบแบบสุ่มของคุณเป็นส่วนหนึ่งของการสร้างและการทดสอบ CI แต่ใช้กับเมล็ดคงที่สำหรับการวนซ้ำคงที่ ดังนั้นการทดสอบจะทำสิ่งเดียวกันเสมอ แต่ยังคงสำรวจพื้นที่อินพุตจำนวนมาก (ถ้าคุณเรียกใช้สำหรับการวนซ้ำหลายรอบ)
ในพื้นที่เช่นเมื่อเปลี่ยนคลาสที่เกี่ยวข้องคุณมีอิสระในการรันเพื่อทำซ้ำได้มากขึ้นหรือใช้กับเมล็ดอื่น หากการทดสอบแบบสุ่มกลายเป็นที่นิยมมากขึ้นคุณอาจจินตนาการถึงชุดการทดสอบเฉพาะที่ทราบกันว่าเป็นแบบสุ่มซึ่งสามารถทำงานกับเมล็ดที่แตกต่างกันได้ ในฐานะที่เป็นระบบ CI ที่กำหนดขึ้นเอง (กล่าวคือการรันไม่ได้เชื่อมโยงกับ 1: 1 กับการเปลี่ยนแปลงโค้ดดังนั้นคุณจึงไม่ต้องใช้นิ้วชี้ไปที่การเปลี่ยนแปลงเฉพาะเมื่อสิ่งต่าง ๆ ล้มเหลว)
มีหลายสิ่งที่ต้องบอกว่าสำหรับการทดสอบแบบสุ่มโดยเฉพาะอย่างยิ่งข้อเขียนที่เขียนได้ดีดังนั้นอย่าเร็วเกินไปที่จะยกเลิก!