JavaRush /Java Blog /Random-ID /Rehat kopi #87. Mengapa pengujian unit penting bagi penge...

Rehat kopi #87. Mengapa pengujian unit penting bagi pengembang? 5 Cara Menyalin Array di Java

Dipublikasikan di grup Random-ID

Mengapa pengujian unit penting bagi pengembang?

Sumber: SearchSoftwareQuality Mari kita bahas mengapa pengujian unit penting dan berharga, dan bagaimana hal itu membuat proses debug menjadi lebih mudah. Pengujian unit adalah alat yang ampuh untuk meningkatkan kualitas perangkat lunak. Pengujian unit memberikan verifikasi mendasar bahwa suatu aplikasi sesuai dengan spesifikasi perangkat lunak dan berperilaku sebagaimana dimaksud. Rehat kopi #87.  Mengapa pengujian unit penting bagi pengembang?  5 Cara Menyalin Array di Java - 1Jika dilakukan dengan baik, pengujian unit:
  • mengurangi jumlah cacat dan mengidentifikasinya pada tahap awal siklus hidup pengembangan;
  • meningkatkan keterbacaan kode;
  • izinkan penggunaan kembali kode;
  • meningkatkan kecepatan penerapan.
Mari kita lihat mengapa pengujian unit itu penting, bagaimana jenis pengujian ini berasal, dan apa saja hambatan dalam penerapannya.

Sejarah Pengujian Unit

Kesalahan yang terdeteksi pada tahap awal menghemat waktu dan tenaga. Selama 50 tahun pertama sejarah komputer, pengujian unit dan debugging pada dasarnya adalah hal yang sama. Namun pada tahun 1990-an, kode tersebut menjadi sangat rumit sehingga seringkali tidak mungkin untuk membagi sistem menjadi bagian-bagian kecil untuk menjalankannya secara terpisah. Pada tahun 1997, seorang programmer bernama Kent Beck menciptakan JUnit, sebuah plugin lingkungan pengembangan untuk menguji potongan kecil kode. Kode pengujian yang mengevaluasi kode sumber disebut pengujian unit. Jenis pengujian unit ini telah menjadi kebutuhan pokok selama bertahun-tahun. Setelah Beck menciptakan JUnit, Martin Fowler menulis sebuah buku, Refactoring, di mana ia mengusulkan cara untuk mengubah kode agar lebih terisolasi dan dapat diuji. Kombinasi pemfaktoran ulang kode dan pengujian unit telah menghasilkan pengembangan berbasis pengujian, di mana pembuatan pengujian unit sangat penting untuk proses pemrograman. Di dalamnya, kode harus dapat diuji bahkan sebelum dibuat. Dengan demikian, proses pemrograman tidak selesai sampai pengujian unit dijalankan. Proyek ini kemudian dapat berpindah ke tahap penelitian tingkat sistem atau tingkat manusia.

Contoh Pengujian Unit

Contoh ini menunjukkan pentingnya pengujian unit. Di sini JUnit mengevaluasi fungsi sederhana yang mengubah suhu dari Fahrenheit ke Celsius. Rumus konversi: C = (F-32) * 5/9. Hanya beberapa baris, termasuk tanda tangan fungsi dan kurung kurawal, dapat diimplementasikan dalam kode sebagai fungsi perpustakaan. Namun, dari fungsinya tidak jelas apakah ini merupakan kriteria. Opsi ini mungkin mencakup pembulatan ke atas atau ke bawah, bilangan real, atau batas atas dan bawah. Mari kita buat contoh pengujian unit untuk fungsi konversi suhu ini di Perl menggunakan modul Test::More. Baris pertama adalah komentar yang memberitahu programmer apa yang diharapkan dari kode yang tersisa.
# is (input, expected result, comment)
is( FtoC(32),0,'Freezing point is F32, C 0');
is( FtoC(212),100,'Boiling point is F212, C 100');
is( FtoC(59038),32767, 'Upper limit of C is 32767');
is( FtoC(59039),undefined, 'One past upper limit is error');
Kerangka kerja JUnit bergantung pada sistem berorientasi objek dan objek pengujian, tetapi konsepnya serupa.

Tes unit terisolasi

Salah satu manfaat pengujian unit adalah mengisolasi fungsi, kelas, atau metode dan hanya menguji bagian kode tersebut. Komponen individual yang lebih baik memberikan ketahanan sistem secara keseluruhan. Dengan cara ini Anda mendapatkan kode yang dapat diandalkan. Pengujian unit juga mengubah sifat proses debugging. Untuk mencoba memperbaiki bug, pemrogram cukup menulis pengujian yang gagal lalu mengulanginya agar lolos tanpa melanggar ekspektasi sebelumnya. Proses ini menghilangkan siklus manual debugging tradisional melalui pengaturan, pembuatan ulang, jeda, dan pengujian. Untuk mengubah kode agar cocok untuk pengujian unit, pemrogram harus mengubah cara kerjanya. Setiap potongan kode yang ditulis tanpa pengujian unit kemungkinan besar akan dianggap belum teruji, setidaknya sebagai modul individual.

Mengadaptasi Tes Unit

Perangkat lunak lama adalah perangkat lunak yang telah berjalan lama dan kemungkinan besar ditulis tanpa pengujian unit. Kode lama mempunyai nilai bagi perusahaan. Ia bekerja secara stabil selama bertahun-tahun. Beberapa program yang dibangun tanpa pengujian unit memproses transaksi jutaan dolar per hari. Namun kode yang tidak memiliki unit test berubah menjadi tumpukan kotoran seiring berjalannya waktu karena telah disentuh oleh banyak pemrogram pemeliharaan kode selama bertahun-tahun. Refactoring memungkinkan pemrogram untuk secara bertahap membuat perubahan pada sistem agar dapat diuji. Namun, perubahan ini memerlukan waktu. Beberapa tahun yang lalu, saya berdiskusi dengan rekan saya Bob Reselman tentang masalah penggunaan pengujian unit untuk aplikasi lama. Reselman berpendapat bahwa menerapkan pengujian unit pada aplikasi yang dibangun tanpa unit tersebut terlalu mahal dan bahkan bodoh. Sebaliknya, dia merekomendasikan agar organisasi memulai pengembangan baru dengan pengujian unit dan membiarkan aplikasi lama. Hal ini mungkin berlaku untuk COBOL, pembuat laporan, dan aplikasi lainnya, namun menurut saya dalam aplikasi yang ditulis dalam bahasa modern—C++, C#, Java, dan Ruby—cukup mudah untuk menambahkan pengujian unit secara surut. Daripada menulisnya untuk keseluruhan aplikasi, cukup tambahkan pengujian unit ke perubahan saat ini dan lakukan refaktorisasi seiring berjalannya waktu.

Peningkatan kecepatan, kualitas, dan kemampuan pengujian

Manajer proyek mengatakan bahwa perencanaan melibatkan trade-off antara kualitas, jumlah pekerjaan yang diselesaikan, sumber daya dan waktu. Untuk menambahkan sesuatu ke suatu area, Anda harus mengambil sesuatu dari area lain. Pengujian unit yang efektif melanggar aturan ini. Inilah sebabnya mengapa pengujian unit penting dan berharga bagi organisasi. Pengujian unit yang baik menghasilkan kode yang dapat diuji dan meningkatkan kualitas. Kode ini akan memiliki lebih sedikit cacat, yang berarti lebih sedikit perbaikan bug untuk menyelesaikan proyek lebih cepat. Ketika perangkat lunak menemukan bug, pengujian unit mempercepat proses debug, perbaikan, dan penulisan kode. Dan ini terjadi sedemikian rupa sehingga kemungkinan terulangnya cacat berkurang secara signifikan sekaligus meningkatkan kualitas dan kecepatan kode. Meskipun tidak ada solusi ajaib dalam pengembangan perangkat lunak, pengujian unit yang efektif dapat mempercepat pengembangan, pengujian, dan bahkan beberapa rekayasa persyaratan fungsional.

5 Cara Menyalin Array di Java

Sumber: Dev.to Jadi Anda memiliki dua array A dan B dan Anda perlu menyalin elemen dari A ke B. Ada beberapa cara berbeda untuk melakukan ini di Java dan saya akan menunjukkannya sekarang.

Metode satu: ForLoop

Di sinilah perulangan for yang lama membantu kita :
int[] A = {1,2,4,4};
int[] B = new int[];

 for (int i = 0; i < A.length; i++){
      B[i] = A[i];
}

Metode dua: .clone()

Metode kloning array juga dapat membantu mencapai hasil yang diinginkan:
int[] A = {1,2,4,4};
int[] B = A.clone();//the clone method copies the content of A into B;

Metode tiga: System.arraycopy()

Cara berikutnya adalah dengan menggunakan metode System.arraycopy() yang ada pada paket java.lang . Sebelum kita beralih ke penggunaannya, mari kita bahas ciri khasnya:
public static void arraycopy(
    Object src, //:source array, in this case A
    int srcPos, //:the start index for copy, typically 0
    Object dest, //:destination object in this case B.
    int destPos, //:the index to place the copied elements
    int length //:the length of the contents to be copied
);
Aplikasi:
int[] A = {1,2,4,4};
int[] B = new int[];

System.arraycopy(A, 0, B, 0, A.length);

Metode Empat: Arrays.copyOf()

Opsi penyalinan selanjutnya yang akan kita bahas adalah kelas Arrays dari paket java.utils . Perhatikan tanda tangannya:
public static int[] copyOf(
    int[] original, // :source array in this case A
    int newLength // :the length of the contents to be copied
);
Aplikasi:
int[] A = {1,2,4,4};
int[] B = Arrays.copyOf(A, 3);

Metode lima: Arrays.copyOfRange()

Jadi, ini akan menjadi opsi terakhir yang akan kita lihat di postingan ini. Itu juga dari kelas Arrays yang ada dalam paket java.utils . Mari kita lihat lagi tanda tangannya:
public static int[] copyOfRange​(
    int[] original, // :source array in this case A
    int from,  //:the start index for copy, typically 0
    int to // the end index exclusive
);
Aplikasi:
int[] A = {1,2,3,4,5,6,7};
int[] B = Arrays.copyOfRange(A, 0, A.length);
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION