Unit Testing dan Integration Testing
Pendahuluan
Sebenarnya banyak sekali jenis dari Software Testing, misalnya :
- Unit testing
- Integration testing
- Smoke testing
- Regression testing
- Stress testing
- Sanity testing
- Security testing
- Gorilla testing
- Performance testing
- White Box testing
- dll
Akan tetapi kita sebagai Software Engineer, biasanya akan fokus kepada testing yang bersifat fungsional, seperti Unit Testing, dan Integration Testing
Kita akan coba melihat kedua jenis test ini :
1. Unit Tests
Unit test artinya ya untuk mengetes sebuah Unit.., piye toh Bambang…
Unit test kita lakukan untuk mengetes sebuah class atau unit terkecil code/program kita.
Tujuannya tentu saja untuk memastikan bahwa Input, Proses, dan Output dari fungsi-fungsi yang ada di class kita tersebut sesuai dengan requirement.
Apa persyaratan dari Unit testing ini :
- Unit test seharusnya singkat dan tidak tergantung dari banyak objek.
- Unit test harus fokus untuk mengetes hanya satu unit class saja.
- Unit test semestinya tidak melakukan interaksi langsung dengan class atau objek lain, seperti menginisiasi objek lain, koneksi ke database, koneksi I/O, dll.
- Ketika dijalankan, Unit Test seharusnya ringan dan tidak butuh banyak library atau objek tambahan.
- Ketika dijalankan, Unit Test seharusnya cepat dan tidak memakan waktu banyak.
- Untuk mengisolasi class atau unit lain yang terlibat dalam sebuah class, maka biasanya digunakan objek Mock,Spy,atau Stub
Framework yang terkenal untuk Unit testing di Java misalnya JUnit, dan TesNG.
Untuk javascript, biasanya Jasmine, Karma dll
2. Integration Tests
Integration test artinya testing untuk mengecek integrasi antara banyak class atau unit yang terlibat dalam sebuah alur proses.
Tujuannya tentu saja untuk memastikan bahwa alur proses berjalan secara sempurna. Biasanya untuk memastikan konfigurasi integrasi sudah sesuai dengan yang diharapkan atau tidak.
Apa persyaratan dari Unit testing ini :
- Integration test seharusnya dilakukan dengan konsep otomatis, atau menggunakan framework karena banyak kombinasi Unit yang terlibat dalam testingnya ini.
- Integration test fokus untuk mengetes alur proses dan konfigurasi integrasi.
- Integration test bisa saja melakukan interaksi langsung dengan class atau objek lain, seperti menginisiasi objek lain, koneksi ke database, koneksi I/O, dll.
- Ketika dijalankan, Integration Test bisa saja butuh waktu lama, dan pastinya lebih lama dari Unit Test.
Framework yang terkenal untuk Integration testing di Java misalnya Spock, SpringBootTest.
Untuk javascript, biasanya Jasmine, Protractor (untuk Angular), dll.