Bagaimana cara menguji perangkat lunak yang membakar CD tanpa membuang-buang CD?

16

Saya ingin menulis aplikasi yang dapat digunakan untuk membakar CD (musik). Saya tahu saya harus mengujinya dengan CD asli, tetapi saya tidak ingin melakukan ini setiap kali saya melakukan perubahan kecil. Tapi saya ingin tahu dan menguji apakah data yang tepat akan dibakar, sehingga Anda tidak mendapatkan CD yang rusak.

Saya menggunakan perpustakaan yang hanya mengekspos API untuk langsung dibakar ke drive fisik; itu tidak memungkinkan Anda untuk menulis ke disk image (yang akan lebih mudah untuk diuji).

Bagaimana saya bisa menguji ini tanpa membuang-buang CD dan waktu untuk setiap perubahan / beberapa perubahan yang saya buat?

sayap kanan
sumber
5
Apakah mungkin untuk beralih ke perpustakaan yang tidak memungkinkan Anda untuk menulis gambar disk?
FrustratedWithFormsDesigner

Jawaban:

29

Jawaban sederhana seringkali merupakan yang terbaik: CD yang bisa ditulis ulang?

Juga untuk menghemat waktu, tulis file yang relatif kecil. Hanya lakukan file yang lebih besar setiap begitu sering.

Kevin D
sumber
1
Saya setuju ini adalah jawaban yang sederhana dan bagus, tetapi jika WTP ingin mengambil pengujian ke tingkat lain, mengejek API (lihat jawaban lain untuk pertanyaan ini) akan membuka kunci seluruh dimensi kemungkinan pengujian (seperti dalam, otomatis).
louisgab
@louisgab Saya sangat setuju dengan Anda, ketika saya menulis jawaban saya hanya benar-benar membahas tentang membuang-buang CD. Saya sepenuhnya mengharapkan jawaban lain untuk menghasilkan sesuatu yang lebih baik (dan mereka punya). Jika ada, saya akan merekomendasikan pendekatan mengejek, dan menyarankan jawaban saya hanya ketika WTP benar-benar ingin menguji secara fisik proses pembakaran.
Kevin D
19

Jika Anda menggunakan linux, Anda harus dapat mengatur "perangkat cd" yang hanya bernama pipa. Api Anda menulis ke "perangkat" dan Anda menghubungkan ujung yang lain ke sebuah program yang memungkinkan Anda melihat apa yang dilakukannya / mengubahnya menjadi gambar disk. Banyak sekali pilihan di sana. Lihat artikel ini untuk info tentang pipa bernama.

Jawaban Kevin adalah IMO yang jauh lebih mudah.

Spencer Rathbun
sumber
2
Saya sebenarnya menggunakan Mac OS X yang juga merupakan sistem UNIX. Saya akan coba ini.
sayap kanan
6

Tulis sebanyak mungkin tes yang menggunakan tiruan API perpustakaan. Ini memungkinkan Anda untuk menguji kode Anda dalam satuan. Ini menunjukkan bahwa kode Anda bekerja dengan sendirinya dengan asumsi perpustakaan melakukan seperti yang seharusnya.

Pada titik tertentu, Anda perlu melakukan pengujian integrasi yang benar-benar menggunakan pustaka. Tetapi intinya adalah bahwa Anda sudah memiliki tingkat kepercayaan dengan kode Anda sendiri sebelum Anda sampai ke titik ini. Tes integrasi sering membutuhkan lebih banyak waktu dan sumber daya, seperti yang Anda lihat. Jadi pengujian unit menyeluruh memungkinkan Anda untuk tidak bergantung sepenuhnya pada pengujian integrasi.

unholysampler
sumber
3

Pengujian apa yang sebenarnya Anda bicarakan?

Membaca "Saya tidak ingin melakukan ini setiap kali saya membuat perubahan kecil" dalam pertanyaan Anda, saya membayangkan Anda berbicara tentang pengujian unit .

Tapi nanti, Anda menambahkan bahwa Anda menggunakan API yang bertugas membakar data ke CD. Jika API ini diuji dan didokumentasikan dengan benar, Anda tidak harus berurusan dengan proses aktual pembakaran data ke CD, dan Anda tidak harus mengujinya. Dalam hal ini, Anda berurusan dengan pengujian integrasi , yang tidak harus Anda lakukan "setiap kali [Anda] melakukan perubahan kecil" .

Arseni Mourzenko
sumber
Tapi saya perlu tahu apakah saya menggunakan API dengan benar.
sayap kanan
@TP: lihat edit saya. Juga, API yang ditulis dengan benar tidak akan memungkinkan Anda untuk membuat CD yang rusak dengan menggunakannya secara salah. Jika melakukan hal-hal semacam ini, Anda mungkin harus mencari API lain terlebih dahulu. API hadir untuk memberikan abstraksi dan terutama untuk menghindari cara-cara menghindari korupsi saat menyimpan data ke CD.
Arseni Mourzenko
Anda ada benarnya di sana. API didokumentasikan dengan sangat baik.
sayap kanan
1

WTP,

Karena Anda ingin menguji perangkat lunak Anda (bukan API, atau perekam), seperti yang ditunjukkan Chris, tiruan dari API akan diperlukan.
Untuk pengujian integrasi, perekam "ISO" yang andal harus memungkinkan Anda mengotomatiskan pengujian konten CD dengan menganalisis file .iso.
Sebenarnya membakar CD atau DVD tidak akan memberikan hasil konklusif, karena Anda tidak akan dapat menentukan apakah penyebab kesalahan adalah CD yang rusak, perekam yang cacat atau bug perangkat lunak, kecuali jika Anda ingin melakukan statistik kualitas dengan merekam beberapa salinan dari disk yang sama (yang tampaknya Anda tidak).
Semoga berhasil!

Jerónimo Vargas
sumber