Menguji backend aplikasi web adalah bagian penting dari proses pengembangan dan pemantauan berkelanjutan. Selain itu, lihat pengujian untuk frontend.
Pengembangan berbasis pengujian
Dalam Pengembangan Berdasarkan Pengujian (TDD), persyaratan aplikasi diterjemahkan ke dalam kasus pengujian sebelum aplikasi diimplementasikan sepenuhnya. Selama pengembangan, pengujian ini ditulis terlebih dahulu dan diimplementasikan secara berurutan saat aplikasi di-build. Persyaratan yang jelas (yaitu kasus pengujian) memastikan bahwa kode akhir terstruktur dengan baik, memenuhi semua persyaratan, dan benar, yang sangat penting selama tahap awal pengembangan.
Continuous Integration dan Pengujian Otomatis
Pengujian continuous integration (CI) otomatis menjalankan pengujian terhadap perubahan kode apa pun, seperti selama peninjauan kode atau saat kode telah digabungkan ke repositori kode Anda. Pengujian otomatis meningkatkan kualitas dan kepercayaan diri secara keseluruhan pada kode yang dikirimkan dengan mengurangi risiko kerusakan atau regresi selama pengembangan. Sebaiknya siapkan sistem pengujian otomatis untuk lingkungan Anda guna memastikan kondisi aplikasi. Gunakan sistem yang didukung oleh arsitektur, platform, dan bahasa Anda, serta integrasikan dengan lancar ke pipeline pengembangan Anda; misalnya, gunakan GitHub Actions untuk alur kerja CI atau pipeline CI kustom bawaan cloud, yang disesuaikan untuk konfigurasi Anda.
Pelajari lebih lanjut prinsip di balik pengujian otomatis dan cara meningkatkan kualitas pengujian Anda. Pelajari lebih lanjut pengujian continuous integration dan praktik terbaik untuk menerapkan, menyiapkan, dan mengukur keberhasilan.
Sebagai langkah berikutnya, pertimbangkan pipeline continuous delivery (CD) otomatis untuk men-deploy perubahan dan update pada aplikasi Anda secara otomatis.
Pengujian unit
Pengujian unit mengacu pada pengujian bagian-bagian kode kecil yang mandiri secara terpisah. Gunakan framework pengujian unit yang direkomendasikan dan populer untuk bahasa atau framework backend Anda. Misalnya, untuk aplikasi berbasis Java monolitik, gunakan JUnit, atau untuk aplikasi serverless berbasis JavaScript (termasuk Dart atau TypeScript), gunakan framework yang dibuat untuk pengujian JavaScript, seperti Jest.
Sebagian besar framework backend modern memiliki resource khusus untuk pengujian. Pertimbangkan untuk mengintegrasikan fitur ini ke dalam pipeline CI Anda untuk mengotomatiskan pengujian. Pastikan pengujian unit Anda memberikan cakupan kode yang baik untuk aplikasi Anda. Sebagian besar framework pengujian menyediakan fitur untuk menganalisis dan melaporkan cakupan pengujian serta memungkinkan integrasi ke dalam pipeline build.
Pengujian integrasi
Pengujian integrasi mengacu pada pengujian modul atau bagian aplikasi yang lebih besar secara bersamaan. Dibandingkan dengan pengujian unit (yang berfokus pada setiap bagian kode), pengujian integrasi berfokus pada integrasi setiap bagian arsitektur Anda. Ini juga dapat mencakup alur end-to-end yang mencakup beberapa langkah dan modul di seluruh aplikasi.
Pengujian integrasi dapat mencakup berbagai modul aplikasi yang mungkin memerlukan interaksi dengan layanan eksternal, seperti penyimpanan data, sistem file, atau pembayaran. Sebaiknya buat struktur aplikasi Anda guna mendukung abstraksi untuk layanan ini melalui injeksi dependensi atau fitur serupa yang disediakan oleh framework backend Anda.
Pengujian perilaku dan fungsional
Mendekati backend (atau modul atau komponen individual) sebagai kotak buram, pengujian fungsional berfokus pada input dan output sistem. Meskipun pengujian perilaku mungkin lebih umum untuk frontend, pengujian ini juga berperan penting dalam mengonfirmasi integritas sistem backend secara menyeluruh. Jenis pengujian ini mengonfirmasi bahwa sistem bereaksi dan berperilaku seperti yang diharapkan terhadap input yang berbeda.
Pengujian regresi
Pengujian regresi mengacu pada pengujian yang mengonfirmasi bahwa aplikasi masih berperilaku seperti yang diharapkan. Pengujian yang berhasil diselesaikan sebelumnya akan dijalankan kembali untuk setiap perubahan baru guna memastikan bahwa perubahan tersebut tidak memunculkan kembali masalah sebelumnya. Seiring perbaikan bug dalam aplikasi, pengujian unit atau integrasi harus ditambahkan untuk memastikan bug tidak berulang. Pengujian regresi harus diintegrasikan ke dalam pipeline pengujian dan build biasa.
Pengujian asap
Pengujian asap, juga disebut pengujian verifikasi build, berfokus pada verifikasi fungsi yang paling penting dari aplikasi backend Anda. Lebih dari sekadar pengujian integrasi, yang mengabstraksi beberapa fitur dan dependensi eksternal, pengujian asap mencakup kasus penggunaan penting untuk aplikasi Anda. Pengujian asap dapat berfungsi sebagai lapisan verifikasi tambahan sebelum aplikasi dipromosikan ke lingkungan staging untuk memastikan perilaku yang akurat. Uji asap dapat terdiri dari pengujian unit otomatis atau pengujian fungsional manual yang dilakukan oleh tim Uji Mutu.
Lingkungan produksi dan staging
Lingkungan staging adalah salinan lingkungan produksi Anda, yang di-sandbox untuk memfasilitasi pengujian. Deployment khusus mengurangi risiko masalah pada lingkungan produksi dan mempermudah pelaksanaan uji mutu. Dengan lingkungan staging, Anda dapat menguji sistem di dekat lingkungan produksi live.
Memiliki salinan 1-untuk-1 lingkungan produksi mungkin tidak memungkinkan karena beberapa faktor seperti biaya atau kompleksitas arsitektur backend. Pertimbangkan bagian backend yang paling penting dan optimalkan bagian tersebut untuk lingkungan staging.
Pengujian terhadap data yang digunakan dalam produksi menawarkan manfaat besar untuk menguji perilaku aplikasi dengan data dunia nyata. Pastikan untuk mempertimbangkan implikasi privasi dan kebutuhan penyimpanan data untuk lingkungan staging tersebut, dan desain data yang digunakan oleh sistem backend Anda dengan cermat. Akses ke lingkungan tersebut harus dikontrol secara ketat, terutama jika data produksi digunakan.
Pertimbangkan skala sistem Anda dan apakah lingkungan berdiri sesuai untuk aplikasi Anda. Lingkungan staging yang dapat di-deploy secara otomatis melalui sistem pengiriman berkelanjutan juga menawarkan peluang tambahan untuk menguji build harian atau mingguan, dan memberinya pemeriksaan tambahan sebelum rilis.
Pendekatan lainnya adalah lebih mengandalkan pengujian continuous integration dan sistem otomatis daripada lingkungan staging yang di-deploy sepenuhnya. Pertimbangkan alur kerja, kondisi sistem, cakupan kode, dan persyaratan teknis tim Anda.