𝗣𝗿𝗼𝗺𝗽𝘁 𝗘𝗻𝗴𝗶𝗻𝗲𝗲𝗿𝗶𝗻𝗴 𝗳𝗼𝗿 𝗦𝘆𝗻𝘁𝗵𝗲𝘁𝗶𝗰 𝗗𝗮𝘁𝗮
การใช้ LLM เพื่อสร้างข้อมูลสังเคราะห์ (synthetic data) เป็นกลยุทธ์ที่ได้รับความนิยมสำหรับทีม QA คุณสามารถสร้างข้อมูลที่ซับซ้อนได้หลายร้อยรายการภายในไม่กี่วินาที
แต่การใช้ prompt แบบทั่วไปจะนำไปสู่กับดัก หากคุณสั่ง LLM ว่า "สร้างผู้ใช้สำหรับทดสอบ 50 คน" คุณจะได้ข้อมูลที่คาดเดาได้และซ้ำซาก สิ่งนี้สร้างความรู้สึกผิดว่าครอบคลุมการทดสอบแล้ว (false sense of coverage) คุณจะได้ข้อมูลจำนวนมากที่ทดสอบเพียงแค่ "happy path" แต่กลับพลาดกรณีขอบเขต (edge cases) และตรรกะทางธุรกิจ (business logic) ที่สำคัญไป
เพื่อแก้ไขปัญหานี้ คุณต้องเปลี่ยนบทบาทจากการเป็นเพียง "ผู้สั่ง" (requester) มาเป็น "ผู้ควบคุม" (orchestrator) คุณจำเป็นต้องนำหลักการทดสอบมาประยุกต์ใช้กับการทำ prompt engineering โดยตรง
ใช้ 3 รูปแบบนี้เพื่อเพิ่มคุณภาพของข้อมูลของคุณ:
- การแบ่งกลุ่มข้อมูลที่เทียบเท่ากันและการวิเคราะห์ค่าขอบเขต (Equivalence Partitioning and Boundary Value Analysis) แทนที่จะขอข้อมูลโดยตรง ให้บังคับให้ LLM วางแผนกลุ่มการทดสอบ (test classes) ออกมาก่อน โดยใช้เทคนิค Chain-of-Thought prompting
- กำหนดบทบาทของคุณเป็น Senior QA Engineer
- ระบุเงื่อนไขทางธุรกิจที่เฉพาะเจาะจง (เช่น ขีดจำกัดของคูปอง หรือยอดใช้จ่ายขั้นต่ำ)
- สั่งให้ LLM แสดงรายการ equivalence classes ทั้งแบบที่ถูกต้อง (valid) และไม่ถูกต้อง (invalid) ในรูปแบบตาราง
- กำหนดให้สร้าง JSON payload เพียงหนึ่งรายการต่อหนึ่งสถานการณ์ที่ระบุไว้
วิธีนี้จะช่วยให้คุณทดสอบจุดเปลี่ยนผ่านที่แม่นยำ เช่น $99.99 เทียบกับ $100.00 โดยไม่ต้องเสียพื้นที่ไปกับข้อมูลที่ซ้ำซ้อน
- การทดสอบการเปลี่ยนสถานะ (State Transition Testing) สำหรับระบบอย่างขั้นตอนการชำระเงิน (payment flows) หรือการจัดการคำสั่งซื้อ (order management) ข้อมูลจะต้องสะท้อนถึงขั้นตอนต่างๆ ของวงจรชีวิต (lifecycle)
- ระบุรายการสถานะที่เป็นไปได้ทั้งหมด (เช่น Created, Paid, Shipped, Delivered)
- สั่งให้ LLM สร้างไฟล์ CSV ที่ครอบคลุม State Transition Matrix
- กำหนดให้สร้าง flow 3 ประเภท: Linear (แบบปกติ/ถูกต้อง), Exception (แบบผิดปกติ/เบี่ยงเบน), และ Violation (แบบผิดเงื่อนไข/การเปลี่ยนสถานะที่ไม่ถูกต้อง)
- ตั้งกฎให้สร้างเพียงหนึ่งแถวต่อหนึ่งการผสมผสานสถานะที่ไม่ซ้ำกัน
วิธีนี้จะช่วยป้องกันข้อมูลซ้ำซ้อนและบังคับให้เกิดการสร้างกรณีทดสอบเชิงลบ (negative test cases)
- การควบคุมความหลากหลายและการใช้ Negative Prompting LLM มักจะสร้างข้อมูลที่มีลักษณะเหมือนๆ กัน (homogeneous) เช่น การใช้ภูมิภาคหรือกลุ่มอายุเดิมๆ ให้ใช้ Negative Prompting เพื่อหยุดปัญหานี้
- กำหนดข้อกำหนดที่ชัดเจนสำหรับการกระจายตัวของข้อมูล (เช่น ช่วงอายุหรือภูมิภาคทางภูมิศาสตร์ที่เฉพาะเจาะจง)
- เพิ่มส่วน "ข้อห้าม" (PROHIBITIONS)
- สั่งห้ามใช้ชื่อทั่วไป เช่น "John Doe" อย่างชัดเจน
- ห้ามใช้การผสมผสานของตัวแปรเดิมซ้ำๆ
- ห้ามใช้หมายเลข ID ที่เรียงลำดับกันหรือซ้ำกัน
วิธีนี้จะช่วยขจัดความลำเอียง (bias) และทำให้มั่นใจว่าระบบหลังบ้าน (backend) ของคุณสามารถรองรับข้อมูลที่หลากหลายและสมจริงได้
ความเร็วของ AI จะมีคุณค่าก็ต่อเมื่อข้อมูลของคุณถูกกำหนดมาอย่างมีจุดประสงค์เท่านั้น บทบาทของคุณในฐานะผู้เชี่ยวชาญด้าน QA คือการเขียนโค้ดเพื่อกำหนดข้อจำกัดที่ควบคุมโมเดลแบบ Generative เหล่านี้
ชุมชนการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi