JavaRush /Blog Java /Random-MS /Coffee break #87. Mengapakah ujian unit penting untuk pem...

Coffee break #87. Mengapakah ujian unit penting untuk pembangun? 5 Cara untuk Menyalin Array di Jawa

Diterbitkan dalam kumpulan

Mengapakah ujian unit penting untuk pembangun?

Sumber: SearchSoftwareQuality Mari kita bincangkan mengapa ujian unit penting dan berharga, dan cara ia menjadikan penyahpepijatan lebih mudah. Ujian unit ialah alat yang berkuasa untuk meningkatkan kualiti perisian. Ujian unit menyediakan pengesahan asas bahawa aplikasi mematuhi spesifikasi perisian dan berkelakuan seperti yang dimaksudkan. Coffee break #87.  Mengapakah ujian unit penting untuk pembangun?  5 Cara Menyalin Tatasusunan dalam Java - 1Apabila dilakukan dengan baik, ujian unit:
  • mengurangkan bilangan kecacatan dan mengenal pasti mereka pada peringkat awal kitaran hayat pembangunan;
  • meningkatkan kebolehbacaan kod;
  • benarkan penggunaan semula kod;
  • meningkatkan kelajuan penggunaan.
Mari lihat mengapa ujian unit penting, bagaimana jenis ujian ini berasal dan apakah halangan kepada pelaksanaannya.

Sejarah Pengujian Unit

Ralat yang dikesan pada peringkat awal menjimatkan masa dan usaha. Untuk 50 tahun pertama sejarah komputer, ujian unit dan penyahpepijatan pada dasarnya adalah perkara yang sama. Tetapi menjelang 1990-an, kod itu telah menjadi sangat kompleks sehingga selalunya mustahil untuk memisahkan sistem kepada bahagian-bahagian kecil untuk menjalankannya secara berasingan. Pada tahun 1997, seorang pengaturcara bernama Kent Beck mencipta JUnit, pemalam persekitaran pembangunan untuk menguji kepingan kecil kod. Kod ujian yang menilai kod sumber dipanggil ujian unit. Ujian unit jenis ini telah menjadi ruji selama bertahun-tahun. Selepas Beck mencipta JUnit, Martin Fowler menulis sebuah buku, Refactoring, di mana dia mencadangkan cara untuk mengubah kod untuk menjadikannya lebih terpencil dan boleh diuji. Gabungan pemfaktoran semula kod dan ujian unit telah membawa kepada pembangunan dipacu ujian, di mana penciptaan ujian unit adalah penting untuk proses pengaturcaraan. Di dalamnya, kod mesti boleh diuji walaupun sebelum ia dibuat. Oleh itu, proses pengaturcaraan tidak selesai sehingga ujian unit dijalankan. Projek itu kemudiannya boleh bergerak ke peringkat penyelidikan di peringkat sistem atau manusia.

Contoh Pengujian Unit

Contoh ini menunjukkan kepentingan ujian unit. Di sini JUnit menilai fungsi mudah yang menukar suhu daripada Fahrenheit kepada Celsius. Formula penukaran: C = (F-32) * 5/9. Hanya beberapa baris, termasuk tandatangan fungsi dan pendakap kerinting, boleh dilaksanakan dalam kod sebagai fungsi perpustakaan. Walau bagaimanapun, tidak jelas dari fungsi bahawa ini adalah kriteria. Pilihan ini mungkin termasuk pembundaran ke atas atau bawah, nombor nyata atau had atas dan bawah. Mari buat contoh ujian unit untuk fungsi penukaran suhu ini dalam Perl menggunakan modul Test::More. Baris pertama ialah ulasan yang memberitahu pengaturcara apa yang diharapkan daripada kod yang tinggal.
# 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');
Rangka kerja JUnit bergantung pada sistem berorientasikan objek dan objek ujian, tetapi konsepnya serupa.

Ujian unit terpencil

Salah satu faedah ujian unit ialah ia mengasingkan fungsi, kelas atau kaedah dan hanya menguji sekeping kod tersebut. Komponen individu yang lebih baik memberikan daya tahan sistem secara keseluruhan. Dengan cara ini anda mendapat kod yang boleh dipercayai. Ujian unit juga mengubah sifat proses penyahpepijatan. Untuk cuba membetulkan pepijat, pengaturcara hanya menulis ujian yang gagal dan kemudian mengulanginya supaya ia lulus tanpa melanggar jangkaan sebelumnya. Proses ini menghapuskan kitaran manual penyahpepijatan tradisional melalui persediaan, cipta semula, jeda dan ujian. Untuk menukar kod agar sesuai untuk ujian unit, pengaturcara mesti mengubah cara mereka bekerja. Sebarang keping kod yang ditulis tanpa ujian unit mungkin akan dianggap belum diuji, sekurang-kurangnya sebagai modul individu.

Menyesuaikan Ujian Unit

Perisian warisan ialah perisian yang telah berjalan untuk masa yang lama dan kemungkinan besar ditulis tanpa ujian unit. Kod warisan mempunyai nilai untuk syarikat. Ia berfungsi dengan stabil selama bertahun-tahun. Sesetengah program yang dibina tanpa ujian unit memproses transaksi jutaan dolar setiap hari. Tetapi kod yang tidak mempunyai ujian unit bertukar menjadi bola besar dari masa ke masa kerana ia telah disentuh oleh banyak pengaturcara penyelenggaraan kod selama ini. Pemfaktoran semula membolehkan pengaturcara membuat perubahan secara beransur-ansur pada sistem untuk menjadikannya boleh diuji. Walau bagaimanapun, perubahan ini mengambil masa. Beberapa tahun yang lalu, saya berbincang dengan rakan sekerja saya Bob Reselman tentang isu penggunaan ujian unit untuk aplikasi warisan. Reselman berhujah bahawa melaksanakan ujian unit dalam aplikasi yang dibina tanpa ia adalah terlalu mahal dan juga bodoh. Sebaliknya, beliau mengesyorkan agar organisasi memulakan pembangunan baharu dengan ujian unit dan meninggalkan aplikasi warisan sahaja. Ini mungkin benar untuk COBOL, penjana laporan dan aplikasi lain, tetapi saya berpendapat bahawa dalam aplikasi yang ditulis dalam bahasa moden—C++, C#, Java dan Ruby—agak mudah untuk menambah ujian unit secara retroaktif. Daripada menulisnya untuk keseluruhan aplikasi, cuma tambahkan ujian unit pada perubahan semasa dan refactor semasa anda pergi.

Peningkatan kelajuan, kualiti dan kebolehujian

Pengurus projek mengatakan bahawa perancangan melibatkan pertukaran antara kualiti, jumlah kerja yang disiapkan, sumber dan masa. Untuk menambah sesuatu pada satu kawasan, anda mesti mengambil sesuatu daripada kawasan lain. Ujian unit yang berkesan melanggar peraturan ini. Inilah sebabnya mengapa ujian unit adalah penting dan berharga untuk organisasi. Ujian unit yang baik menghasilkan kod yang boleh diuji yang meningkatkan kualiti. Kod ini akan mempunyai lebih sedikit kecacatan, yang bermaksud lebih sedikit pembetulan pepijat untuk menyelesaikan projek dengan lebih cepat. Apabila perisian menghadapi pepijat, ujian unit mempercepatkan penyahpepijatan, pembetulan dan menulis kod. Dan ini berlaku sedemikian rupa sehingga kemungkinan kecacatan berulang dikurangkan dengan ketara sambil meningkatkan kualiti dan kelajuan kod secara serentak. Walaupun tiada peluru ajaib dalam pembangunan perisian, ujian unit yang berkesan boleh mempercepatkan pembangunan, ujian, dan juga beberapa kejuruteraan keperluan fungsian.

5 Cara untuk Menyalin Array di Jawa

Sumber: Dev.to Jadi anda mempunyai dua tatasusunan A dan B dan anda perlu menyalin elemen dari A ke B. Nah, terdapat cara yang berbeza untuk melakukan ini di Jawa dan saya akan tunjukkan kepada anda sekarang.

Kaedah satu: ForLoop

Di sinilah gelung lama yang baik datang untuk membantu kami :
int[] A = {1,2,4,4};
int[] B = new int[];

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

Kaedah kedua: .clone()

Kaedah pengklonan tatasusunan juga boleh 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;

Kaedah tiga: System.arraycopy()

Cara seterusnya ialah menggunakan kaedah System.arraycopy() , yang terdapat dalam pakej java.lang . Sebelum kita meneruskan penggunaannya, mari kita bincangkan tandatangannya:
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
);
Permohonan:
int[] A = {1,2,4,4};
int[] B = new int[];

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

Kaedah Empat: Arrays.copyOf()

Pilihan salinan seterusnya yang akan kita bincangkan ialah kelas Arrays daripada pakej java.utils . Perhatikan tandatangannya:
public static int[] copyOf(
    int[] original, // :source array in this case A
    int newLength // :the length of the contents to be copied
);
Permohonan:
int[] A = {1,2,4,4};
int[] B = Arrays.copyOf(A, 3);

Kaedah lima: Arrays.copyOfRange()

Jadi, ini akan menjadi pilihan terakhir yang akan kita lihat dalam siaran ini. Ia juga daripada kelas Array yang terdapat dalam pakej java.utils . Mari lihat tandatangannya sekali lagi:
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
);
Permohonan:
int[] A = {1,2,3,4,5,6,7};
int[] B = Arrays.copyOfRange(A, 0, A.length);
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION