มีกรอบการทดสอบสำหรับการพัฒนาซอฟต์แวร์เชิงตัวเลขหรือไม่
ฉันพบว่าการเขียนโปรแกรมวิทยาศาสตร์ทางคอมพิวเตอร์ของฉันจำนวนมากมีข้อกำหนดการทดสอบที่ไม่ครอบคลุมโดยกรอบการทดสอบมาตรฐาน: การทดสอบเวลาคำนวณ เพื่อให้แน่ใจว่าอัลกอริทึมจะไม่ช้าลง ฉันสามารถทำสิ่งต่าง ๆ ได้เช่นกัน assureSmallerEqual(RuntimeWrapper(algorithm),53)แต่ฉันต้องการลดขีด จำกัด 53 วินาทีอย่างต่อเนื่องเนื่องจากฉันกำลังทำงานกับอัลกอริทึมassureSmallerEqual(RuntimeWrapper(algorithm),'previousbest+noisetolerance') การทดสอบประสิทธิภาพ เพื่อให้แน่ใจว่าอัลกอริทึมที่ก่อนหน้านี้พบว่าการประมาณค่าที่ดีสำหรับโซลูชันการวิเคราะห์ยังคงหาวิธีการแก้ปัญหาที่อย่างน้อยดีหรือดีกว่า อีกครั้งนี่อาจเป็นแบบจำลองโดยการทดสอบการรวมมาตรฐาน แต่ฉันต้องการความอดทนที่จะลดขนาดลงอย่างต่อเนื่องเนื่องจากอัลกอริทึมดีขึ้นและดีขึ้น คิดว่าการแทนที่assureAlmostEqual(foo(),1,places=3)โดยassureAlmostEqual(foo(),1,places='previousbest') การทดสอบข้อกำหนดทางกายภาพ เพื่อให้แน่ใจว่าอัลกอริธึมไม่ต้องการหน่วยความจำ / พื้นที่ฮาร์ดดิสก์เพิ่มเติม คล้ายกันมากกับ 1 การทดสอบความต้องการที่เป็นนามธรรม เพื่อให้แน่ใจว่าอัลกอริทึมที่ทำงานได้ดีกับการประมาณกำลังสองไม่จำเป็นต้องใช้การประมาณแบบลูกบาศก์หรืออัลกอริทึมที่ทำงานได้ดีในขั้นตอนที่ 0.1 ไม่จำเป็นต้องมีเสถียรภาพ 0.01 ในทันที อีกครั้งสิ่งเหล่านี้อาจถูกจำลองโดยการทดสอบการรวมมาตรฐาน แต่เป้าหมายคือการจำว่าพารามิเตอร์ความต้องการที่เล็กที่สุดนั้นบรรลุเป้าหมายที่แน่นอนดังนั้นสิ่งนี้จะต้องมีการอัปเดตด้วยตนเองจำนวนมาก ตัวอย่างเช่นหากfoo(10)ก่อนหน้านี้ไม่มีข้อยกเว้นฉันต้องการให้เฟรมเวิร์กตรวจสอบว่าfoo(10)ยังใช้งานได้และลองfoo(9)ตอนนี้ใช้งานได้ (ในกรณีนี้การทดสอบในอนาคตทั้งหมดจะfoo(9)ยังคงใช้ได้) หนึ่งอาจโต้แย้งว่าสิ่งที่ฉันขอไม่ได้อธิบายการทดสอบในแง่ของการทดสอบหน่วย / บูรณาการตั้งแต่ runtimes ที่เพิ่มขึ้นเช่นอาจเป็นที่ยอมรับในทางกลับกันสำหรับการปรับปรุงอื่น ๆ อย่างไรก็ตามในทางปฏิบัติฉันรู้ว่าฉันจะประหยัดเวลาในการดีบักได้มากถ้าฉันมีฟังก์ชั่นการทดสอบด้านบนเพราะใน 95% ของข้อกำหนดกรณีและประสิทธิภาพลดลงเพราะข้อผิดพลาดที่ฉันแนะนำ แน่นอนฉันรู้ว่ามีข้อบกพร่องมากมายที่ฉันพบ (หลังจากเสียเวลามากในการตรวจสอบรหัสของฉัน) ด้วยห้องสมุดซอฟต์แวร์เชิงตัวเลขภายนอกสามารถหลีกเลี่ยงได้เล็กน้อยหากการทดสอบข้างต้นถูกนำไปใช้อย่างจริงจัง PS คำถามที่มีชื่อคล้ายกัน/programming/34982863/framework-for-regression-testing-of-numerical-codeไม่ซ้ำกันเนื่องจากอธิบายการทำงานที่ทำได้ง่ายขึ้นด้วยกรอบการทดสอบการถดถอยมาตรฐาน คำถามกลยุทธ์สำหรับการทดสอบหน่วยและการพัฒนาขับเคลื่อนทดสอบขอกลยุทธ์เมื่อเทียบกับกรอบที่ช่วยในการดำเนินการพวกเขา (และกลยุทธ์ที่ขอ / ที่ให้ไว้ในคำตอบนั้นแตกต่างจากสิ่งที่ฉันอธิบายที่นี่ในความคิดของฉัน)