Categories
Rekayasa Perangkat Lunak

Penggunaan JUnit pada Netbeans

Pada kesempatan kali ini, penulis akan berbagi pengalaman tentang penggunaan salah satu unit testing yaitu JUnit pada IDE Apache NetBeans.

JUnit akan disediakan secara otomatis oleh NetBeans, jika ingin menggunakannya kita hanya perlu menambahkan Library JUnit 4.12 atau JUnit 5.5.2. Untuk penjelasan yang satu ini, penulis menggunakan JUnit 4.12, karena beberapa fitur versi 4 tidak tersedia pada JUnit versi 5.

Pertama, kita akan membuat project baru sebagai latihan untuk menggunakan JUnit, project yang penulis buat pada kali ini adalah kalkulator sederhana. Setelah membuat project, kita akan menambahkan library JUnit 4.12 pada project ini dengan menekan klik kanan pada bagian “Libraries” lalu tekan “Add Library” dan tambahkan “JUnit 4.12”. Selanjutnya, tambahkan sebuah class yang bernama “Calc”, berikut lampiran kode untuk class Calc.

public class Calc {

public Calc(){
}

/* Pertambahan */
public int tambah(int a, int b){
return a + b;
}

/* Perkurangan */
public int kurang(int a, int b){
return a – b;
}

/* Perkalian */
public int kali(int a, int b){
return a * b;
}

/* Pembagian */
public float bagi(float a, float b){
if(b == 0){
throw new IllegalArgumentException(“Pembagi tidak boleh bernilai 0”);
}
else{
return a / b;
}
}
}

Setelah itu, tekan klik kanan pada Calc.java, lalu ke bagian “Tools” dan pilih “Create/Update Tests”. Beri nama “CalcTest” pada kolom “Class Name”, lalu pada bagian “Code Generation” lakukan ceklis pada semua pilihan kecuali “Test Initializer” dan “Test Finalizer”. Berikut lampiran kode untuk CalcTest.java.

import org.junit.Assert;
import org.junit.Test;
import org.junit.Before;

public class CalcTest {

private Calc testCalc;

public CalcTest() {
}

@Before
public void setUpClass() {
testCalc = new Calc();
}

@Test
public void testTambah() {
int a = 10;
int b = 20;
int target = 30;
int hasil = testCalc.tambah(a, b);
Assert.assertEquals(target, hasil);
}

@Test
public void testKurang(){
int a = 20;
int b = 10;
int target = 10;
int hasil = testCalc.kurang(a, b);
Assert.assertEquals(target, hasil);
}

@Test
public void testKali(){
int a = 2;
int b = 5;
int target = 10;
int hasil = testCalc.kali(a, b);
Assert.assertEquals(target, hasil);
}

@Test
public void testBagi(){
int a = 50;
int b = 2;
float target = 25;
float hasil = testCalc.bagi(a, b);
Assert.assertEquals(target, hasil, 0.00005);
}

@Test(expected = IllegalArgumentException.class)
public void testBagiNol(){
int a = 10;
int b = 0;
testCalc.bagi(a, b);
}

}

Setelah berhasil membuat class test, tekan klik kanan pada Calc.java kembali lalu tekan “Test File”. NetBeans akan melakukan test untuk method yang sudah dibuat pada class Calc, jika test case yang digunakan pada CalcTest memberikan hasil yang sesuai, maka “Test Results” akan menampilkan bahwa semua test yang dilakukan sudah benar.

Categories
Rekayasa Perangkat Lunak

Penggunaan FitNesse pada Class Java dengan Tema Software Downloader

Sesuai yang sudah ditulis pada judul, penulis akan sharing dengan sedikit pengalaman mencoba FitNesse sebagai alat test untuk sebuah software. Class yang dibuat tidak seperti pada software downloader aslinya melainkan hanya sebagai contoh saja.

Untuk penggunaan FitNesse, pertama download terlebih dahulu FitNesse nya disini. Selanjutnya, berikut adalah sebuah video singkat untuk penggunaan web server FitNesse (video)

Setelah memahami video tersebut, berikut adalah 3 source code yang telah penulis buat untuk test menggunakan FitNesse.

Timecheck.java

public class Timecheck{
    private int speed;
    private int size;
    private int time;
 
    public Timecheck(){   
    }
 
    public void setSpeed(int speed) {
        this.speed = speed;
    }
 
    public void setSize(int size) {
        this.size = size;
    }
 
    public void setTime(int time) {
        this.time = time;
    }
 
    public int getTime(){
        time = size/speed;
        return time;
    }
    
}
Tabel FitNesse Timecheck

!*< Hidden

!define TEST_SYSTEM {slim}
*!

!path G:\Fitnesse
|Timecheck |
|size|speed|getTime?|
|100 |2 |50 |
|1000 |3 |333 |
|21 |7 |3 |
|9 |3 |<5 |

untuk penggunaan !path disesuaikan dengan tempat menyimpan file class .java yang telah dibuat.

Sizecheck.java

public class Sizecheck {
    private float size;
    private float disksize;
    public Sizecheck() {
    }
    public void setSize(float size) {
        this.size = size;
    }
    public void setDisksize(float disksize) {
        this.disksize = disksize;
    }
    public String checkSize(){
        if(size > disksize){
            return “Disk full”;
        }
        else{
            return “Good to go”;
        }
    }
    
}
Tabel FitNesse Sizecheck

!*< Hidden

!define TEST_SYSTEM {slim}
*!

!path G:\Fitnesse
|Sizecheck |
|size|disksize|checkSize?|
|100 |200 |Good to go |
|500 |350 |Disk full |

Docstype.java

public class Docstype {
    private String filetype;
    public Docstype() {
    }
    public void setFiletype(String filetype) {
        this.filetype = filetype;
    }
    public String checkType(){
        if(filetype.equals(“.pdf”) || filetype.equals(“.docx”) || filetype.equals(“.xls”) || filetype.equals(“.ppt”)){
            return “Ok”;
        }
        else{
            return “Not document”;
        }
    }
}
Tabel FitNesse Docstype

!*< Hidden

!define TEST_SYSTEM {slim}
*!

!path G:\Fitnesse
|Docstype |
|filetype|checkType?|
|.pdf |Ok |
|.docx |Ok |
|.ppt |Ok |
|.xls |Ok |
|.mp4 |Not document|

Catatan:

jika saat membuat link baru untuk pengetesan tidak memiliki tombol “test”, beri ?properties pada akhir link url tersebut, lalu pilih page type test dan save.

Categories
Rekayasa Perangkat Lunak

Penilaian Kualitas Perangkat Lunak Internet Download Manager Dan JDownloader 2 Menggunakan Penilaian Faktor Mc Call

Kualitas perangkat lunak adalah kajian dari rekayasa perangkat lunak yang bertujuan untuk menilai sebuah perangkat lunak dari sudut pandang pengukur dengan parameter tertentu.

Bagaimanapun juga mengukur kualitas perangkat lunak memang bukan pekerjaan mudah. Ketika seseorang memberi nilai sangat baik terhadap sebuah perangkat lunak, orang lain belum tentu mengatakan hal yang sama. Sudut pandang seseorang tersebut mungkin berorientasi ke satu sisi masalah (misalnya tentang reliabilitas dan efisiensi perangkat lunak), sedangkan orang lain yang menyatakan bahwa perangkat lunak itu buruk menggunakan sudut pandang yang lain lagi (usabilitas dan aspek desain). (referensi : https://romisatriawahono.net/2006/06/05/teknik-pengukuran-kualitas-perangkat-lunak/)

Apa yang diukur ?

Pada postingan ini, penulis akan membahas hasil pengukuran penulis mengenai 2 alat bantu yang cukup populer, yaitu Internet Download Manager (IDM) dan Jdownloader2. Mengapa ? Karena keduanya didapatkan dengan cara yang berbeda, untuk IDM sendiri merupakan software premium sedangkan Jdownloader2 adalah software freemium.

Perbandingan yang digunakan adalah dengan metode pengukuran Mc Call

 

Berdasarkan Faktor Efficiency

Pada faktor ini terdapat dua kriteria, yaitu Execution Efficiently dan Storage Efficiency.

Kriteria Efficiency Nilai IDM (0-10) Nilai JDownloader 2 (0-10) Bobot Total Nilai Keterangan
Execution Efficiently 9 8 1 10 Speed
Storage Efficiency 9 3 0.2 2 Size on disk

Execution Efficiently mengambil sudut pandang kecepatan download yang bisa didapat. Storage Efficiency mengambil sudut pandang berapa penggunaan disk oleh software tersebut.

Nilai Total :

¤IDM = 1 * 9 + 0.2 * 9 = 10.8

¤JDownloader 2 = 1 * 8 + 0.2 * 3 = 8.6

Dengan menggunakan link download yang sama, berikut perbedaan kecepatan antara IDM dan Jdownloader2.

Figure 1 IDM

Figure 2 Jdownloader2

Lalu, berikut perbandingan jumlah pemakaian oleh software tersebut.

 

Berdasarkan Factor Flexibility

Pada faktor ini, terdapat dua kriteria, yaitu Generality dan Modularity.

Generality mengambil sudut pandang dari penerapan UI atau User Interface. Modularity mengambil sudut pandang dari penerapan File Segmentation yang akan mempengaruhi pada proses kecepatan mendownload.

Kriteria Flexibility Nilai IDM (0-10) Nilai JDownloader 2 (0-10) Bobot Total Nilai Keterangan
Generality 7 6 0.5 5 UI
Modularity 10 6 0.9 9 File Segmentation

Nilai Total :

  • IDM = 0.5 * 7 + 0.9 * 10 = 5
  • JDownloader 2 = 0.5 * 6 + 0.9 * 6 = 9

 

Berikut adalah tampilan UI dari kedua software tersebut.

Untuk Modularity, IDM terkenal oleh Dynamic File Segmentation nya dimana ini adalah fitur yang membuat IDM terkenal karena kecepatan downloadnya.

Berdasarkan Faktor Reability

Pada faktor ini terdapat tiga kriteria, yaitu Accuracy, Error Tolerance, dan Consistency.

Accuracy mengambil sudut pandang dari bagaimana downloader ini mengambil link yang bisa di download oleh pengguna pada suatu website. Error Tolerance mengambil sudut pandang dari bagaimana downloader bisa tetap melanjutkan downloadnya jiga terjadi error seperti gagal koneksi atau harus memperbarui link. Consistency mengambil sudut pandang dari bagaimana pembagian file tiap segmentasi terbagi menjadi rata.

Kriteria Reliability Nilai IDM (0-10) Nilai JDownloader 2 (0-10) Bobot Total Nilai Keterangan
Accuracy 5 8 0.6 6 Link Grabber
Error Tolerance 6 8 0.8 8 Auto Reconnect
Consistency 8 5 0.7 7 Download per segmentation

 

Nilai Total :

  • IDM = 0.6 * 5 + 0.8 * 6 + 0.7 * 8 = 4
  • JDownloader 2 = 0.6 * 8 + 0.8 * 8 + 0.7 * 5 = 7

 

Pada bagian Accuracy, Jdownloader 2 lebih unggul karena fitur Crawling Link nya, yang memungkinkan pengguna cukup memasukan link website tersebut, maka secara otomatis Jdownloader 2 akan mencari link mana saja yang bisa di download oleh pengguna.

Pada bagian Error Tolerance, Jdownloader 2 memiliki fitur auto reconnect yang bisa dibilang lebih unggul daripada IDM salah satunya adalah fitur memperbarui link otomatis jika link yang digunakan sudah expired.

Pada bagian Consistency, IDM memiliki keunggulan pada bagian segmentasi seperti yang telah disebutkan sebelumnya.

Berdasarkan Faktor Portability

Pada faktor ini terdapat dua kriteria, yaitu Software System Independence dan Hardware Independence.

Software System Independence mengambil sudut pandang dari ketersediaan software dalam OS. Hardware Independence mengambil sudut pandang dari penggunaan bandwidth sesuai hardware yang digunakan.

Kriteria Portability Nilai IDM (0-10) Nilai JDownloader 2 (0-10) Bobot Total Nilai Keterangan
Software System Independence 2 8 0.7 7 OS
Hardware Independence 5 5 0.3 3 Maximum Bandwidth

Nilai Total :

  • IDM = 0.7 * 2 + 0.3 * 5 = 9
  • JDownloader 2 = 0.7 * 8 + 0.3 * 5 = 1

 

Pada bagian Software System Independence, Ketersediaan Jdownloader 2 lebih unggul dibandingkan IDM yang hanya tersedia pada OS windows saja.

Pada bagian Hardware Independence, kesamaan hardware yang digunakan dalam penilaian ini haruslah sama.

Berdasarkan Faktor Usability

Pada faktor ini terdapat dua kriteria, yaitu Training dan Operability.

Training mengambil sudut pandang dari kemudahan pengguna baru untuk beradaptasi dengan software tersebut, terutama dengan bantuan dari plugins. Operability mengambil sudut pandang dari seberapa banyak penggunaan resources dari komputer yang digunakan oleh software tersebut.

Kriteria Usability Nilai IDM (0-10) Nilai JDownloader 2 (0-10) Bobot Total Nilai Keterangan
Training 5 8 0.4 4 Plugins
Operability 10 3 0.6 6 Usage Efficiency

Nilai Total :

  • IDM = 0.4 * 5 + 0.6 * 10 = 8
  • JDownloader 2 = 0.4 * 8 + 0.6 * 3 = 5

 

Pada bagian Training, Jdownloader 2 menyediakan lebih banyak plugins yang bisa membantu pengguna untuk mempermudah proses download.

Berikut perbandingan resources yang digunakan oleh kedua software tersebut.

Keduanya berada dalam kondisi terbuka dan tidak dalam proses mendownload.

Final

Total Nilai Akhir :

IDM                 : 47.6

Jdownloader 2  : 44.3

Dengan hasil akhir bahwa IDM sedikit lebih unggul daripada Jdownloader 2, namun Jdownloader 2 memiliki pengguna yang lebih banyak daripada IDM karena ketersediaan yang gratis.

REFERENSI
  1. Daniel Galin, Software Quality Assurance: From Theory to Implementation 1st Edition
  2. https://www.internetdownloadmanager.com/support/segmentation.html
  3. https://romisatriawahono.net/2006/06/05/teknik-pengukuran-kualitas-perangkat-lunak/
  4. https://www.slant.co/versus/27035/27036/~jdownloader-2_vs_internet-download-manager
  5. https://en.wikipedia.org/wiki/JDownloader
Categories
Rekayasa Perangkat Lunak

Scrum Model

Scrum Model adalah metode pengembangan perangkat lunak agile yang dikembangkan oleh Jeff Sutherland dan tim pengembangan miliknya pada awal tahun 1990-an. Selanjutnya, pengembangan lebih lanjut metode Scrum telah dilakukan oleh Schwaber dan Beedle.

Prinsip Scrum konsisten dengan manifesto agile dan digunakan sebagai arahan dalam aktivitas pengembangan dengan proses aktivitas kerangka kerja : prasyarat (requirements), analisis (analysis), desain (design), evolusi (evolution), dan pengiriman (delivery). Dalam tiap kerangka kerja, pekerjaan dilakukan dalam pola proses yang disebut dengan sprint. Pekerjaan disusun dalam sebuah sprint (angka sprint yang dibutuhkan dalam tiap aktivitas rangka kerja akan beragam tergantung dengan kompleksitas dan ukuran produk) beradaptasi dengan masalah dan didefinisikan dan sering dimodifikasi secara langsung oleh tim Scrum. Secara keseluruhan proses Scrum diilustrasikan pada gambar dibawah ini.

Scrum process flow
Scrum process flow

Scrum menekankan penggunaan pola proses seperangkat perangkat lunak yang telah dibuktikan efektif dalam proyek dengan waktu yang singkat, perubahan prasyarat, dan kekritisan bisnis. Tiap pola proses didefinisikan oleh seperangkat aksi pengembangan :

  • Backlog – daftar prasyarat proyek yang diprioritaskan atau fitur yang menyediakan nilai bisnis untuk pelanggan. Item bisa ditambahkan ke dalam backlog kapanpun (ini adalah bagaimana perubahan di perkenalkan). Manager produk menilai backlog dan memperbarui prioritas seperti yang dibutuhkan.
  • Sprints – Meliputi kerja unit yang dibutuhkan untuk mencapai prasyarat yang ditentukan oleh backlog yang harus memenuhi kedalam time box (time box adalah ketentuan manajemen proyek yang mengidikasikan jangka waktu yang telah dialokasikan untuk menyelasaikan beberapa tugas). Perubahan (contoh, item kerja backlog) tidak diperkenalkan saat sprint. Oleh karena itu, sprint memperbolehkan anggota tim untuk bekerja dalam waktu yang singkat, tetapi dengan lingkungan yang stabil.
  • Scrum meetings – adalah pertemuan singkat yang diadakan tiap hari oleh tim Scrum. Tiga pertanyaan kunci ditanyakan dan dijawab oleh semua anggota tim :
      • Apa yang anda lakukan sejak pertemuan terakhir ?
      • Apa rintangan yang anda hadapi ?
      • Apa rencana yang ingin anda capai pada pertemuan berikutnya ?

    Pemimpin tim, disebut sebagai Scrum master, memimpin pertemuan dan menilai respon dari tiap orang. Pertemuan Scrum membantu tim untuk mengungkap potensi masalah secepatnya. Juga, pertemuan harian ini mengacu ke “Knowledge socialization” dan dengan demikian mempromosikan stuktur tim yang mengatur diri sendiri.

  • Demos – memberikan peningkatan perangkat lunak ke pelanggan agar fungsi yang telah diimplementasi dapat didemonstrasikan dan dievaluasi oleh pelanggan. Sangat penting untuk dicatat bahwa demonstrasi bisa tidak memiliki semua fungsi yang direncanakan, melainkan fungsi itu dapat disampaikan dalam time box yang telah dibangun.

Beedle dan rekannya memberikan diskusi yang luas tentang pola ini yang mana mereka nyatakan: “Scrum mengasumsikan dimuka keberadaan kehancuran. . . .” pola proses Scrum memungkinkan sebuah tim perangkat lunak untuk bekerja dengan sukses dalam dunia dimana eliminasi ketidaktentuan itu tidak mungkin.

 

Daftar Pustaka :
  • RPL-7th edition software engineering a practitioners approach by roger’s pressman.