สอบถามหลักสูตรเลือกช่องทางที่สะดวก ทีมงานตอบเองทุกช่อง
LINE @itgeniusตอบเร็วที่สุด · จ–ศ 9:00–17:00 น.
โทรศัพท์
02-570-8449สำนักงาน088-807-9770มือถือ
อีเมลและโซเชียล
contact@itgenius.co.thสำหรับใบเสนอราคาและเอกสารFacebookitgeniusonlineYouTubeitgeniusengขอคำปรึกษาจัดอบรมให้ทีม
พัฒนาเว็บไซต์ · WDC-121

TDD with Node.js and TypeScript

หลักสูตร TDD with Node.js and TypeScript เป็นการอบรมการพัฒนา Backend แบบเขียน Test ก่อนโค้ดด้วย Vitest ตั้งแต่ Red-Green-Refactor ไปจนถึงทดสอบ REST API และฐานข้อมูลจริงด้วย Testcontainers เหมาะกับนักพัฒนา Backend และ Tech Lead จบแล้วได้ API ต้นแบบพร้อมชุด Test และ CI Pipeline

อัปเดตล่าสุด
ราคาเริ่มต้น 7,650 บาท / ท่าน 8,500 −10% ยังไม่รวม VAT 7% · มีราคาหมู่คณะ
PDFดาวน์โหลด Course Outline
  • ระยะเวลา18 ชั่วโมง · 3 วัน
  • รูปแบบออนไซต์ / ออนไลน์สด
  • รอบถัดไปเปิดตามคำขอ
  • ใบรับรองมี Certificate

ภาพรวมหลักสูตร

ทุกวันนี้ทีมพัฒนาส่งมอบซอฟต์แวร์ได้เร็วขึ้นมาก ทั้งจากเครื่องมือสมัยใหม่และ AI ที่ช่วยเขียนโค้ด แต่ความเร็วมาพร้อมความเสี่ยง โค้ดอาจมีข้อผิดพลาดซ่อนอยู่ การแก้ส่วนหนึ่งทำให้อีกส่วนพังโดยไม่รู้ตัว และชุดทดสอบที่เขียนตามหลังมักไม่ครอบคลุมพฤติกรรมสำคัญ ทีมจึงต้องการวิธีทำงานที่สร้างความมั่นใจในคุณภาพตั้งแต่บรรทัดแรกของโค้ด

หลักสูตรนี้ฝึกวงจร Red-Green-Refactor อย่างเป็นระบบบน Node.js 24 LTS และ TypeScript โดยใช้ Vitest เป็นเครื่องมือหลัก เริ่มจาก Kata สั้น ๆ ต่อยอดสู่ REST API ด้วย Express 5 และ Supertest ทดสอบกับ PostgreSQL จริงด้วย Testcontainers วัดคุณภาพของ Test ด้วย Coverage และ Mutation Testing แล้วนำทั้งหมดเข้าสู่ CI Pipeline ผ่านโปรเจกต์ ParcelPoint Shipment API ชุดเดียวที่พัฒนาด้วย TDD ตลอดหลักสูตร (อบรม 3 วัน วันละ 6 ชั่วโมง รวม 18 ชั่วโมง ระดับ Intermediate)

สิ่งที่คุณจะได้รับ

  • เข้าใจหลักการและประโยชน์ของ Test Driven Development และใช้วงจร Red-Green-Refactor ได้จนเป็นนิสัย
  • ตั้งค่าโปรเจกต์ Node.js และ TypeScript สำหรับการทดสอบด้วย Vitest ได้ถูกต้อง
  • เขียน Unit Test ที่อ่านง่าย ดูแลรักษาได้ และทดสอบพฤติกรรมแทนรายละเอียดภายใน
  • เลือกใช้ Test Doubles (Stub, Mock, Spy, Fake) ได้เหมาะกับสถานการณ์
  • พัฒนา REST API ด้วยแนวทาง TDD และทดสอบ HTTP Endpoint ด้วย Supertest
  • เขียน Integration Test กับฐานข้อมูลจริงด้วย Testcontainers
  • วัดคุณภาพของชุดทดสอบด้วย Coverage และ Mutation Testing
  • นำชุดทดสอบเข้าสู่ CI Pipeline และกำหนด Quality Gate ให้ทีม

หลักสูตรนี้เหมาะสำหรับ

  • นักพัฒนา Backend ที่ใช้ Node.js และ TypeScript ในงานประจำ
  • Full Stack Developer ที่ต้องการยกระดับคุณภาพโค้ดฝั่ง Server
  • Tech Lead ที่ต้องการวางมาตรฐานการทดสอบให้ทีม
  • QA Engineer ที่ต้องการทำงานใกล้ชิดกับนักพัฒนาในระดับ Unit และ Integration Test
  • ทีมที่ใช้ AI ช่วยเขียนโค้ดและต้องการชุดทดสอบเป็นข้อกำหนดที่ตรวจสอบได้

พื้นฐานของผู้เข้าอบรม

  • เขียน JavaScript หรือ TypeScript ได้ในระดับใช้งานจริง เช่น Function, Class และ async/await
  • เคยพัฒนา REST API ด้วย Node.js เช่น Express มาก่อน
  • เข้าใจ SQL และฐานข้อมูลเชิงสัมพันธ์เบื้องต้น ใช้ Git, npm และ Command Line ได้
  • ไม่จำเป็นต้องเคยเขียน Test หรือใช้ Vitest มาก่อน ผู้สอนจะปูพื้นฐานการทดสอบให้ตั้งแต่ต้น

หัวข้อการฝึกอบรม

รายละเอียดหลักสูตร

หลักสูตรนี้ต่อยอดจาก Software Testing Foundation และ Basic Node.js โดยเน้นงานของนักพัฒนา Backend ที่เขียน Test ก่อนโค้ดในระดับ Unit และ Integration ซึ่งให้ผลต่อคุณภาพโค้ดมากที่สุด ส่วน End-to-End Test ของหน้าเว็บอยู่ในหลักสูตร Playwright End-to-End Test Automation อบรม 3 วัน วันละ 6 ชั่วโมง รวม 18 ชั่วโมง (09:00-16:00 น.) รูปแบบ Workshop

ต่อเนื่องบนโปรเจกต์ ParcelPoint Shipment API ชุดเดียวที่ใช้ข้อมูลจำลองทั้งหมด ใช้ Express 5 เป็นตัวอย่างหลัก และแนวทางเดียวกันใช้กับ Fastify, Hono หรือ NestJS ได้ เครื่องมือทั้งหมดเป็นโอเพนซอร์สและรันบนเครื่องของผู้เรียนด้วย Docker การทดลอง CI ใช้บัญชี GitHub หรือ GitLab ของผู้เรียน ผู้เรียนจะได้ Source Code ชุด Test และไฟล์ CI Pipeline กลับไปใช้เป็นแม่แบบของทีม

Day 1 TDD Fundamentals with Vitest

Section 1: หลักการของ Test Driven Development

  • ปัญหาของการเขียน Test ตามหลัง และประโยชน์ของการเขียน Test ก่อน
  • วงจร Red-Green-Refactor และกฎ 3 ข้อของ TDD
  • Testing Pyramid (Unit, Integration, End-to-End) และ Testing Trophy
  • TDD ในยุคที่ใช้ AI ช่วยเขียนโค้ด: ใช้ Test เป็นข้อกำหนดที่ตรวจสอบได้
  • Lab: วิเคราะห์โค้ดที่ไม่มี Test แล้วเขียน Test แรกเพื่อกำหนดพฤติกรรมที่ต้องการ

Section 2: ตั้งค่าโปรเจกต์ Node.js และ TypeScript

  • Node.js 24 LTS และการรัน TypeScript ด้วย Type Stripping
  • TypeScript 7 (Native Compiler) กับการตรวจ Type และเครื่องมือที่ยังต้องใช้ TypeScript 6
  • ตั้งค่า tsconfig และ ES Modules
  • ติดตั้งและตั้งค่า Vitest พร้อมเปรียบเทียบกับ node:test
  • Lab: สร้างโปรเจกต์ตั้งต้นที่รัน Test และ Type Check ได้ด้วยคำสั่งเดียว

Section 3: เขียน Unit Test ที่ดี

  • โครงสร้าง describe, test และ expect
  • รูปแบบ Arrange-Act-Assert และการตั้งชื่อ Test ให้สื่อพฤติกรรม
  • Matcher ที่ใช้บ่อย และการทดสอบ Exception และ async Function
  • Parameterized Test ด้วย test.each เพื่อลดโค้ดซ้ำ
  • Lab: ปรับ Test ที่อ่านยากให้สั้น ชัด และไม่เปราะบาง

Section 4: ฝึก TDD Kata

  • ฝึกวงจร TDD ด้วยโจทย์สั้น เช่น String Calculator
  • เทคนิค Fake It, Triangulation และ Obvious Implementation
  • Refactor อย่างปลอดภัยโดยมี Test คุ้มครอง
  • Lab: ทำ Kata เป็นคู่แบบ Ping-Pong Pairing และสลับบทบาทเขียน Test กับเขียนโค้ด

Section 5: Workshop Day 1: Domain Logic ของ ParcelPoint

  • คำนวณค่าขนส่งตามน้ำหนักและโซนด้วย TDD
  • ใช้คูปองส่วนลดพร้อมเงื่อนไขและกรณีพิเศษ
  • State Machine ของสถานะพัสดุ: Created, Picked Up, In Transit, Delivered และ Cancelled
  • Workshop: Refactor Domain Logic ให้อ่านง่ายโดย Test ยังผ่านทั้งหมด
Day 2 TDD for REST API และ Test Doubles

Section 6: ออกแบบโค้ดให้ทดสอบได้

  • แบ่ง Layer เป็น Route, Service และ Repository
  • Dependency Injection แบบเรียบง่ายโดยไม่ต้องใช้ Framework
  • Port and Adapter (Hexagonal Architecture) เบื้องต้น
  • Lab: แยก Dependency ของ Service ออกเป็น Interface เพื่อให้ทดสอบได้

Section 7: Test Doubles

  • ความแตกต่างของ Dummy, Stub, Spy, Mock และ Fake
  • การใช้ vi.fn, vi.spyOn และ vi.mock
  • ควบคุมเวลาด้วย Fake Timers
  • ข้อควรระวังของการ Mock มากเกินไป (Over-mocking)
  • Lab: ทดสอบบริการแจ้งเตือนลูกค้าด้วย Mock และทดสอบเวลาหมดอายุด้วย Fake Timers

Section 8: TDD กับ REST API

  • Outside-in TDD เริ่มจาก Endpoint ลงสู่ Service
  • ทดสอบ Express 5 ด้วย Supertest: Status Code, Header และ Body
  • ตรวจสอบ Input ด้วย Zod และทดสอบ Validation Error
  • ทดสอบ Error Handling Middleware
  • Lab: สร้าง Endpoint สร้างพัสดุโดยเขียน Test ด้วย Supertest ก่อนเสมอ

Section 9: ทดสอบการยืนยันตัวตนและสิทธิ์

  • ทดสอบ Endpoint ที่ต้องใช้ Token ทั้งกรณีปกติและกรณีไม่มีสิทธิ์
  • ทดสอบสิทธิ์ตามบทบาทผู้ใช้ (Role-based Access)
  • สร้าง Test Helper สำหรับผู้ใช้แต่ละบทบาทเพื่อลดโค้ดซ้ำ
  • Lab: เพิ่มกฎให้เฉพาะเจ้าหน้าที่ยกเลิกพัสดุได้ โดยเริ่มจาก Test ที่ล้มเหลว

Section 10: Workshop Day 2: REST API ของ ParcelPoint

  • API สร้าง ค้นหา อัปเดตสถานะ และยกเลิกพัสดุ โดยเขียน Test ก่อนทุก Endpoint
  • ใช้ In-memory Fake Repository แทนฐานข้อมูล
  • ใช้ Mock สำหรับบริการแจ้งเตือนลูกค้า
  • Workshop: ทบทวนชุด Test ร่วมกันและแก้ Test ที่ผูกกับรายละเอียดภายในมากเกินไป
Day 3 Integration Testing, Test Quality, CI และ Master Workshop

Section 11: Integration Testing ด้วย Testcontainers

  • ข้อจำกัดของการ Mock ฐานข้อมูล และเหตุผลที่ต้องทดสอบกับฐานข้อมูลจริง
  • ใช้ @testcontainers/postgresql สร้าง PostgreSQL ชั่วคราว
  • Migrate Schema และเตรียมข้อมูลทดสอบ (Test Fixture)
  • แยกข้อมูลระหว่าง Test และลดเวลารันด้วย Global Setup
  • Lab: รัน Repository Test กับ PostgreSQL จริงใน Container

Section 12: Code Coverage

  • Line, Branch และ Function Coverage ด้วย Vitest Coverage (V8)
  • กำหนด Coverage Threshold ให้เหมาะกับโปรเจกต์
  • ข้อจำกัดของ Coverage ในการวัดคุณภาพ Test
  • Lab: อ่าน Coverage Report และเติม Test ใน Branch ที่ยังไม่ถูกทดสอบ

Section 13: Mutation Testing ด้วย StrykerJS

  • หลักการ Mutation Testing และความหมายของ Mutation Score
  • ตั้งค่า StrykerJS ร่วมกับ Vitest Runner
  • วิเคราะห์ Mutant ที่รอดชีวิตและปรับปรุง Test
  • Lab: เพิ่ม Mutation Score ของ Domain Logic โดยปรับ Assertion ที่อ่อนแอ

Section 14: นำ TDD เข้าสู่ CI และการทำงานของทีม

  • รัน Unit และ Integration Test ใน CI ด้วย GitHub Actions หรือ GitLab CI
  • Quality Gate จาก Test, Coverage และ Type Check
  • นำ TDD ไปใช้กับ Legacy Code ด้วย Characterization Test
  • Code Review ที่ให้ความสำคัญกับ Test
  • Lab: ตั้ง Pipeline ที่หยุดการ Merge เมื่อ Test ไม่ผ่าน

Section 15: Master Workshop: ParcelPoint ที่พร้อมใช้งาน

  • เปลี่ยน Fake Repository เป็น PostgreSQL จริงผ่าน Testcontainers และเขียน Integration Test ของการทำงานหลัก
  • รัน Coverage และ StrykerJS เพื่อหา Test ที่อ่อนแอแล้วปรับปรุง
  • เพิ่มฟีเจอร์ค่าบริการส่งด่วนด้วย TDD ตั้งแต่ Test แรกจนถึง Endpoint
  • ตั้งค่า CI Pipeline พร้อม Quality Gate และนำเสนอผลงานพร้อมรีวิวโค้ดร่วมกัน

รอบอบรมและรูปแบบการอบรม

สำหรับบุคคล — รอบอบรมทั่วไป

ขณะนี้ยังไม่มีรอบอบรมเปิดรับสมัคร ลงชื่อจองไว้ได้เลย ทีมงานจะติดต่อกลับเป็นกลุ่มแรกเมื่อเปิดรอบถัดไป หรือสอบถามทางไลน์ หรือโทร 02-570-8449 หรือ 088-807-9770

สำหรับองค์กร — In-house / Private Training

  • ปรับเนื้อหาให้ตรงกับเครื่องมือและงานจริงของทีม
  • เลือกวันเอง อบรมที่บริษัทหรือออนไลน์สด
  • ออกใบเสนอราคาในนามนิติบุคคลให้ฝ่ายจัดซื้อ
ขอใบเสนอราคาอบรมองค์กร

วิทยากรผู้สอน

คำถามที่พบบ่อย

หลักสูตรนี้ต่างจาก Software Testing Foundation และ Playwright End-to-End Test Automation อย่างไร

Software Testing Foundation ปูพื้นหลักการทดสอบซอฟต์แวร์ในภาพกว้าง และ Playwright End-to-End Test Automation เน้นทดสอบหน้าเว็บแบบจำลองผู้ใช้ ส่วนหลักสูตรนี้เป็นมุมของนักพัฒนา Backend ที่เขียน Test ก่อนโค้ดบน Node.js และ TypeScript ในระดับ Unit และ Integration ตั้งแต่ Domain Logic, REST API ด้วย Supertest, ฐานข้อมูลจริงด้วย Testcontainers ไปจนถึง Mutation Testing และ Quality Gate ใน CI ทั้งสามหลักสูตรจึงเสริมกัน

ต้องเคยเขียน Test มาก่อนหรือไม่

ไม่จำเป็น วันแรกปูพื้นการเขียน Unit Test ด้วย Vitest ตั้งแต่ต้น แต่ผู้เรียนควรเขียน JavaScript หรือ TypeScript ได้ในระดับใช้งานจริง และเคยพัฒนา REST API ด้วย Node.js มาก่อน

ใช้ Fastify, Hono หรือ NestJS ในงานจริง จะนำไปใช้ได้หรือไม่

ได้ หลักสูตรใช้ Express 5 เป็นตัวอย่างหลักเพราะคนคุ้นเคยมากที่สุด แต่หลักการ TDD การแยก Layer, Test Doubles, Testcontainers และ Mutation Testing ใช้ได้เหมือนกันกับ Framework อื่น ผู้สอนจะชี้จุดที่ต่างกันเมื่อนำไปใช้กับ Fastify, Hono หรือ NestJS

ต้องเตรียมเครื่องและบัญชีอะไรบ้าง

Notebook ที่มี RAM อย่างน้อย 8 GB (แนะนำ 16 GB) ติดตั้ง Node.js 24 LTS, Git, VS Code และ Docker Desktop ที่รัน Container ได้ (Windows ต้องเปิด WSL2) เพราะ Testcontainers ใช้ Docker และบัญชี GitHub หรือ GitLab ของผู้เรียนเองสำหรับทดลอง CI Pipeline

Mutation Testing คืออะไร และทำไม Coverage อย่างเดียวไม่พอ

Coverage บอกได้เพียงว่าโค้ดบรรทัดใดถูกรันระหว่างทดสอบ แต่ไม่ได้บอกว่า Test ตรวจผลลัพธ์จริงหรือไม่ Mutation Testing ด้วย StrykerJS จะแก้โค้ดทีละจุดโดยอัตโนมัติ แล้วดูว่า Test จับความผิดปกตินั้นได้หรือไม่ ช่วยให้หา Test ที่อ่อนแอและปรับปรุงได้ตรงจุด

เนื้อหาใช้เครื่องมือเวอร์ชันใด

เนื้อหาอ้างอิง Node.js 24 LTS, TypeScript 7 ที่ใช้ Native Compiler, Vitest และ Express 5 ซึ่งเป็นรุ่นปัจจุบัน และจะอธิบายกรณีที่เครื่องมือบางตัวยังต้องใช้ TypeScript 6 เนื่องจากเครื่องมือในสาย JavaScript ออกรุ่นใหม่บ่อย เนื้อหาจะปรับตามรุ่นล่าสุด ณ วันอบรม