ฉันเคยมีประสบการณ์เล็กน้อยเกี่ยวกับการทดสอบหน่วยมาก่อนในสิ่งที่ฉันเรียกว่า (ไม่ใช่ดูถูก) โครงการวิศวกรรมซอฟต์แวร์แบบคลาสสิก: MVC ที่มี GUI ผู้ใช้ฐานข้อมูลตรรกะทางธุรกิจในชั้นกลางเป็นต้นตอนนี้ฉันก็เลย m กำลังเขียนไลบรารี่การคำนวณทางวิทยาศาสตร์ใน C # (ใช่ฉันรู้ว่า C # ช้าเกินไปใช้ C ไม่ต้องพลิกโฉมวงล้อและทั้งหมดนั้น แต่เรามีคนจำนวนมากที่ทำการคำนวณทางวิทยาศาสตร์ในคณะของฉันใน C # และเราต้องการมัน) มันเป็นโครงการขนาดเล็กในแง่ของอุตสาหกรรมการพัฒนาซอฟต์แวร์เพราะฉันเขียนด้วยตัวเองเป็นส่วนใหญ่และเป็นครั้งคราวด้วยความช่วยเหลือจากเพื่อนร่วมงานไม่กี่คน นอกจากนี้ฉันไม่ได้รับเงินและที่สำคัญที่สุดคือโครงการทางวิชาการ ฉันหมายถึงฉันคาดหวังว่ามันจะมีคุณภาพระดับมืออาชีพสักวันเพราะฉันวางแผนที่จะเปิดแหล่งที่มา
อย่างไรก็ตามโครงการกำลังใหญ่ขึ้น (มีรหัสประมาณ 18,000 บรรทัดซึ่งฉันคิดว่าใหญ่สำหรับโครงการของชายคนหนึ่ง) และมันก็หลุดออกจากมือฉันแล้ว ฉันใช้ git เพื่อควบคุมแหล่งข้อมูลและฉันคิดว่าฉันทำได้ดี แต่ฉันกำลังทดสอบเหมือนโรงเรียนเก่าฉันหมายถึงการเขียนแอปพลิเคชั่นคอนโซลแบบเต็มรูปแบบที่ทดสอบส่วนใหญ่ของระบบส่วนใหญ่เป็นเพราะฉันไม่รู้ ทำการทดสอบหน่วยในสถานการณ์นี้แม้ว่าฉันรู้สึกว่าเป็นสิ่งที่ฉันควรทำ ปัญหาคือห้องสมุดมีอัลกอริธึมเป็นส่วนใหญ่เช่นอัลกอริธึมกราฟตัวแยกประเภทตัวแก้ตัวเลขการแจกแจงแบบสุ่ม ฯลฯ ฉันไม่ทราบวิธีระบุกรณีทดสอบเล็ก ๆ สำหรับอัลกอริธึมเหล่านี้ สุ่มฉันไม่รู้วิธีตรวจสอบความถูกต้อง ตัวอย่างเช่นสำหรับการจำแนกประเภทมีตัวชี้วัดบางอย่างเช่นความแม่นยำและการเรียกคืน แต่ตัวชี้วัดเหล่านี้ดีกว่าสำหรับการเปรียบเทียบอัลกอริธึมสองกว่าการตัดสินอัลกอริธึมเดียว ดังนั้นฉันจะกำหนดความถูกต้องได้อย่างไรที่นี่
ในที่สุดก็มีปัญหาประสิทธิภาพการทำงาน ฉันรู้ว่ามันเป็นชุดทดสอบที่แตกต่างกันโดยสิ้นเชิง แต่ประสิทธิภาพเป็นหนึ่งในคุณสมบัติที่สำคัญของเครื่องมือทางวิทยาศาสตร์มากกว่าความพึงพอใจของผู้ใช้หรือการวัดทางวิศวกรรมซอฟต์แวร์อื่น ๆ
หนึ่งในปัญหาที่ใหญ่ที่สุดของฉันคือโครงสร้างข้อมูล การทดสอบเดียวที่ฉันสามารถทำได้สำหรับต้นไม้ kd คือการทดสอบความเครียด: แทรกเวกเตอร์สุ่มจำนวนมากแล้วทำการค้นหาแบบสุ่มจำนวนมากและเปรียบเทียบกับการค้นหาเชิงเส้นที่ไร้เดียงสา ประสิทธิภาพเดียวกัน และด้วยเครื่องมือเพิ่มประสิทธิภาพตัวเลขฉันมีฟังก์ชั่นมาตรฐานซึ่งฉันสามารถทดสอบได้ แต่จากนั้นอีกครั้งนี่คือการทดสอบความเครียด ฉันไม่คิดว่าการทดสอบเหล่านี้สามารถจัดเป็นการทดสอบหน่วยและที่สำคัญที่สุดทำงานอย่างต่อเนื่องเนื่องจากส่วนใหญ่ค่อนข้างหนัก แต่ฉันก็คิดว่าการทดสอบเหล่านี้ต้องทำฉันไม่สามารถแทรกสององค์ประกอบป๊อปรูทและใช่มันใช้ได้กับกรณี 0-1-n
ดังนั้นถ้ามีจะมีวิธีทดสอบ (หน่วย) สำหรับซอฟต์แวร์ประเภทนี้หรือไม่ และฉันจะจัดระเบียบการทดสอบหน่วยและวิธีที่หนักหน่วงรอบวงจรการสร้างรหัสคอมมิชชันได้อย่างไร