Saya sedang menulis beberapa kode uji untuk fitur yang memproses file PDF. Ide dasar di balik tes ini adalah saya mengarahkan mereka ke beberapa PDF yang saya pilih secara khusus, mereka memprosesnya dan saya memeriksa apakah hasilnya sesuai dengan yang saya harapkan.
Pertanyaan saya adalah: di mana saya harus menyimpan file PDF besar ini? Haruskah saya memeriksanya ke dalam kontrol versi bersama dengan kode? Atau menempatkannya di tempat lain? Jelas, kode uji tidak berguna tanpa PDF (atau bahkan dengan PDF berbeda) tetapi tetap saja, memasukkannya ke dalam repositori kami terasa salah.
testing
version-control
data
Sapu tangan
sumber
sumber
Tests != Test Data
Jawaban:
Sistem kontrol versi Anda harus berisi semua yang dibutuhkan untuk membangun, mengkompilasi, menguji , dan mengemas aplikasi untuk distribusi (mis. MSI, RPM). Saya juga berpendapat konfigurasi build dan skrip lain juga harus dalam kontrol versi.
Saya harus dapat memeriksa proyek dan memiliki lingkungan kompilasi, pembangunan, dan pengujian yang lengkap.
Ada dua pendekatan untuk memeriksa data uji. Pertama, Anda dapat memeriksa data tes itu sendiri (PDF dalam hal ini). Kedua, Anda dapat memeriksa data sumber yang dapat digunakan untuk menghasilkan data uji (jika berlaku). Ini bisa berupa skrip SQL yang dimuat ke basis data kosong yang berisi data uji, atau mungkin file berbasis teks yang dapat dikompilasi ke dalam PDF atau file lain.
Orang lain mungkin tidak setuju dengan memeriksa semuanya ke dalam kontrol versi, tetapi saya telah menemukan dalam pengalaman profesional saya sangat penting untuk memastikan lingkungan yang lengkap dapat dibangun kembali dari awal.
sumber
Jika tes tidak berguna tanpa file setup yang telah Anda siapkan, maka masuk akal untuk memasukkan file dalam VCS Anda bersama dengan kode tes.
Meskipun file yang digunakan dalam tes ini bukan kode, Anda dapat melihatnya sebagai ketergantungan yang bergantung pada kode. Jadi ada manfaat dalam menyatukan semuanya.
Sebagai tandingan, beberapa VCS tidak menangani file biner besar dengan baik, dan yang lain memiliki oposisi yang kuat untuk memasukkan segala jenis file biner dalam VCS. Jika salah satu dari kasus-kasus itu berlaku untuk Anda, maka menyimpan file uji di lokasi yang terkenal yang mudah diakses juga masuk akal.
Saya juga akan mempertimbangkan untuk memberikan komentar dalam kode tes yang mengatakan "bergantung pada
foo.pdf
untuk menjalankan semua tes."sumber
Jika itu data statis, maka ya letakkan di kontrol versi. File-file itu tidak akan benar-benar berubah begitu mereka masuk; mereka akan dihapus jika fungsi itu tidak lagi diperlukan, atau file uji baru akan ditambahkan bersama. Either way, Anda tidak perlu khawatir tentang diff biner miskin mengambil ruang.
Jika Anda menghasilkan data uji, mis. secara acak, maka Anda harus menyimpannya secara otomatis ketika tes gagal, tetapi buanglah sebaliknya. Setiap data yang disimpan dengan cara ini harus diubah menjadi tes regresi reguler, sehingga kasus tepi tersebut pasti diuji di masa depan daripada mengandalkan keberuntungan undian.
sumber
Sertakan data itu dengan tes Anda dan kode aplikasi utama Anda. Ini membantu untuk memiliki test suite yang terorganisir dengan sangat baik - jadi jika Anda menguji ekstraksi pdf (dan Anda memiliki kode yang dienkapsulasi dengan baik) maka Anda harus dapat membangun jalur ke data pengujian Anda, berdasarkan jalur ke kode aplikasi - Itu selalu berhasil untukku.
Dengan git, Anda dapat mengatur .gitignore untuk mencegah keluaran sementara atau pengujian logging dari mencemari repo Anda.
sumber