1 poin oleh GN⁺ 2024-02-25 | 1 komentar | Bagikan ke WhatsApp

Generator pengujian berbasis LLM baru dari Meta memberi peluang untuk mengintip masa depan pengembangan

  • Meta menerbitkan makalah berjudul "Automated Unit Test Improvement using Large Language Models at Meta".
  • Makalah ini menunjukkan cara menggunakan AI untuk mempercepat pengembangan dan mengurangi bug perangkat lunak.
  • Dengan mengintegrasikan LLM ke dalam alur kerja pengembang, pendekatan ini mengusulkan perbaikan perangkat lunak yang akurat dan lengkap untuk meningkatkan code coverage saat ini.

Poin utama

  • TestGen-LLM menggunakan pendekatan 'Assured LLM-based Software Engineering' (Assured LLMSE).
  • Pendekatan ensemble digunakan untuk menghasilkan usulan perbaikan kode dengan beberapa LLM, prompt, dan hyperparameter, lalu memilih perbaikan terbaik.
  • TestGen-LLM dirancang khusus untuk meningkatkan test yang sudah ditulis manusia.

Statistik

  • Dalam evaluasi produk Reels dan Stories di Instagram, 75% test case yang dihasilkan TestGen-LLM berhasil dibuild, 57% lulus secara andal, dan 25% meningkatkan coverage.
  • TestGen-LLM mampu memperbaiki 10% dari semua class yang diterapkan, dan pengembang menerima 73% usulan perbaikan test lalu menerapkannya ke production.
  • Dalam "test-a-thon" untuk membuat test guna meningkatkan test coverage Instagram, median jumlah baris kode yang ditambahkan oleh test TestGen-LLM adalah 2,5.

Insight yang bisa diterapkan

  • Ini adalah contoh yang baik tentang bagaimana LLM dapat digunakan untuk secara efisien meningkatkan produktivitas pengembangan dan keandalan perangkat lunak.
  • Nilai sejati LLM ada pada kemampuannya menemukan dan menangkap edge case yang tak terduga.
  • Untuk menggunakan LLM di production, diperlukan orkestrasi, pipeline, dan pemrosesan.

Cara kerja TestGen-LLM

  • TestGen-LLM menerapkan serangkaian filter semantik pada kandidat solusi yang dihasilkan oleh LLM internal Meta, sehingga hanya test yang paling bernilai yang dipertahankan.
  • Filter 1: kemungkinan build, Filter 2: eksekusi (apakah test lulus), Filter 3: ketidakstabilan, Filter 4: peningkatan coverage.
  • Filter pemrosesan ini menjamin peningkatan pada test suite.

Kesimpulan

  • Makalah ini adalah cara yang baik untuk melacak kemajuan LLM di ranah keandalan perangkat lunak, sesuatu yang sudah banyak pengembang lakukan dengan memanfaatkan LLM.
  • LLM akan semakin mampu menemukan bug dan melakukan pengujian pada sistem perangkat lunak yang makin kompleks.

Opini GN⁺

  • Artikel ini memberikan wawasan menarik tentang bagaimana kecerdasan buatan dapat memengaruhi masa depan pengembangan perangkat lunak.
  • Alat seperti TestGen-LLM dapat sangat membantu dalam mengotomatisasi pekerjaan pengembang dan meningkatkan efisiensi.
  • Perkembangan teknologi seperti ini bergerak ke arah pengurangan kompleksitas pengembangan perangkat lunak, peningkatan kualitas, dan penghematan waktu pengembang.

1 komentar

 
GN⁺ 2024-02-25
Komentar Hacker News
  • Ada pendapat bahwa menarik jika penulisan kode pengujian dengan LLM (model bahasa besar) cenderung didahulukan daripada implementasi. Karena pengujian berperan menjelaskan bagaimana sistem seharusnya bekerja, ada sudut pandang bahwa bagian ini harus didefinisikan oleh manusia. Namun, LLM dapat berguna untuk menunjukkan area yang belum dijelaskan secara eksplisit, dan mengusulkan unit test untuk area-area tersebut mungkin merupakan cara penggunaan LLM yang tepat.
  • Ada kritik terhadap posting blog yang menyebut bahwa sebagian besar test case yang dihasilkan Meta TestGen-LLM hanya menambah cakupan sebesar 2,5 baris kode, tetapi satu test case mencakup hingga 1326 baris. Ini merupakan kasus yang sangat luar biasa, dan makalah tersebut sendiri menjelaskan bahwa sebagian besar test case memiliki cakupan kode yang jauh lebih rendah daripada yang diharapkan. Penulis makalah menyebutnya sebagai "jackpot" dan dengan jelas menyatakan bahwa hasil seperti itu tidak umum.
  • Ada pendapat bahwa menulis pengujian yang baik itu sulit. Cakupan kode tidak selalu berarti baik, dan menulis terlalu banyak pengujian dapat membuat program menjadi kaku. Menggunakan LLM untuk meregenerasi pengujian mungkin tampak seperti kemajuan, tetapi pada akhirnya itu bisa jadi tidak lebih dari membuat program pendeteksi perubahan.
  • Ada penunjukan bahwa ringkasan makalah tentang TestGen-LLM tidak sesuai dengan isi sebenarnya. Ringkasan makalah menyebut tingkat keberhasilan untuk test case, tetapi laporan aslinya membahas tingkat keberhasilan untuk test class, dan itu adalah pernyataan yang sangat berbeda. Di bagian kesimpulan pun perbedaan ini disampaikan secara keliru.
  • Ada simpati untuk para pengembang masa depan yang harus memelihara kode yang dihasilkan LLM. Ada kekhawatiran bahwa kode seperti ini akan sulit dikelola.
  • Ada kekhawatiran bahwa kode pengujian yang dihasilkan LLM dapat menciptakan lingkungan yang tidak ramah bagi pengembang. Bisa muncul situasi di mana kode pengujian hasil LLM yang sulit dikelola harus disetujui setiap saat. Penulisan pengujian mungkin bisa dipercepat, tetapi perawatannya belum tentu menjadi lebih mudah. Pengujian membantu meninjau desain kode, dan jika pengujian tidak mudah ditulis, mungkin desainnya memang tidak baik. Pengujian memberi rasa aman otomatis dan membantu mencegah potensi kesalahan, tetapi semakin tinggi cakupannya, semakin kecil manfaat tambahan dibanding investasi yang dikeluarkan. LLM hanya bisa menghemat waktu jika pengembang berpengalaman sudah tahu apa yang harus diuji.
  • Ada pengalaman menggunakan GPT-4 untuk menghasilkan unit test bagi modul TypeScript, dan hasilnya adalah pengujian yang benar-benar berfungsi.
  • Ada pertanyaan tentang bagaimana AI bisa tahu pengujian seperti apa yang harus ditulis. Cara terbaik AI membantu pengembangan perangkat lunak mungkin adalah dengan memberikan jawaban saat programmer mengajukan pertanyaan tentang kode, kadang disertai saran kode dan kadang tidak. AI seharusnya bisa membantu memahami kode dan cara memperbaikinya.
  • Ada pendapat bahwa opini tentang kode AI tidak akan bernilai tanpa pengalaman praktis menggunakan alat yang nyata dan meninjau keluarannya pada codebase yang benar-benar dipahami. Kode AI adalah topik yang sangat politis, dan banyak orang memiliki opini yang kuat. Namun, ada keinginan untuk benar-benar mencobanya. Karena biaya pengembangan teknologi ini sangat tinggi, akan sulit membenarkan biayanya jika alat AI tidak mengalami peningkatan besar. Meski begitu, tetap ada optimisme tentang apa yang bisa dicapai di masa depan.
  • Tersedia tautan ke ringkasan audiobook untuk makalah tersebut.