Testing (Pengujian Aplikasi)

Ahmad Firdaus
Ecomindo Management
4 min readJan 17, 2023

Testing merupakan proses yang dilakukan untuk mengevaluasi kualitas suatu aplikasi atau software dengan tujuan untuk menemukan dan memperbaiki kesalahan atau bug yang ada. Dalam pengembangan aplikasi, testing memiliki beberapa tujuan penting, diantaranya:

  • Memastikan bahwa aplikasi dapat digunakan dengan baik oleh pengguna akhir.
  • Memastikan bahwa aplikasi dapat bekerja sesuai dengan spesifikasi yang ditentukan.
  • Memastikan bahwa aplikasi dapat bekerja dengan baik di lingkungan yang berbeda.
  • Memastikan bahwa aplikasi dapat digunakan dengan aman dan tidak memiliki kerentanan keamanan yang berbahaya.

Ada berbagai jenis testing yang dapat dilakukan dalam pengembangan aplikasi, yaitu Unit Test, Static Code Analysis, Integration Test, Compatibility Test, Performance/Load/Stress Test, dan Penetration Test.

Unit Test

Unit test merupakan jenis testing yang dilakukan pada unit-unit terkecil dari suatu aplikasi, seperti method atau fungsi. Tujuan dari unit test adalah untuk memastikan bahwa setiap unit dari aplikasi dapat bekerja sesuai dengan yang diharapkan. Unit Test sebaiknya dilakukan sendiri oleh programmer, sedangkan analyst atau QA membantu melengkapi test-scenario dan melakukan review terhadap test yang sudah dilakukan programmer. Sebaiknya tidak menjadikan Analyst atau QA sebagai first-time tester, karena hal ini akan menyebabkan perbaikan bugs menjadi tidak efisien dan menambah waktu pengembangan. Library yang banyak digunakan untuk unit test adalah JUnit dan NUnit.

Static Code Analysis

Static code analysis adalah proses analisis kode sumber tanpa mengeksekusi kode tersebut. Tujuan dari static code analysis adalah untuk menemukan potensi masalah seperti kerentanan keamanan, kesalahan logika, dan masalah performa sebelum aplikasi dijalankan. Tools yang banyak digunakan untuk static code analysis adalah SonarQube.

Integration Test

Integration test merupakan jenis testing yang dilakukan untuk memastikan bahwa berbagai unit dari aplikasi dapat bekerja sama dengan baik. Tujuan dari integration test adalah untuk menemukan masalah yang muncul ketika berbagai unit dari aplikasi diintegrasikan menjadi satu kesatuan. Aplikasi yang banyak digunakan untuk integration test adalah Selenium, Katalon, Appium, dan Testproject.

Compatibility Test

Compatibility test merupakan jenis testing yang dilakukan untuk memastikan bahwa aplikasi dapat bekerja dengan baik di lingkungan yang berbeda, seperti perangkat keras dan perangkat lunak yang berbeda. Layanan yang banyak digunakan untuk compatibility test adalah Browserstack, Katalon, Tricentis Tosca.

Performance/Load/Stress Test

Performance test, load test, dan stress test merupakan jenis testing yang dilakukan untuk memastikan bahwa aplikasi dapat bekerja dengan baik dalam kondisi yang berbeda. Perbedaan di antara performance test, load test, dan stress test adalah sebagai berikut:

  • Performance test dilakukan untuk mengevaluasi kinerja aplikasi dalam kondisi normal. Tujuan dari performance test adalah untuk menemukan masalah performa sebelum aplikasi dijalankan oleh pengguna akhir. Contoh: menguji respon time API dalam menangani 100, 200, dan 300 concurrent-users.
  • Load test dilakukan untuk mengevaluasi kinerja aplikasi ketika beban yang diterima aplikasi melebihi kapasitas normal atau mencapai kapasitas maksimal. Tujuan dari load test adalah untuk menemukan masalah performa ketika aplikasi digunakan oleh banyak pengguna. Contoh: ditetapkan bahwa suatu API harus mampu menangani 500 concurrent-users dalam waktu kurang dari 3 detik. Maka tester memberikan beban 500 concurrent-users dan membandingkan apakah responnya kurang dari 3 detik atau tidak.
  • Stress test dilakukan untuk mengevaluasi kinerja aplikasi ketika beban yang diterima melebihi kapasitas maksimal aplikasi. Tujuan dari stress test adalah untuk menemukan masalah performa ketika aplikasi digunakan dalam kondisi ekstrem. Contoh: ditetapkan bahwa suatu API harus mampu menangani 500 concurrent-users dalam waktu kurang dari 3 detik. Setelah diuji, ternyata 500 concurrent-users dapat ditangani dalam 2,3 detik. Lalu dilakukan stress-test untuk mengetahui, berapa maksimal concurrent-users yang dapat ditangani dalam waktu maksimal 3 detik. Dan didapatkan jumlahnya adalah 800 concurrent-users.

Tools yang banyak digunakan untuk performance test adalah JMeter.

Penetration Test

Penetration test merupakan jenis testing yang dilakukan untuk mengevaluasi keamanan aplikasi dari serangan eksternal. Tujuan dari penetration test adalah untuk menemukan kerentanan keamanan yang mungkin digunakan oleh penyerang untuk mengakses atau merusak aplikasi. Aplikasi yang banyak digunakan penetration test adalah Metasploit, WireShark, dan Burp Suite.

Automated Test

Pengujian otomatis (automated test) adalah praktik penggunaan perangkat lunak untuk menjalankan pengujian di komputer, alih-alih melakukannya secara manual. Ada beberapa alasan mengapa pengujian otomatis penting dan bermanfaat:

  • Kecepatan: Proses testing oleh mesin dapat berjalan jauh lebih cepat.
  • Konsistensi: Semua langkah dapat dipastikan sama.
  • Reliable: Testing dapat dijalankan kapan saja, dalam kondisi apapun.
  • Cakupan: Karena cepat dan mudah, maka lebih banyak skenario yang dapat ditest.
  • Reusable: Testing dapat dilakukan berulang-ulang tanpa menghabiskan energi.
  • CI/CD: Proses testing dapat dilakukan bersamaan dengan build-pipeline, sehingga memastikan aplikasi yang di-check-in sudah memenuhi kriteria yang diharapkan.

Penutup

Testing merupakan proses penting dalam pengembangan aplikasi yang membantu untuk menemukan dan memperbaiki kesalahan atau bug yang ada. Menerapkan praktik testing secara menyeluruh akan meningkatkan kualitas aplikasi dengan mencegah terjadinya masalah di production, sehingga dapat mengurangi resiko bisnis secara keseluruhan.

--

--