Assignment : REGRESSIN ! RE"A#$R% $ES$ING & rea'ing re(ort REGRESSIN $ES$ING - Regression testing adalah salah satu dari tahapan testing yang umum dilalui oleh aplikasi. - Regression testing mencakup pengujian ulang terhadap unit, component, proses, atau keseluruhan aplikasi setelah perbaikan suatu kesalahan yang dilakukan. - Jenis pengujian ini mengungkap bug software baru, atau regresi dalam area fungsional dan non-fungsional dari sistem yang ada sesudah adanya perubahan sebagai perangkat tambahan atau patches - Regression testing memastikan permasalahan yang terjadi telah ditanggulangi, dan tidak terdapat permasalahan baru yang timbul sebagai efek perbaikan tersebut. - Tahap ini tidak hanya berguna untuk melakukan pengujian aplikasi dari output yang dihasilkan tetapi dapat juga digunakan untuk melakukan pemantauan kualitas dari output yang dihasilkan. - Hasil tes yang ada dibandingkan dengan kumpulan old !tandard" dari hasil yang sebelumnya dengan perbedaan yang dilaporkan dan diselidiki. - #lasan dari regression testing ini adalah untuk menentukan apakah perubahan dalam salah satu bagian dari perangkat lunak mempengaruhi bagian lain dari perangkat lunak tersebut. - $etode umum pengujian regresi termasuk rerunning tes yang sudah selesai sebelumnya dan memeriksa apakah perilaku program telah berubah dan apakah kesalahan tetap sebelumnya telah muncul kembali. %engujian regresi dapat dilakukan untuk menguji sistem efisien dengan sistematis memilih set minimum sesuai tes yang diperlukan untuk menutupi perubahan tertentu. - Regression testing adalah bagian integral dari metode pengembangan software extreme programming. %ada metode ini, desain dari dokumen diganti dengan pengujian yang ekstensif, berulang, dan pengujian otomatis terhadap seluruh paket perangkat lunak di setiap tahap siklus pengembangan perangkat lunak. - &ontoh regression test' Regression testing memantau ukuran file $emantau waktu yang dibutuhkan untuk melakukan suatu tes $emantau waktu yang dibutuhkan untuk melakukan kompilasi Reference: http'((en.wikipedia.org(wiki(Regression)testing http'((barus.blogdetik.com(*++,(+-(./(seluk-beluk-testing-aplikasi( http'((cplus.about.com(od(glossar.(g(regressiondefn.htm RE"A#$RING $E#)NI# - Refactoring adalah usaha untuk mengubah struktur kode program agar lebih mudah dibaca dan lebih mudah dimodifikasi. - Teknik Refactoring merupakan antiteori dari proses pengembangan perangkat lunak kon0ensional yang menekankan bahwa desain merupakan tahap terpenting pengembangan, sebuah desain yang baik akan menghasilkan implementasi program yang baik pula. - Refactoring saat ini dianggap sebagai salah satu bentuk e1treme programming 23%4, suatu paradigma dalam software engineering yang menekankan bahwa menulis kode program yang baik dan elegan jauh lebih efektif dalam pengembangan perangkat lunak dibandingkan menghabiskan waktu dan sumberdaya untuk membuat desain yang detil dan rumit. - 5stilah Refactoring pertama kali dimunculkan oleh 6illiam 7pdyke dalam disertasi doktoral miliknya pada tahun .,,* sebagai sebuah teknik restrukturisasi pada pemrogaman berorientasi obyek. - Refactoring mengijinkan programer melakukan perbaikan-perbaikan pada kode program walaupun hal tersebut tidak direncanakan dalam desain. - %erbaikan pada proses Refactoring pada umumnya ditujukan untuk optimalisasi kualitas kode program 2contoh' modularitas, efisiensi, reusability, kompleksitas, dan maintainability4 dengan persyaratan utama tidak mengubah konsistensi output dan proses dari perangkat lunak tersebut - Refactoring tidak dapat dilakukan seketika dalam lingkup baris kode yang luas tetapi dilakukan melalui perubahan-perubahan kecil kode program dan bertahap. - !alah satu bagian dari proses refactoring adalah mendeteksi bad smells2contoh method yang terlalu panjang4. &ontoh refactoring adalah Extract Method. - * jenis refactoring tool adalah' .. Automated Refactoring Tool, dimana tool jenis ini mampu mendeteksi adanya bad smells secara otomatis saat baris-baris kode di-run kemudian menawarkan opsi-opsi refactoring dan programmer dapat pula melakukan refactoring sendiri tanpa memerlukan konfirmasi programmer. *. Semi-Automated Refactoring Tool, dimana programer perlu untuk menentukan sendiri di mana bagian kode program yang memerlukan Refactoring. 8engan kata lain programer yang menentukan apakah suatu baris kode mengandung bad smells atau tidak. !etelah menentukan bagian program yang hendak diubah barulah dia mengaktifkan Refactoring tool dan memilih Refactoring apa yang hendak diaplikasikan. - &ontoh refactoring tool' JR3, JRefactory, 8omain(j, Refactor5T, Re!harper, Refactor9 %ro, Ref:: - &ontoh refactoring: ;ode dalam bahasa pemrogaman Ja0a berikut ini sebuah potongan dari program untuk penyewaan film yang disederhanakan. ;ode berikut tidak ditulis dengan cara yang elegan. class Movie { public static final int REGULAR = 0; public static final int NEW = 1; private Strin !title; private int !price"o#e; $ class Rental { private Movie !%ovie; private int !#a&sRente#; $ class "usto%er { private Strin !na%e; private 'ector !rentals = ne( 'ector)*; public Strin state%ent)* { #ouble totalA%ount = 0; Enu%eration rentals = !rentals+ele%ents)*; Strin result = ,Rental recor# for , - etNa%e)* - ,n,; (.ile )rentals+.asMoreEle%ents)** { #ouble t.isA%ount = 0; Rental eac. = )Rental*rentals+ne/tEle%ent)*; 00 #eter%ine a%ounts for eac. line s(itc. )eac.+etMovie)*+et1rice"o#e)** { case Movie+REGULAR2 t.isA%ount = 3; brea4; case Movie+NEW2 t.isA%ount = eac.+et5a&sRente#)* 6 7; brea4; $ result -= ,t, - eac.+etMovie)*+et8itle)* - ,t, - t.isA%ount - ,n,; totalA%ount -= t.isA%ount; $ return result - ,A%ount o(e# is , - totalA%ount; $ $ class Movie { +++ $ class Rental { private Movie !%ovie; private int !#a&sRente#; #ouble et".are)* { s(itc. )etMovie)*+et1rice"o#e)** { case Movie+REGULAR2 return 3; case Movie+NEW2 return et5a&sRente#)* 6 7; $ $ $ class "usto%er { private Strin !na%e; private 'ector !rentals = ne( 'ector)*; public Strin state%ent)* { Enu%eration rentals = !rentals+ele%ents)*; Strin result = ,Rental recor# for , - etNa%e)* - ,n,; (.ile )rentals+.asMoreEle%ents)** { Rental eac. = )Rental*rentals+ne/tEle%ent)*; result -= ,t, - eac.+etMovie)*+et8itle)*- ,t, - eac.+et".are)* - ,n,; $ return result - ,A%ount o(e# is , - et8otal".are)*; $ private #ouble et8otal".are)* { #ouble result = 0; Enu%eration rentals = !rentals+ele%ents)*; (.ile )rentals+.asMoreEle%ents)** { Rental eac. = )Rental*rentals+ne/tEle%ent)*; result -= eac.+et".are)*; $ return result; $ $ &ontoh kode sesudah refactoring adalah Reference: http'((ilmukomputer.com(wp-content(uploads(*++<(+=(widhiartha)refactoring.doc http'((yaniwid.wordpress.com(*++/(..(*=(refactoring(