Selama beberapa minggu terakhir saya telah merenungkan dan meneliti bagaimana mengisi celah dalam metodologi pengujian kami. Secara sederhana tes unit terlalu kecil dan tes integrasi tradisional terlalu besar.
Skenario yang sering muncul di mana Adan Bkeduanya menggunakan komponen C. Namun Adan Bmemiliki persyaratan yang sedikit berbeda untuk, dan membuat asumsi yang sedikit berbeda C. Jika saya adalah pengembang tentang Abagaimana dan di mana saya menguji asumsi saya C?
Jelas pengujian unit Adengan asumsi yang diejek tentang Citu baik untuk pengujian Asecara terpisah, tetapi itu tidak menguji asumsi itu sendiri.
Kemungkinan lain adalah menambahkan unit test untuk C. Namun ini tidak ideal karena, sementara Adalam pengembangan, mengubah tes Cdengan asumsi yang berkembang dari Aakan terlalu canggung. Memang Apengembang bahkan mungkin tidak memiliki akses yang memadai ke tes unit C(misalnya perpustakaan eksternal).
Untuk membingkai ini dengan contoh yang lebih konkret: Asumsikan bahwa ini adalah aplikasi simpul. A, dan Bbergantung pada Cuntuk membaca file (antara lain) dan menyimpan konten file dalam objek yang diteruskan C. Pada awalnya semua file yang Cmenangani berukuran kecil dan dapat dibaca secara serempak tanpa pemblokiran yang signifikan. Namun pengembang Bmenyadari bahwa file-nya semakin besar dan perlu beralih Cke async read. Ini menghasilkan bug sinkronisasi sporadis A, yang masih berasumsi Csedang membaca file secara sinkron.
Ini adalah jenis bug yang terkenal sulit dilacak dari tes integrasi penuh, dan mungkin tidak terperangkap dalam tes integrasi sama sekali. Ini juga tidak ditangkap oleh Aunit test karena Aasumsi itu diejek. Namun itu bisa dengan mudah ditangkap oleh tes integrasi "mini" yang latihan adil Adan C.
Saya hanya menemukan beberapa referensi untuk jenis pengujian ini. Integrasi dalam Kecil , Komponen Integrasi Pengujian , Satuan Integrasi Testing. Ini juga berhubungan dengan arah pengujian BDD daripada pengujian unit TDD formal.
Bagaimana cara saya mengisi celah pengujian ini? Khususnya - di mana saya bisa melakukan tes semacam itu? Bagaimana cara mengejek input Adan Cuntuk tes integrasi "mini"? Dan berapa banyak upaya yang harus dilakukan untuk memisahkan masalah pengujian antara tes ini dan tes unit? Atau ada cara yang lebih baik untuk mengisi celah pengujian?