Ketika sebuah aplikasi yang sudah dibangun akan semakin besar dan logika yang diimplementasikan juga semakin banyak. Maka, tingkat confidence akan semakin rendah jika ingin menambahkan fitur baru.
Dan untuk menjaga fitur lama tetap berjalan semestinya dan performa yang tetap baik menjadi masalah yang sulit untuk dipertahankan.
Software testing adalah salah satu dari engineering practices yang dapat menjadi solusi dalam permasalahan tersebut.
Software testing membuat aplikasi menjadi lebih
predictable dan
traceable.
Dalam pengaplikasiannya software testing terbagi menjadi beberapa tingkatan yaitu :
Quote:
Unit testing
Dalam pemrograman komputer,
unit testingadalah pengujian bagian terkecil dari sebuah code. Dalam pemrograman prosedural unit bisa menjadi modul seluruh tetapi lebih umum fungsi individu atau prosedur.
Dalam pemrograman berorientasi obyek unit sering merupakan seluruh antarmuka, seperti kelas, tetapi bisa menjadi metode individu.
Unit testing dilakukan untuk mengetahui apakah kode yang telah ditulis berfungsi sesuai dengan kehendak dari Programmer.
Unit testing dilakukan setelah Programmer selesai menuliskan suatu kode/fungsi/method yang ada dalam suatu class. Dapat juga dilakukan setelah menambahkan sebuah fungsionalitas baru atau setelah melakukan refactoring.
Unit testing bersifat independen dan isolated. Sebuah method / fungsi dapat dikatakan independen apabila fungsi tersebut tidak bergantung dengan hasil dari fungsi yang lain sedangkan yang dimaksud dengan isolated adalah bahwa fungsi yang di test tidak boleh melakukan akses ke “luar” seperti misalnya mengakses database, file ataupun membutuhkan koneksi jaringan.
Quote:
Integration testing
Integration testing berfungsi menguji kerja sama antara satu fungsi dengan fungsi lainnya dapat menghasilkan output yang benar atau tidak. Proses integration testing tidak hanya dilakukan pada kode program yang dihasilkan oleh satu orang saja, melainkan melibatkan juga kode-kode program yang dibuat oleh Programmer lain.
Quote:
End-to-end testing
End-to-end testingadalah testing yang menyamakan user behaviour dengan aplikasi dengan environment yang sama seperti production. Memastikan berbagai macam user flow berjalan dengan semestinya. Seperti misalnya menguji hal yang sederhana seperti loading screen, menyimpan data ataupun hal yang lebih kompleks lainnya seperti dari login berlanjut sampai selesai transaksi.
End-to-end testing sangat bermanfaat, namun sangat costly. Mengimplementasikannya cukup sulit dan sangat berat untuk di-maintain apalagi jika sudah automated.
Quote:
Acceptance testing
Pengujian terakhir dilakukan secara keseluruhan atau biasa disebut end-to-end testing. Pengujian ini lebih difokuskan pada flow atau behaviour sebuah aplikasi. Pengujian juga bisa dilakukan dengan cara melakukan simulasi nyata penggunaan aplikasi pada environment yang sebenarnya.
Quote:
Smoke testing
Smoke testingdapat diartikan seperti pre-testing. Tes ini harus berjalan dengan sederhana dan cepat. Tujuannya adalah untuk memastikan tes-tes kompleks lain yang akan dijalankan berikutnya dapat berjalan dengan baik, sehingga ketika ada hal major yang rusak dapat terdeteksi diawal.