Kami sedang mengerjakan proyek PHP / MySQL sedang / besar. Kami sedang melakukan pengujian unit dengan PHPUnit & QUnit dan kami memiliki dua penguji penuh waktu yang secara manual menguji aplikasi. Data pengujian (tiruan) kami saat ini dibuat dengan skrip SQL.
Kami memiliki masalah dengan memelihara skrip untuk data pengujian. Logika bisnis cukup kompleks dan satu perubahan "sederhana" dalam data uji sering menghasilkan beberapa bug dalam aplikasi (yang bukan bug nyata, hanya produk dari data yang tidak valid). Ini telah menjadi beban besar bagi seluruh tim karena kami terus membuat dan mengubah tabel.
Saya tidak benar-benar melihat titik mempertahankan data uji dalam skrip karena semuanya dapat ditambahkan secara manual dalam aplikasi dalam waktu sekitar 5 menit dengan UI. PM kami tidak setuju dan mengatakan bahwa memiliki proyek yang tidak dapat kami gunakan dengan data uji adalah praktik yang buruk.
Haruskah kita meninggalkan pemeliharaan skrip dengan data uji dan biarkan penguji untuk menguji aplikasi tanpa data? Apa praktik terbaik?
sumber
Ya, memiliki unit test dan mock-up data adalah praktik terbaik. Manajer proyek sudah benar. Karena melakukan perubahan "sederhana" dalam data pengujian sering menghasilkan bug, maka itulah inti masalahnya.
Kode perlu diperbaiki. Tidak melakukannya (mengatakan hei kita tidak perlu tes) bukan perbaikan, itu hanya menambah hutang teknis . Memecah kode menjadi beberapa unit yang lebih kecil yang bisa diuji karena tidak dapat mengidentifikasi unit tanpa kerusakan adalah masalah.
Mulai lakukan refactor. Pertahankan perbaikan yang kecil agar dapat dikelola. Cari anti-pola seperti kelas / metode Dewa, tidak mengikuti KERING, tanggung jawab tunggal, dll ...
Akhirnya, lihat ke TDD untuk melihat apakah itu bekerja untuk tim. TDD bekerja dengan baik untuk memastikan semua kode Anda dapat diuji (karena Anda menulis tes terlebih dahulu) dan juga memastikan Anda tetap ramping dengan menulis kode yang cukup untuk lulus tes (meminimalkan lebih dari rekayasa).
Secara umum, jika serangkaian proses logika bisnis yang kompleks menghasilkan satu set data, maka saya melihatnya sebagai laporan. Enkapsulasi laporan. Jalankan laporan dan gunakan objek yang dihasilkan sebagai input untuk tes berikutnya.
sumber
Ini adalah masalah yang sangat umum dan juga sangat sulit. Tes otomatis yang dijalankan terhadap databse (bahkan basis data dalam memori, seperti HSQLDB ) biasanya lambat, tidak deterministik dan, karena kegagalan tes hanya menunjukkan bahwa ada masalah di suatu tempat dalam kode Anda atau dalam data Anda, mereka tidak banyak informatif.
Dalam pengalaman saya, strategi terbaik adalah fokus pada unit test untuk logika bisnis. Cobalah untuk mencakup sebanyak mungkin kode domain inti Anda. Jika Anda mendapatkan bagian ini dengan benar, yang merupakan tantangan tersendiri, Anda akan mencapai hubungan biaya-manfaat terbaik untuk pengujian otomatis. Adapun lapisan ketekunan, saya biasanya berinvestasi jauh lebih sedikit pada tes otomatis dan menyerahkannya kepada penguji manual yang berdedikasi.
Tetapi jika Anda benar-benar ingin (atau perlu) mengotomatiskan tes kegigihan, saya akan merekomendasikan Anda untuk membaca Growing Object-Oriented Software, Dipandu oleh Tes . Buku ini memiliki seluruh bab yang didedikasikan untuk tes kegigihan.
sumber