Meningkatnya penggunaan teknologi dalam setiap aspek kehidupan manusia membutuhkan pengembangan perangkat keras dan perangkat lunak komputer yang membuat teknologi tersebut berfungsi. Perangkat lunak dikembangkan melalui proses yang melelahkan yang melibatkan penulisan ribuan baris kode oleh pengembang. Dalam banyak kasus, kode tersebut mungkin memiliki cacat yang disebut bug yang menghambat fungsi yang seharusnya.
Untuk memperbaiki bug ini, pengembang biasanya perlu menyaring baris kode menggunakan berbagai metode. Proses "debugging" yang melelahkan ini sering kali menghabiskan banyak waktu dan sumber daya, yang menandakan bahwa para programmer membutuhkan proses pengujian yang cepat dan efisien. Sejauh ini, proses yang sangat dibutuhkan ini masih kurang.
Banyak kerangka kerja otomasi pengujian yang digunakan untuk mendeteksi bug terbukti tidak efisien karena pengaturan awal yang sulit, pengujian yang sulit diterapkan, dan pemeliharaannya yang sulit.
Masalah dengan men-debug perangkat lunak
Otomatisasi pengujian tradisional menghadirkan kesulitan karena beberapa alasan. Misalnya, dibutuhkan insinyur berkualifikasi tinggi yang dapat menyiapkan kerangka kerja pengujian dan menulis pengujian otomatis. Dalam hal struktur dan arsitektur, kerangka kerja otomatisasi pada umumnya sangat sulit. Meskipun ada beberapa cara untuk membuat pengujian yang akan memberikan hasil lulus atau gagal, hanya sedikit yang akan memeriksa hal yang benar dan menghasilkan pengujian yang andal.
Masalah lainnya adalah arsitektur framework. Pengujian otomatis tradisional dibuat dari perspektif teknisi dan bukan dari sudut pandang pengguna langsung, karena membutuhkan pemahaman tentang detail implementasi. Alih-alih mereferensikan sebuah elemen seperti yang akan dilihat oleh pengguna, mereka menggunakan id, XPath, atau jenis penunjuk lainnya.
Selain itu, pengujian yang sebelumnya dilakukan secara otomatis jarang ditinjau untuk menentukan apakah pengujian tersebut valid atau menguji hal yang benar karena rumit dan sulit untuk dibaca.
Menariknya, kecerdasan buatan menawarkan cara baru untuk menyelesaikan masalah-masalah ini dalam pengujian perangkat lunak.
Baru-baru ini, para peneliti dari Universitas Manajemen Singapura (SMU) telah menemukan teknik otomatis yang dapat disesuaikan untuk men-debug perangkat lunak. Teknik ini menggabungkan fitur-fitur dari solusi sebelumnya sambil berinovasi dengan solusi baru. Solusi baru ini dapat menyelamatkan para pemrogram dari rasa pusing karena harus menyisir ratusan baris kode untuk menemukan bug yang salah.
Sebuah solusi otomatis
Solusi men-debug otomatis yang baru didasarkan pada AI, dan ditujukan untuk membantu para pengembang untuk melakukan latihan men-debug secara lebih efektif. Salah satu pendekatan yang ditawarkan oleh solusi baru ini memeriksa informasi yang dapat diakses dalam laporan bug. Pendekatan lainnya melihat data yang dikumpulkan dengan melakukan serangkaian kasus uji coba.
David Lo dari Sekolah Sistem Informasi SMU memimpin tim yang mengembangkan solusi ini, yang dinamai Pelokalan Bug Multimodal Adaptif (Adaptive Multimodal Bug Localization - AML). AML mengekstrak petunjuk men-debug dari kasus pengujian dan laporan bug. Hal ini digunakan untuk melakukan analisis statistik untuk mengidentifikasi elemen program yang mungkin bermasalah.
Lo menjelaskan bahwa AML adalah "mata rantai yang hilang" yang akan membantu integrasi berbagai thread pengumpulan informasi.
"Meskipun sebagian besar penelitian sebelumnya hanya menunjukkan penerapan solusi serupa untuk program kecil dan 'bug buatan' [bug yang sengaja disisipkan ke dalam program untuk tujuan pengujian], pendekatan kami dapat mengotomatiskan proses men-debug untuk banyak bug nyata yang berdampak pada program besar," jelas Dr Lo.
Pendekatan kami dapat mengotomatiskan proses men-debug untuk banyak bug nyata yang berdampak pada program-program besar.
DAVID LO, PROFESOR ILMU KOMPUTER DI UNIVERSITAS MANAJEMEN SINGAPURA
AML telah dievaluasi dengan sukses pada program dengan lebih dari 300.000 baris kode. Dengan mengidentifikasi kode yang rusak secara otomatis, pengembang dapat menghemat waktu untuk melakukan debug dan lebih banyak waktu untuk membangun fitur perangkat lunak baru untuk klien.

Kredit: Semantic Scholar
Dr Lo dan rekan-rekannya bermaksud untuk menjangkau berbagai mitra industri untuk memajukan integrasi AML sebagai alat pengembangan perangkat lunak.
Tujuan masa depan Dr Lo termasuk membangun solusi analisis perangkat lunak pada skala Internet. Hal ini akan melibatkan analisis terhadap sejumlah besar informasi yang secara pasif ada di sumber internet yang tak terhitung banyaknya untuk mengubah proses rekayasa perangkat lunak yang manual, sulit, dan rentan terhadap kesalahan menjadi tindakan otomatis yang dapat dieksekusi dengan cepat dan konsisten.
Dr Lo menjelaskan bahwa hal ini dicapai dengan mengekstraksi pengetahuan publik, yang telah diakumulasikan selama bertahun-tahun oleh ribuan pengembang perangkat lunak dari sumber data yang pasif, tersebar, dan beragam.
Terlepas dari solusi inovatif Dr Lo untuk debugging, sejumlah inovasi yang didukung oleh kecerdasan buatan tersedia saat ini untuk memungkinkan para pengembang mendapatkan solusi untuk mengatasi masalah yang disebabkan oleh bug.
Meskipun masih relatif baru, alat otomatisasi pengujian yang disempurnakan dengan AI lebih unggul daripada alat otomatisasi konvensional dalam hampir semua hal. Misalnya, mereka menghemat waktu untuk menyiapkan dan membuat pengujian. Penyiapan awal dengan kerangka kerja otomatisasi pengujian tradisional seringkali membutuhkan waktu mulai dari beberapa hari hingga beberapa minggu.
Akan tetapi, penyiapan pengujian hanyalah permulaan. Menulis pengujian dari awal itu sulit dan dapat memakan banyak waktu. Menggunakan alat pengujian AI seperti testRigor dapat membuat pekerjaan menjadi lebih mudah. Dengan alat ini, penyiapan dasar membutuhkan waktu beberapa menit, dan mengembangkan pengujian otomatis membutuhkan waktu yang sama lamanya dengan menulis langkah-langkah pengujian manual. Pengguna cukup mengacu pada elemen yang terlihat di layar, dan algoritma pembelajaran mesin akan menangani sisanya.
Alat bantu otomatis ini juga memecahkan masalah lain yang dihadapi programmer di berbagai tingkatan, mulai dari ketidakstabilan pengujian hingga kurangnya pemeliharaan yang tepat, sehingga membawa pengalaman otomatisasi ke tingkat yang benar-benar baru. Alat ini dapat mengurangi waktu yang dihabiskan untuk membuat dan memelihara pengujian, dan siapa pun yang memiliki keterampilan pengkodean apa pun dapat dengan mudah membuat pengujian otomatis dengan cakupan yang lebih luas, sehingga membantu mengidentifikasi bug secara lebih efisien dan menghemat biaya.
π¬π§«π§ͺππ€π©βπ¬π¦ ππ
Referensi Jurnal
Hoang, T., Oentaryo, R. J., Le, T.-D. B., & Lo, D. (2019). Network-clustered Multi-Modal Bug Localization. IEEE Transactions on Software Engineering, 45(10), 1002β1023. https://doi.org/10.1109/tse.2018.2810892