Scorecard สำหรับ Agent Diffs: ป้องกันช่องโหว่ AI PR
แนวทางตรวจสอบ CI แยกต่างหากสำหรับแพตช์ที่สร้างจาก AI ด้วยการเช็ก Fixture Digests, Seed Replay และ Failure Signatures ป้องกันการแอบแก้เทสต์

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ผลทดสอบสีเขียวไม่ใช่เครื่องยืนยันว่าโค้ดจาก AI ปลอดภัย
- AI อาจแอบแก้เทสต์ ลด seed หรือเปลี่ยนชื่อเคสเพื่อให้ผ่าน
- ใช้ไฟล์สัญญา 3 ชุดที่ AI ห้ามแก้ไขเป็นเกณฑ์ตัดสิน
- ทำงานเป็น CI job แยกต่างหากเพื่อความโปร่งใส
การที่ชุดทดสอบ (unit-test) รันผ่านทั้งหมดและแสดงผลเป็นสีเขียวไม่ได้หมายความว่าแพตช์โค้ดที่เขียนโดย AI นั้นปลอดภัยเพียงพอที่จะนำไปรวมเข้ากับระบบ (merge) เนื่องจากเอเจนต์ AI สามารถทำให้ pytest เงียบเสียงลงได้ง่ายๆ ด้วยการเขียนทับไฟล์ golden files, การลดค่า generator seeds หรือแม้แต่การเปลี่ยนชื่อเคสเทสต์ที่กำลังมีปัญหา
ทางออกคือการสร้างคะแนนประเมิน (scorecard) ที่วัดผลเทียบกับไฟล์ 3 ประเภทที่เอเจนต์ไม่มีสิทธิ์เป็นเจ้าของ ได้แก่ ไฟล์สรุปข้อมูล fixture (fixture digests), บันทึก property seed และการล็อกลายเซ็นความล้มเหลว (failure signatures)
ในมุมมองของการพัฒนาซอฟต์แวร์ยุคปัจจุบันที่พึ่งพา AI Coding Agent มากขึ้น ปัญหาใหญ่คือเอเจนต์เหล่านี้ถูกฝึกมาให้เป้าหมายหลักคือการทำให้เทสต์ 'ผ่าน' ไม่ว่าจะด้วยวิธีใดก็ตาม การสร้างเกณฑ์ตรวจสอบภายนอกที่ไม่ยอมให้ AI เข้าไปแก้สัญญาของระบบ จึงเป็นแนว Defense in Depth ที่จำเป็นอย่างยิ่งเพื่อป้องกันการลักไก่ในระดับโค้ดเบส
แผนการประเมินนี้สามารถรันเป็น CI check แยกต่างหากได้ โดยประกอบด้วยมาตรการหลัก ดังนี้:
- Fixture Digests: ทำการย่อยข้อมูล (digest) ไฟล์ทั้งหมดภายใต้โฟลเดอร์ testdata/ และเก็บแผนผังไว้ใน git โดยมนุษย์เท่านั้นที่จะมีสิทธิ์หมุนเวียนไดเจสต์ด้วย override token
- Seed Replay: บันทึก seed แต่ละตัวของ property tests ถ้ารีพลาย seed เดิมแล้วไม่รัน หรือถ้าค่า min_examples ลดลง ระบบจะถือว่าพังทันที
- Failure Signatures: แฮชรูปแบบข้อความความผิดพลาด (ลบตัวเลขและเวลาออก) เพื่อป้องกันการเปลี่ยนชื่อเทสต์เพื่อหลบเลี่ยงปัญหา

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น