จะทดสอบซอฟต์แวร์ที่เบิร์นซีดีโดยไม่สิ้นเปลืองซีดีได้อย่างไร?


16

ฉันต้องการเขียนแอปพลิเคชันที่สามารถใช้เขียนแผ่นซีดี (เพลง) ฉันรู้ว่าฉันควรทดสอบด้วยซีดีจริง แต่ฉันไม่ต้องการทำเช่นนี้ทุกครั้งที่ฉันทำการเปลี่ยนแปลงเล็กน้อย แต่ฉันต้องการทราบและทดสอบว่าข้อมูลที่ถูกต้องจะถูกเผาหรือไม่ดังนั้นคุณจะไม่ได้รับซีดีที่เสียหาย

ฉันกำลังใช้ไลบรารีที่เปิดเผย API เท่านั้นให้เขียนไปยังไดรฟ์ทางกายภาพโดยตรง ไม่อนุญาตให้คุณเขียนลงดิสก์อิมเมจ (ซึ่งจะทดสอบได้ง่ายกว่ามาก)

ฉันจะทดสอบสิ่งนี้ได้อย่างไรโดยไม่สิ้นเปลืองซีดีและเวลาในการเปลี่ยนแปลงทุกครั้งที่มีการเปลี่ยนแปลง


5
มันจะเป็นไปได้ที่จะเปลี่ยนไปใช้ห้องสมุดที่ไม่อนุญาตให้คุณเขียนภาพแผ่นดิสก์หรือไม่?
FrustratedWithFormsDesigner

คำตอบ:


29

คำตอบง่ายๆมักจะดีที่สุด: ซีดีที่เขียนซ้ำได้?

นอกจากนี้เพื่อประหยัดเวลาเขียนไฟล์ขนาดค่อนข้างเล็ก ทำไฟล์ขนาดใหญ่ทุก ๆ ครั้งเท่านั้น


1
ฉันเห็นด้วยว่านี่เป็นคำตอบที่ง่ายและดี แต่ถ้า WTP ต้องการทดสอบในอีกระดับการเยาะเย้ย API (ดูคำตอบอื่น ๆ สำหรับคำถามนี้) จะปลดล็อคมิติการทดสอบความเป็นไปได้ทั้งหมด (เช่นอัตโนมัติ)
louisgab

@ louisgab ฉันเห็นด้วยกับคุณโดยสิ้นเชิงเมื่อฉันเขียนคำตอบฉันเป็นเพียงการพูดถึงประเด็นเกี่ยวกับการสูญเสียซีดี ฉันคาดหวังอย่างเต็มที่ว่าจะมีคำตอบให้กับสิ่งที่ดีกว่า (และพวกเขามี) หากมีอะไรฉันอยากจะแนะนำวิธีการเยาะเย้ยและแนะนำคำตอบของฉันเฉพาะเมื่อ WTP ต้องการทดสอบกระบวนการเผาจริง
Kevin D

19

หากคุณอยู่บน linux คุณควรจะสามารถตั้งค่า "อุปกรณ์ซีดี" ที่เป็นเพียงไพพ์ที่มีชื่อ api ของคุณเขียนไปที่ "อุปกรณ์" และคุณเชื่อมโยงส่วนอื่น ๆ เข้ากับโปรแกรมที่ให้คุณดูว่ามันทำอะไร / แปลงเป็นดิสก์อิมเมจ มีตัวเลือกมากมาย ดูบทความนี้ สำหรับข้อมูลเกี่ยวกับไปป์ที่มีชื่อ

คำตอบของ Kevin นั้นง่ายกว่า IMO มาก


2
จริงๆแล้วฉันใช้ Mac OS X ซึ่งเป็นระบบ UNIX ฉันจะลองทำดู
rightfold

6

เขียนการทดสอบให้มากที่สุดเท่าที่จะทำได้โดยใช้การจำลองของ API ของไลบรารี สิ่งนี้ช่วยให้คุณสามารถทดสอบรหัสของคุณในหน่วย นี่แสดงให้เห็นว่าโค้ดของคุณทำงานภายในตัวเองโดยสมมติว่าไลบรารีทำงานตามที่ควรจะเป็น

ในบางจุดคุณจะต้องทำการทดสอบการรวมที่ใช้ไลบรารีจริง ๆ แต่ประเด็นก็คือคุณมีความมั่นใจในระดับของรหัสของคุณเองก่อนที่จะถึงจุดนี้ การทดสอบการรวมมักจะใช้เวลาและทรัพยากรมากขึ้นตามที่คุณเห็น ดังนั้นการทดสอบหน่วยโดยละเอียดจะช่วยให้คุณไม่ต้องพึ่งพาการทดสอบบูรณาการอย่างสมบูรณ์


3

คุณกำลังพูดถึงการทดสอบอะไร

อ่านหนังสือ"ผมไม่ต้องการที่จะทำเช่นนี้ทุกครั้งที่ผมจะทำให้การเปลี่ยนแปลงเล็ก"ในคำถามของคุณฉันคิดว่าคุณกำลังพูดคุยเกี่ยวกับการทดสอบหน่วย

แต่ต่อมาคุณเพิ่มว่าคุณกำลังใช้ API ซึ่งรับผิดชอบการเขียนข้อมูลลงซีดี หาก API นี้ได้รับการทดสอบและจัดทำเอกสารอย่างถูกต้องคุณไม่ต้องจัดการกับกระบวนการที่แท้จริงในการเบิร์นข้อมูลลงในซีดีและคุณไม่จำเป็นต้องทดสอบ ในกรณีนี้คุณจัดการกับการทดสอบการรวมที่คุณไม่ต้องทำ"ทุกครั้งที่ [คุณ] ทำให้การเปลี่ยนแปลงเล็ก"


แต่ฉันต้องรู้ว่าฉันใช้ API อย่างถูกต้องหรือไม่
rightfold

@WTP: ดูการแก้ไขของฉัน นอกจากนี้ API ที่เขียนอย่างถูกต้องจะไม่อนุญาตให้คุณสร้างซีดีที่เสียหายโดยใช้อย่างไม่ถูกต้อง หากทำสิ่งนี้คุณควรค้นหา API อื่นก่อน API อยู่ที่นี่เพื่อให้เป็นนามธรรมและโดยเฉพาะอย่างยิ่งเพื่อหลีกเลี่ยงการจัดการกับวิธีการหลีกเลี่ยงความเสียหายเมื่อบันทึกข้อมูลลงในซีดี
Arseni Mourzenko

คุณมีประเด็นตรงนั้น API นั้นมีเอกสารที่ดีมาก
rightfold

1

เต็มใจที่จะจ่าย

เนื่องจากคุณต้องการทดสอบซอฟต์แวร์ของคุณ (ไม่ใช่ API หรือตัวบันทึก) ตามที่ Chris ชี้ให้เห็นอาจจำเป็นต้องมีการจำลองของ API
สำหรับการทดสอบการรวมระบบเครื่องบันทึก "ISO" ที่เชื่อถือได้ควรอนุญาตให้คุณทำการทดสอบเนื้อหาซีดีโดยอัตโนมัติด้วยการวิเคราะห์ไฟล์. iso
การเบิร์นซีดีหรือดีวีดีจริง ๆ แล้วจะไม่ให้ผลลัพธ์ข้อสรุปเนื่องจากคุณจะไม่สามารถระบุได้ว่าสาเหตุข้อผิดพลาดนั้นเกิดจากซีดีที่มีข้อบกพร่องตัวบันทึกที่มีข้อบกพร่องหรือข้อบกพร่องของซอฟต์แวร์เว้นแต่ว่าคุณต้องการบันทึกสถิติคุณภาพ แผ่นดิสก์เดียวกัน (ซึ่งถ้าคุณไม่เห็น)
โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.