Pemisahan Interface dari Implementasi

Pemisahan Interface dari Implementasi

Pemisahan Interface dari Implementasi

Pemisahan Interface dari Implementasi
Pemisahan Interface dari Implementasi

Karena beberapa kelas dapat memiliki referensi ke kelas lain, pengujian kelas sering dapat meluas ke pengujian kelas lain. Sebuah contoh umum ini adalah kelas yang tergantung pada database: untuk menguji kelas, tester sering menulis kode yang berinteraksi dengan database. Ini suatu kesalahan, karena tes unit harus biasanya tidak pergi ke luar dari batas kelas sendiri, dan terutama tidak harus menyeberangi proses seperti / jaringan batas karena ini dapat memperkenalkan masalah kinerja tidak dapat diterima ke unit uji-suite. Melintasi batas-batas unit tersebut ternyata tes unit menjadi tes integrasi, dan ketika uji kasus gagal, membuatnya kurang jelas komponen yang menyebabkan kegagalan. Lihat juga Fakes, mengolok-olok dan tes integrasi

Sebaliknya, pengembang perangkat lunak harus membuat sebuah antarmuka abstrak sekitar query database, dan kemudian mengimplementasikan interface dengan objek yang pura-pura terhadap mereka. Dengan abstrak ini lampiran yang diperlukan dari kode (sementara mengurangi kopling efektif bersih), unit independen dapat lebih benar-benar teruji dari Mei sebelumnya telah tercapai. Hal ini menghasilkan unit kualitas lebih tinggi yang juga lebih maintainable.

4. Parameterized Pengujian Unit (PUT)

Unit Pengujian parameter (PUTS) adalah tes yang mengambil parameter. Tidak seperti tes unit tradisional, yang biasanya metode tertutup, menempatkan mengambil set parameter. PUTS telah didukung oleh JUnit 4 dan berbagai. NET kerangka uji. Parameter Cocok untuk unit test mungkin diberikan secara manual atau dalam beberapa kasus yang secara otomatis dihasilkan oleh kerangka pengujian. Berbagai alat pengujian industri juga ada untuk menghasilkan masukan tes untuk PUTS.

5. Unit Pengujian Keterbatasan

Pengujian tidak dapat diharapkan untuk menangkap setiap kesalahan dalam program ini: tidak mungkin untuk mengevaluasi setiap jalur eksekusi dalam semua kecuali program yang paling sepele. Hal yang sama berlaku untuk unit testing. Selain itu, unit testing secara definisi hanya menguji fungsionalitas dari unit itu sendiri. Oleh karena itu, tidak akan menangkap kesalahan integrasi atau lebih luas sistem tingkat kesalahan (seperti fungsi dilakukan di beberapa unit, atau non-fungsional daerah uji seperti kinerja). Unit pengujian harus dilakukan dalam hubungannya dengan kegiatan pengujian perangkat lunak lain. Seperti semua bentuk pengujian perangkat lunak, tes unit hanya bisa menunjukkan adanya kesalahan, mereka tidak dapat menunjukkan tidak adanya kesalahan.

Software pengujian adalah masalah kombinatorial. Misalnya, setiap pernyataan keputusan boolean memerlukan setidaknya dua tes: satu dengan hasil dari “benar” dan satu dengan hasil dari “false”. Akibatnya, untuk setiap baris kode yang ditulis, programmer sering perlu 3 sampai 5 baris kode tes. Hal ini jelas membutuhkan waktu dan investasi mungkin tidak layak usaha.. Ada juga banyak masalah yang tidak dapat dengan mudah diuji sama sekali – misalnya mereka yang nondeterministic atau melibatkan beberapa thread. Selain itu, menulis kode untuk tes unit adalah sebagai mungkin setidaknya sama kereta sebagai kode itu adalah pengujian. Fred Brooks dalam The Man-Bulan kutipan Mythical: tidak pernah mengambil dua kronometer ke laut. Selalu mengambil satu atau tiga. Artinya, jika dua kronometer bertentangan, bagaimana Anda tahu mana yang benar?

Untuk mendapatkan manfaat dimaksudkan dari unit testing, disiplin ketat diperlukan selama proses pengembangan perangkat lunak. Penting untuk menyimpan catatan-hati tidak hanya dari tes yang telah dilakukan, tetapi juga dari semua perubahan yang telah dibuat pada kode ini atau unit lain dalam perangkat lunak. Penggunaan sistem kontrol versi sangat penting. Jika versi yang lebih baru unit gagal tes tertentu yang sebelumnya berlalu, perangkat lunak versi-kontrol dapat memberikan daftar perubahan kode sumber (jika ada) yang telah diterapkan pada unit sejak saat itu.

Hal ini juga penting untuk menerapkan proses yang berkelanjutan untuk memastikan kegagalan uji kasus yang terakhir setiap hari dan segera diatasi. Jika proses tersebut tidak diterapkan dan mendarah daging ke dalam alur kerja tim, aplikasi akan berkembang tidak sinkron dengan unit test suite, meningkatkan positif palsu dan mengurangi efektivitas suite uji.

Unit pengujian perangkat lunak sistem tertanam menghadirkan tantangan yang unik: Karena perangkat lunak sedang dikembangkan pada platform yang berbeda dari yang pada akhirnya akan berjalan pada, Anda tidak dapat dengan mudah menjalankan program tes di lingkungan penyebaran yang nyata, seperti yang mungkin dengan program-program desktop.

Sumber : https://merpati.co.id/