Rumah  >  Artikel  >  hujung hadapan web  >  Penjanaan Ujian Unit dengan AI Awal

Penjanaan Ujian Unit dengan AI Awal

Linda Hamilton
Linda Hamiltonasal
2024-10-20 18:32:30353semak imbas

Mempercepatkan Penjanaan Ujian Unit dan Meningkatkan Kualiti Kod

Baru-baru ini, saya berpeluang untuk mendalami Early, ejen AI yang direka untuk penjanaan ujian unit automatik. Sebagai seseorang yang kerap bekerja dengan Rangka Kerja TypeScript dan ExpressoTS, saya ingin melihat cara Early boleh menyelaraskan aliran kerja saya. Saya memutuskan untuk menguji sambungan vscode yang mereka bina pada pustaka NPM baharu saya yang saya bangunkan dipanggil @expressots/share.

Kesan Awal

Perkara pertama yang menarik perhatian saya tentang Awal ialah keupayaannya untuk menjana ujian unit secara automatik untuk pangkalan kod saya yang sedia ada. Daripada membuat ujian dari awal, saya boleh menumpukan pada memperhalusi ujian yang dihasilkan dan meningkatkan keteguhan dan kebolehujian kod saya. Peralihan ini telah mempercepatkan proses pembangunan saya dengan ketara. Aspek menarik lain yang saya perhatikan ialah 83% daripada kod yang dihasilkan saya tidak melakukan sebarang pelarasan, ia berfungsi di luar kotak dan meningkatkan liputan kod saya. Jimat masa saya.

Penjimatan Masa dan Peningkatan Liputan

Dalam masa 8.5 jam sahaja, saya berjaya:

  • Jana ujian unit untuk lebih kurang 3,000 baris kod.
  • Selesaikan isu dan tingkatkan kebolehujian kod.
  • Mencapai jumlah liputan kod sebanyak 88% dengan 96 ujian.

Hakikat bahawa saya boleh mencapai semua ini dalam satu hari adalah luar biasa. Senario yang ideal dalam ujian unit ialah lakukannya semasa anda benar-benar membangunkan fungsi anda. Saya melakukannya selepas fakta bahawa saya sudah mempunyai perpustakaan, jadi beberapa pelarasan diperlukan untuk menjadikan kod itu boleh diuji.

Hasil Positif

Ujian Kes Edge Penjanaan Automatik. Sebagai contoh, ia menghasilkan ujian unit untuk senario yang melibatkan rentetan kosong, walaupun apabila parameter diperlukan:

export function printSuccess(message: string, component: string): void {
  stdout.write(chalk.green(`${message}:`, chalk.bold(chalk.white(`[${component}] ✔️\n`))));
}

Pada mulanya, saya tidak akan mencipta ujian untuk rentetan kosong dalam fungsi yang begitu mudah. Walau bagaimanapun, pendekatan Early menggalakkan amalan pengaturcaraan defensif, mendorong saya untuk mengendalikan kes kelebihan yang mungkin saya terlepas pandang.

Pengesanan Isu Berpotensi

Semasa memperhalusi ujian yang dijana, saya menghadapi masalah jenis tidak padan:

Masalah: jest.fn() mengembalikan mana-mana, tetapi process.exit tidak akan kembali, menyebabkan jenis tidak sepadan dalam TypeScript.
Penyelesaian: Ubah suai olok-olok untuk memadankan tandatangan proses.keluar, memastikan jenis ketepatan.
Penemuan ini mendorong saya untuk melaraskan kod saya untuk keselamatan jenis yang lebih baik, menyerlahkan cara Early boleh membantu mengenal pasti isu halus yang mungkin tidak disedari.

Bidang untuk Penambahbaikan

Walaupun pengalaman positif keseluruhannya, saya menghadapi beberapa cabaran yang, jika ditangani, boleh meningkatkan kebolehgunaan Awal:

  • Keserasian Versi Perpustakaan. Ujian awal yang dijana menggunakan kaedah Jest yang ditamatkan dalam beberapa kes, contohnya:

Menggunakan Jest 29.7

expect(Compiler.loadConfig()).rejects.toThrowError("process.exit() was called with code 1");

// Versi diperbetulkan

export function printSuccess(message: string, component: string): void {
  stdout.write(chalk.green(`${message}:`, chalk.bold(chalk.white(`[${component}] ✔️\n`))));
}
  • Pilihan Penyesuaian untuk Penjanaan Ujian Walaupun menjana ujian untuk kes tepi bermanfaat, dalam sesetengah senario, ia mungkin tidak perlu:

Pemerhatian: Menjana ujian untuk setiap input yang mungkin, termasuk rentetan kosong, kadangkala boleh berlebihan.

Cadangan: Memperkenalkan pilihan untuk menyesuaikan tahap penjanaan ujian, membenarkan pembangun ikut serta untuk ujian pengaturcaraan defensif mengikut keperluan.

  • Peningkatan Antara Muka Pengguna dalam Sambungan VSCODE Menavigasi antara alat Awal dan alat lain menyerlahkan beberapa had UI:

Keterlihatan Keputusan Ujian: Saya terpaksa bertukar antara Awal dan Jest untuk melihat ujian yang lulus atau gagal.

Keadaan Pokok Fail: Hierarki projek dalam Awal runtuh apabila beralih kembali daripada aplikasi lain, memerlukan saya membuka semula folder berulang kali.
Cadangan: Tingkatkan UI untuk memaparkan keputusan ujian dalam Early, mencerminkan struktur Jest. Mengekalkan keadaan pepohon fail juga akan meningkatkan pengalaman pengguna.

Unit Test Generation with Early AI

  • Keselamatan Mengejek dan Menaip Isu dengan jest.fn() mengembalikan sebarang menunjukkan keperluan untuk mengejek yang lebih tepat:

Pemerhatian: Menggunakan sebarang jenis dalam olok-olok boleh menyebabkan ketidakpadanan taip dan berkemungkinan menutup pepijat.
Cadangan: Perhalusi penjanaan olok-olok untuk menggunakan tandatangan yang tepat, mempromosikan keselamatan jenis yang lebih baik dan mengurangkan keperluan untuk pembetulan manual.

Kesimpulan

Secara keseluruhan, pengalaman saya dengan Early sangat positif. Alat ini mempercepatkan proses ujian unit saya dengan ketara, membolehkan saya menumpukan pada menapis ujian daripada menulisnya dari awal. Ia juga menggalakkan saya untuk mempertimbangkan kes tepi dan meningkatkan keteguhan kod saya.

Bidang untuk penambahbaikan agak kecil dan berkisar pada meningkatkan kebolehgunaan dan penyesuaian. Menangani perkara ini akan menjadikan alat ini lebih berkuasa dalam pembangunan perisian.

Terima kasih kepada pasukan Awal atas kerja cemerlang mereka! Saya teruja untuk melihat cara alat ini berkembang dan berbesar hati untuk terus memberikan maklum balas untuk membantu memperhalusinya dengan lebih lanjut.

Atas ialah kandungan terperinci Penjanaan Ujian Unit dengan AI Awal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Bina Tiny React Chpdating vDOMArtikel seterusnya:Bina Tiny React Chpdating vDOM