แผนการเรียนรู้
/

Defensive Coding & Automated Testing

สร้างเกราะป้องกันให้ SolarCorp: การทดสอบอัตโนมัติและสถาปัตยกรรมโค้ดที่ไร้ช่องโหว่

10:45 - 12:00 | ภาคปฏิบัติการประกันคุณภาพ (Quality Assurance)

เป้าหมายของชั่วโมงนี้

✅ ใช้คำสั่ง /test เพื่อสร้าง Unit Test สำหรับตรรกะการคำนวณ

✅ ฝึกฝน TDD Workflow เพื่อลด Bug ตั้งแต่เริ่มต้น

✅ กำจัด AI Slop และหนี้ทางเทคนิคในระดับไฟล์

✅ ตรวจสอบความถูกต้องของ Logic แนะนำแพ็กเกจ (FR-2.3)

ทำไมต้องทดสอบโค้ดที่ AI สร้าง?

"AI เก่งเรื่องการเขียนโค้ดที่ 'รันได้' แต่อาจไม่ถูกต้องตาม 'ตรรกะธุรกิจ'"

Technical Debt (89.1%)

โค้ด AI ส่วนใหญ่มี Code Smells ที่ต้องกำจัดด้วยการ Refactor

Logic Errors (5.8%)

Bug ในระดับ Runtime ที่ AI มักทำพลาด เช่น ตัวแปรที่ไม่ได้ประกาศ

รูปแบบการเขียนโค้ดแบบป้องกัน (Defensive)

ป้องกันระบบ "ล่ม" เมื่อเจอกับ Input ที่คาดไม่ถึง

  • Input Validation: ตรวจสอบประเภทข้อมูลก่อนคำนวณค่าไฟรายเดือน
  • Specific Exceptions: เลิกใช้ except Exception และระบุ Error ที่เจาะจง
  • Graceful Degradation: หาก API พัง ต้องแสดงข้อความที่เหมาะสม ไม่ใช่หน้าขาว

การทดสอบด้วยพลัง Agent

ใน Antigravity เราจะไม่เขียน Test เองทั้งหมด แต่เราจะสั่งให้ Agent ทำ

> /test generate tests for calculator.py
...Creating test cases for kW recommendations...
🧪

"Agent จะวิเคราะห์ Requirement ใน SRS เพื่อสร้าง Test Case ที่ครอบคลุม "

Case Study: ทดสอบระบบคำนวณแพ็กเกจ

เป้าหมาย: ตรวจสอบความแม่นยำของ FR-2.3

Test Case 1:

Input: 3,500 บาท
Output: ต้องเป็นแพ็กเกจ 5kW

Test Case 2:

Input: 0 บาท
Output: ต้องแจ้งเตือนค่าไม่ถูกต้อง

"เราจะใช้ระบบทดสอบนี้เพื่อการันตีความเชื่อมั่นให้ลูกค้า "

วงจรชีวิต TDD อัจฉริยะ

1. /tdd

สั่ง AI เขียน Test ที่ 'ไม่ผ่าน' ก่อนเริ่มฟีเจอร์

➡️

2. /implement

AI เขียนโค้ดเพื่อให้ Test 'ผ่าน'

➡️

3. /refactor

ปรับปรุงโค้ดให้สะอาดโดยที่ Test ยังผ่านอยู่

จัดการ AI Slop (ขยะดิจิทัล)

โค้ดที่รันผ่านแต่ "เละ" คือศัตรูของการทำธุรกิจระยะยาว

  • Unused Variables: ตัวแปรที่ AI สร้างทิ้งไว้แต่ไม่ใช้
  • Shadowing: การตั้งชื่อตัวแปรซ้ำกับฟังก์ชันมาตรฐาน
  • Deep Nesting: การเขียน if-else ซ้อนกันจนอ่านไม่ออก

กลยุทธ์การ Refactor เพื่อลดหนี้

"เปลี่ยนโค้ดที่เขียนโดย AI ให้เป็นโค้ดที่มนุษย์อยากดูแล "

DRY Principle:

สั่ง AI ยุบรวมฟังก์ชันคำนวณที่ซ้ำซ้อนให้เหลือจุดเดียว

Type Safety:

บังคับใส่ Type Hints เพื่อให้ AI และเพื่อนร่วมทีมเข้าใจข้อมูล

ด่านตรวจคุณภาพ: คำสั่ง /verify

รันทุกด่านตรวจก่อนที่โค้ดจะถูกอนุมัติเข้าสู่ระบบจริง

Linting Check: Passing
Type Check: Passing
Security Scan: 1 Alert (Unsafe Pattern)
Unit Tests: 9/10 Passed

กลยุทธ์ "คู่ปรับนิรันดร์"

ใช้ AI สองตัว หรือเปลี่ยนโหมด AI ให้กลายเป็น 'แฮกเกอร์'

Prompt ท้าทาย:

"สวมบทบาทเป็น Security Auditor ที่เข้มงวดที่สุด พยายามหาช่องโหว่เพื่อทำให้ฟังก์ชันบันทึก Order ของ SolarCorp พังหรือทำงานผิดพลาด และรายงานผลมาให้ฉัน"

การบริหารจัดการงบประมาณความผิดพลาด

"Error Budget Tracking "

Antigravity จะช่วยเราติดตามว่าโค้ดชุดไหนพังบ่อยที่สุด เพื่อให้เราโฟกัสการ Refactor ได้ถูกจุด

Error Budget Used: 75% | Time to Refactor!

กิจกรรม: สร้างเกราะให้ SolarCorp

ปฏิบัติการสร้าง Unit Test และจัดการ Code Smells

1. ใช้คำสั่ง /test กับไฟล์ Logic การคำนวณ kW

2. รันการทดสอบใน Terminal Sandbox และแก้ไขจนผ่าน

3. สั่ง /refactor เพื่อล้าง AI Slop ในหน้า UI

4. ยืนยันผลลัพธ์ผ่านคำสั่ง /verify

ความปลอดภัยขณะทดสอบ (Sandbox)

ไม่ต้องกลัวว่า AI จะรันคำสั่งทำลายระบบคอมพิวเตอร์ของคุณ

> pytest SolarCorp/tests/

Status: Running in isolated environment...

"เราใช้ Terminal Sandbox เพื่อแยกส่วนการทดลองที่อาจเสี่ยงอันตราย"

"งานเสร็จ" ในยุค AI คืออะไร?

✅ โค้ดรันผ่าน Unit Tests 100%
✅ ผ่านการแสกน Security (/security-scan)
✅ ไม่มี AI Slop หรือตัวแปรขยะที่ไม่ได้ใช้
✅ มีเอกสารอธิบายการทดสอบชัดเจน

ระวังปัญหาข้อผิดพลาดซ้ำซ้อน (Compound Errors)

เมื่อ AI แก้บั๊กหนึ่งจุดแล้วสร้างบั๊กใหม่อีกสามจุด

วิธีป้องกัน:

ใช้ Review Pyramid ตรวจสอบการเปลี่ยนแปลงทีละชิ้นเล็ก (Small Units) และรัน Test ทุกครั้งก่อน Accept

สรุปความก้าวหน้าช่วงเช้า

กฎ Governance ชัดเจน
ระบบทดสอบพร้อม
โค้ดสะอาดไร้หนี้

"คุณเปลี่ยนจาก Vibe Coding เป็น Engineering ได้สำเร็จแล้ว!"

ช่วงถาม-ตอบ (Q&A)

"มีปัญหาในการสั่ง AI เขียน Test หรือการใช้ /verify ไหมครับ?"

🧪❔

ก้าวต่อไป: สู่โลกคลาวด์!

หลังจากพักเบรก: เราจะใช้ **Browser Subagent** นำระบบ SolarCorp
ขึ้นใช้งานจริงบน Render.com

"เตรียมตัวรันระบบระดับ Production ได้เลย!"

พักรับประทานอาหารกลางวัน

"เติมพลังงานเพื่อกลับมาพบกับความตื่นเต้นของการ Deployment"

พบกันอีกครั้งเวลา 13:00 น. | ขอให้สนุกกับมื้อเที่ยงครับ
🍱