UNIT TESTING VS TRADITIONAL TESTING Kesederhanaan JUnit berkisar pada dua kelas utama (TestCase dan
1. Traditional testing Uji sistem secara keseluruhan, Komponen individu TestSuite). Kedua kelas ini menerapkan antarmuka Uji. Metode kunci
jarang diuji, Kesalahan tidak terdeteksi, Isolasi kesalahan sulit dilacak. antarmuka Test adalah run (TestResult) satu sehingga TestCase dan
-- meninggalkan validasi sistem sampai akhir. Karena sejumlah alasan, TestSuite dianggap sebagai tes yang dapat dieksekusi.
sistem mungkin tidak beroperasi dengan benar:
- Antarmuka yang buruk / desain API Kelas TestCase adalah tempat masing-masing unit test didefinisikan.
- Prosedur / fungsi / metode tidak ditulis dengan benar Kelas TestSuite digunakan untuk mengatur unit test.
- Integrasi tidak dilakukan dengan benar Kelas TestDecorator adalah bagian dari ekstensi ke kerangka kerja junit.
- Persyaratan tidak didefinisikan dengan jelas Unit practices : Setting up unit tests, Running unit tests, Writing unit tests
-- Strategi : Print Statements, Debugger Expressions, Test Scripts
2. Unit testing Setiap bagian diuji secara terpisah, Semua komponen
diuji setidaknya satu kali, Kesalahan dijemput sebelumnya, Lingkup lebih
kecil, lebih mudah untuk memperbaiki kesalahan
-- bertujuan untuk menguji setiap komponen yang dibangun sistem.
Ruang lingkup tes unit bahkan lebih kecil dari tes tradisional Anda. Jika
kesalahan terdeteksi, biasanya lebih mudah diperbaiki.
Kelebihan unit testing :
-- Debugging lebih cepat
Unit menguji jumlah kode yang lebih sedikit, dengan mudah mengisolasi
titik kesalahan dan mempersempit cakupan kesalahan.
-- Perkembangan lebih cepat
Kurang waktu debugging dengan unit test Dorong refactoring agresif
sehingga menghasilkan desain yang lebih baik dan perawatan yang lebih
mudah.
-- Desain yang lebih baik
Mendorong lebih banyak refactoring. Tes unit membuat pengembang
lebih fokus pada kontrak kelas dan kelas yang mungkin menggunakannya Method assert adalah suatu method yang akan membantu dalam
-- Alat Regresi yang Bagus menentukan sebuah method yang sedang ditest/diuji berjalan dengan baik
Pengambilan ulang dan restrukturisasi kode dapat dilakukan. atau tidak. Bila sebuah method mengalami kegagalan, eksekusi dari test
-- Kurangi Biaya Masa Depan method tersebut akan dibatalkan sedangkan test untuk method yang
Unit testing investasi dalam proyek. Butuh waktu untuk meningkatkan, lainnya akan tetap berjalan.
tapi dalam jangka panjang memberikan dasar yg berguna untuk proyek. - CUnit : digunakan untuk bahasa C
Simple Standalone Classes - JUnit : digunakan untuk bahasa Java
High Level Classes - VBUnit : digunakan untuk bahasa Basic
Database based Classes - NUnit : digunakan untuk bahasa C# (baca: c-sharp)
Integrated Framework Classes - PHPUnit : digunakan untuk bahasa PHP
JUnit (www.junit.org)
Kelebihan :
Java-based unit testing framework, Elegantly simple, Easy to write unit
tests, Easy to manage unit tests, Open source = Free!, Mature Framework,
De facto java standard, Ant integration, Generic testing framework.
Penjelasan :
- JUnit adalah kerangka pengujian unit berbasis java. (kerangka kerja dan
tes yang akan ditulis di java), memungkinkan pengembang menggunakan
kerangka kerja untuk menulis tes tanpa harus belajar bahasa baru.
- Menjadi standar de facto java juga membantu dalam banyak aspek
lainnya karena lebih banyak IDE mendukung penulisan uji JUnit dan
bahkan pembuatan metode uji kerangka sekarang dapat dihasilkan dengan
cepat dan mudah. Hubungannya yang erat dengan Ant (build management
project) juga membantu.
Kekurangan :
GUI sangat sulit untuk diuji karena kenyataan bahwa umumnya kebutuhan
manusia untuk mendorong proses dan menganalisis hasilnya. (misalnya
orang Marathon, WinRunner).
Komponen EJB juga sulit untuk diuji secara otomatis, selalu sulit menguji
kode kerangka secara generik. Cactus digunakan untuk pengujian EJB /
Servlets / JSP / Tag libs, sementara HttpUnit menyediakan cara mudah
untuk menguji kode unit yang berinteraksi melalui HTTP.
Seperti JUnit diciptakan untuk pengujian unit objek java, tidak ideal untuk
menguji jenis kode lainnya, terutama ditulis dalam bahasa yang berbeda.
Konsep jUnit :
Test interface, Assert, TestCase (assertTrue, assertEquals, fail), TestSuite,
TestDecorator/TestSetup, Failures vs Errors