Misalnya, apa artinya dalam kutipan ini?
Mengintegrasikan dengan API eksternal hampir merupakan jaminan di aplikasi web modern mana pun. Untuk menguji integrasi tersebut secara efektif, Anda perlu menghentikannya . Rintisan yang baik harus mudah dibuat dan selalu diperbarui dengan respons API aktual dan terkini. Dalam posting ini, kami akan menjelaskan strategi pengujian menggunakan rintisan untuk API eksternal.
Jawaban:
Stub adalah pengganti yang dapat dikontrol untuk Ketergantungan yang Ada (atau kolaborator) dalam sistem. Dengan menggunakan stub, Anda dapat menguji kode Anda tanpa berurusan dengan dependensi secara langsung.
Ketergantungan Eksternal - Ketergantungan yang Ada:
Ini adalah objek di sistem Anda yang berinteraksi dengan kode Anda dan di mana Anda tidak memiliki kendali. (Contoh umum adalah sistem file, utas, memori, waktu, dan sebagainya.)
Misalnya dalam kode di bawah ini:
Anda ingin menguji metode mailService.SendEMail () , tetapi untuk melakukannya Anda perlu mensimulasikan Exception dalam metode pengujian Anda, jadi Anda hanya perlu membuat objek Fake Stub errorService untuk mensimulasikan hasil yang diinginkan, maka kode pengujian Anda akan menjadi mampu menguji metode mailService.SendEMail () . Seperti yang Anda lihat, Anda perlu mensimulasikan hasil yang berasal dari Dependensi lain yang merupakan objek kelas ErrorService (objek Dependensi yang Ada).
sumber
Sebuah rintisan , dalam konteks ini, berarti implementasi tiruan.
Artinya, implementasi sederhana dan palsu yang sesuai dengan antarmuka dan akan digunakan untuk pengujian.
sumber
Istilah awam, itu dummy data (atau data palsu, data uji ... dll.) Yang dapat Anda gunakan untuk menguji atau mengembangkan kode Anda sampai Anda (atau pihak lain) siap untuk menyajikan / menerima data yang sebenarnya. Ini adalah "Lorem Ipsum" programmer.
Database karyawan belum siap? Buat yang sederhana dengan Jane Doe, John Doe ... dll. API belum siap? Buat yang palsu dengan membuat file .json statis yang berisi data palsu.
sumber
Dalam konteks ini, kata "rintisan" digunakan sebagai pengganti "tiruan", tetapi demi kejelasan dan ketepatan, penulis seharusnya menggunakan "tiruan", karena "tiruan" adalah semacam rintisan, tetapi untuk pengujian. Untuk menghindari kebingungan lebih lanjut, kita perlu mendefinisikan apa itu rintisan.
Dalam konteks umum, rintisan adalah bagian dari program (biasanya fungsi atau objek) yang merangkum kompleksitas pemanggilan program lain (biasanya terletak di mesin lain, VM, atau proses - tetapi tidak selalu, itu juga bisa lokal. obyek). Karena program sebenarnya yang akan dipanggil biasanya tidak terletak di ruang memori yang sama, pemanggilannya memerlukan banyak operasi seperti pengalamatan, melakukan pemanggilan jarak jauh yang sebenarnya, menyusun / membuat serial data / argumen yang akan diteruskan (dan sama dengan hasil potensial), bahkan mungkin berurusan dengan otentikasi / keamanan, dan sebagainya. Perhatikan bahwa dalam beberapa konteks, stub juga disebut proxy (seperti proxy dinamis di Java).
Tiruan adalah jenis rintisan yang sangat spesifik dan terbatas, karena tiruan adalah pengganti fungsi atau objek lain untuk pengujian. Dalam prakteknya kita sering menggunakan tiruan sebagai program lokal (fungsi atau objek) untuk menggantikan program jarak jauh di lingkungan pengujian. Dalam kasus apapun, tiruan tersebut dapat mensimulasikan perilaku aktual dari program yang diganti dalam konteks terbatas.
Jenis rintisan yang paling terkenal jelas untuk pemrograman terdistribusi, ketika perlu memanggil prosedur jarak jauh ( RPC ) atau objek jarak jauh ( RMI , CORBA ). Sebagian besar framework / library pemrograman terdistribusi mengotomatiskan pembuatan rintisan sehingga Anda tidak perlu menulisnya secara manual. Stub dapat dibuat dari definisi antarmuka, ditulis dengan IDL misalnya (tetapi Anda juga dapat menggunakan bahasa apa pun untuk menentukan antarmuka).
Biasanya, di RPC, RMI, CORBA, dan seterusnya, ada yang membedakan stub sisi klien , yang sebagian besar menangani penyusunan / serialisasi argumen dan melakukan pemanggilan jarak jauh, dan stub sisi server , yang sebagian besar menangani unmarshaling / deserializing argumen dan benar-benar menjalankan fungsi / metode jarak jauh. Jelas, stub klien terletak di sisi klien, sedangkan stub sever (sering disebut kerangka) terletak di sisi server.
Menulis rintisan yang efisien dan umum yang baik menjadi cukup menantang saat berurusan dengan referensi objek. Sebagian besar kerangka kerja objek terdistribusi seperti RMI dan CORBA menangani referensi objek terdistribusi, tetapi itu adalah sesuatu yang dihindari sebagian besar pemrogram di lingkungan REST misalnya. Biasanya, dalam lingkungan REST, pemrogram JavaScript membuat fungsi rintisan sederhana untuk merangkum pemanggilan AJAX (serialisasi objek didukung oleh
JSON.parse
danJSON.stringify
). Proyek Swagger Codegen menyediakan dukungan ekstensif untuk secara otomatis menghasilkan rintisan REST dalam berbagai bahasa.sumber
Stub adalah definisi fungsi yang memiliki nama fungsi yang benar, jumlah parameter yang benar, dan menghasilkan hasil dummy dari jenis yang benar.
Ini membantu untuk menulis tes dan berfungsi sebagai semacam perancah untuk memungkinkan menjalankan contoh bahkan sebelum desain fungsi selesai
sumber
Anda juga memiliki kerangka kerja pengujian yang sangat bagus untuk membuat rintisan seperti itu. Salah satu pilihan saya adalah Mockito Ada juga EasyMock dan lainnya ... Tapi Mockito hebat, Anda harus membacanya - paket yang sangat elegan dan kuat
sumber
Frasa ini hampir pasti analogi dengan fase dalam konstruksi rumah - "mematikan" pipa ledeng. Selama konstruksi, sementara dindingnya masih terbuka, pipa yang kasar dipasang. Hal ini diperlukan agar konstruksi dapat dilanjutkan. Kemudian, ketika segala sesuatu di sekitarnya sudah cukup siap, seseorang kembali dan menambahkan keran dan toilet dan barang-barang produk akhir yang sebenarnya. (Lihat misalnya Cara Memasang Stub-Out Plumbing .)
Saat Anda "menghentikan" suatu fungsi dalam pemrograman, Anda membangunnya cukup banyak untuk dikerjakan (untuk pengujian atau untuk menulis kode lain). Kemudian, Anda kembali lagi nanti dan menggantinya dengan implementasi penuh.
sumber
RPC Stubs
Sumber
sumber
"Mematikan suatu fungsi berarti Anda hanya menulis secukupnya untuk menunjukkan bahwa fungsi itu dipanggil, meninggalkan detailnya nanti saat Anda punya lebih banyak waktu."
Dari: SAMS Ajari diri Anda C ++, Jesse Liberty dan Bradley Jones
sumber