Audit Ujian Dijana AI: Separuh daripada CI Hijau Tidak Membuktikan Apa-apa
Ujian yang lulus terasa seperti bukti. Kebiasaannya ia tidaklah sebanyak yang anda sangka.
Satu ujian menegaskan bahawa kod melakukan apa yang dijangkakan oleh ujian tersebut. Jika penulis yang sama menulis kod dan jangkaan tersebut, jangkaan itu akan dibentuk oleh kod itu sendiri. Ujian tersebut lulus kerana ia ditulis untuk lulus.
Tanda semak hijau membuktikan ujian anda selari dengan kod. Ia tidak membuktikan kod itu betul.
Masalah ini semakin membesar apabila ejen AI menghantar keseluruhan pull request. Mereka menulis pelaksanaan dan ujian dalam satu masa. Tanda semak tersebut tidak menjadi lebih dipercayai apabila penulisnya berubah.
Saya membina mirror_audit.py untuk mencari jurang ini. Ia membaca sumber ujian menggunakan AST. Ia tidak pernah menjalankan kod tersebut. Ia mencari tiga corak biasa:
- The Recompute: Ujian menggunakan formula yang sama dengan kod. Ia hanyalah
f(x) == f(x)dalam penyamaran. - The Golden Literal: Ujian menggunakan nombor yang disalin daripada larian sebelumnya. Ia mengunci ujian kepada apa sahaja yang dilakukan oleh kod pada hari pertama, termasuk pepijat (bugs).
- The Smoke Test: Ujian menyemak jika hasil bukan
Nonetetapi kekurangan assertion yang sebenar.
Saya menjalankan ini terhadap dua suite.
Suite pertama direka untuk mencerminkan pelaksanaan. Ia mencatatkan mirror-ratio sebanyak 50.0%. CI gagal. Separuh daripada ujian tersebut tidak membawa sebarang isyarat bebas.
Suite kedua adalah jujur. Ia menggunakan kes negatif dan jangkaan bebas. Ia mencatatkan 0.0%. CI lulus.
Mirror-ratio tidak mengukur kadar pepijat anda. Ia mengukur kekurangan isyarat bebas. Ia memberitahu anda sejauh mana CI hijau anda hanyalah suite yang sekadar mengangguk setuju dengan kod tersebut.
Jika ujian mengira hasil yang rosak yang sama dengan pelaksanaan, ujian tersebut kekal hijau. Jika ujian menegaskan kontrak yang sebenar, ujian tersebut akan bertukar merah dan mengesan pepijat.
Berhenti melihat coverage sahaja. Tanya sama ada ujian anda benar-benar boleh gagal atas sebab yang nyata.
Source: https://dev.to/alex_spinov/audit-ai-generated-tests-half-of-green-ci-proves-nothing-4bmb
Optional learning community: https://t.me/GyaanSetuAi
