CCA · Foundations

ระดับความรุนแรงที่นิยามด้วยตัวอย่างโค้ดจริง

แนวคิด

พอระบบรายงานปัญหาได้แล้ว คำถามถัดมาคือปัญหานั้นรุนแรงแค่ไหน critical, high, medium หรือ low ถ้าปล่อยให้โมเดลตีความคำเหล่านี้เอง ผลจะไม่คงเส้นคงวา เพราะ "critical" ในใจโมเดลรอบนี้อาจไม่เท่ากับรอบหน้า สิ่งที่ทำให้การจัดระดับสม่ำเสมอคือการนิยาม severity แต่ละระดับด้วยเกณฑ์ชัดเจน พร้อมตัวอย่างโค้ดที่เป็นรูปธรรมสำหรับแต่ละระดับ

นี่คือหลัก "be clear and direct" ผสมกับ "use examples" ที่เอกสารแนะนำ แทนที่จะบอกแค่ชื่อระดับ ให้แสดงตัวอย่างว่าโค้ดแบบไหนคือ critical แบบไหนคือ low เมื่อโมเดลเห็นตัวอย่างที่ทีมถือว่าเป็นแต่ละระดับ มันจะจับคู่ปัญหาใหม่กับระดับได้ตรงเจตนามากขึ้น

ทำไมสำคัญ

ปัญหาของการจัดระดับที่ไม่มีเกณฑ์คือ severity กลายเป็นเรื่องอารมณ์ บั๊กเดียวกันอาจถูกติดป้าย high ในไฟล์หนึ่งแต่ medium ในอีกไฟล์ ทำให้ทีมเรียงลำดับงานไม่ได้ และเมื่อจัดระดับมั่ว คนก็ไม่เชื่อป้าย severity อีกต่อไป วนกลับไปสู่ปัญหา trust เดิม

การนิยามด้วยตัวอย่างโค้ดจริงแก้ตรงจุดนี้ เพราะตัวอย่างสื่อเจตนาได้แม่นกว่าคำอธิบายเป็นร้อยคำ เช่น การบอกว่า critical คือ "SQL injection ที่รับ input ผู้ใช้ตรงเข้า query" พร้อมโชว์ snippet จริง ชัดกว่าการเขียนว่า "ปัญหา security ที่ร้ายแรง" มาก โมเดลจึงมีจุดอ้างอิงที่จับต้องได้

หลักนี้ต่อยอดจากบทเรื่องเกณฑ์ชัดเจนโดยตรง บทก่อนบอกว่า "รายงานอะไร" บทนี้บอกว่า "รายงานแล้วให้น้ำหนักเท่าไร" ทั้งสองใช้กลไกเดียวกันคือเปลี่ยนคำกำกวมให้เป็นนิยามที่วัดได้ และเมื่อจับคู่ severity กับ structured output ที่เป็น enum เช่น field ชื่อ severity ที่รับได้แค่ค่าที่กำหนด โมเดลจะถูกบังคับให้เลือกจากระดับที่นิยามไว้เท่านั้น ลดการประดิษฐ์ป้ายใหม่ขึ้นมาเอง

ตัวอย่าง

severity criteria พร้อมตัวอย่างโค้ด:

critical — ช่องโหว่ที่ทำให้ระบบถูกยึด / ข้อมูลรั่ว
  ตัวอย่าง: query = "SELECT * FROM users WHERE id = " + req.params.id
            (SQL injection รับ input ตรง)

high — บั๊กที่ทำให้ผลลัพธ์ผิดในเส้นทางหลัก
  ตัวอย่าง: total += item.price   // ลืมคูณ item.quantity

medium — ปัญหาที่มีทางเลี่ยง หรือกระทบ edge case
  ตัวอย่าง: ไม่จัดการกรณี array ว่างก่อน reduce

low — เรื่อง style หรือความอ่านง่าย ไม่กระทบพฤติกรรม
  ตัวอย่าง: ตั้งชื่อตัวแปร x แทนชื่อที่สื่อความหมาย

การมีตัวอย่างจริงต่อระดับ ทำให้โมเดลจัดปัญหาใหม่เข้าระดับได้ตรงกันในทุกรอบ ไม่ใช่ตีความชื่อระดับเอาเอง

เช็คความเข้าใจ

ทำไมการนิยาม severity ด้วยตัวอย่างโค้ดจริงจึงให้ผลสม่ำเสมอกว่าการบอกแค่ชื่อระดับ

การจับ severity เข้ากับ structured output แบบ enum ช่วยอะไร

อ่านต่อ