ONLINECOURSE.HEADER

Testable Architecture Design

เข้าใจ Testable Architecture และออกแบบระบบที่พร้อมทดสอบได้ตั้งแต่วันแรก

1,990.00
บาท
4.3
ทำไมฉันควรเรียนคอร์สนี้

SECTION_TITLE.PROMOTION

100 สิทธิ์แรกหมดแล้ว! ขยายเพิ่มให้อีก เพียง 50 สิทธิ์สุดท้ายเท่านั้น

ส่วนลดเปิดตัว เหลือเพียง 990 บาทเท่านั้น (จากปกติ 1,990 บาท)

ราคานี้ถึง 16 ส.ค. เท่านั้น โอกาสสุดท้าย หมดแล้วหมดเลย

SECTION_TITLE.OVERVIEW

คุณเคยเจอปัญหาแบบนี้มั้ย?

  • โค้ดเปลี่ยนนิดเดียว แต่ต้องเข้า test cycle นานเป็นสัปดาห์
  • อยาก refactor ระบบ แต่ไม่กล้า เพราะกลัว test พัง
  • เขียนเทสต์ทีไร ต้อง mock เยอะจนเสียเวลา

ปัญหาเหล่านี้ไม่ใช่แค่เรื่องของการเขียนเทสต์แต่คือ “ระบบที่ไม่ได้ถูกออกแบบมาให้เทสต์ได้ง่ายตั้งแต่แรก”

พบกับคอร์สแรกในไทย! ที่จะสอนให้คุณ “ออกแบบระบบให้เทสต์ได้จริง”

ถ้าคุณเป็น Developer ที่เขียนเทสต์ตามที่ทีมบอก แต่ยังไม่เข้าใจว่าโค้ดแบบไหนถึงจะเทสต์ง่ายหรือเป็นคนที่มีหน้าที่ออกแบบระบบ แล้วอยากให้ทีมเขียนเทสต์ได้ง่ายขึ้นโดยไม่ต้องปวดหัว

คอร์สนี้จะพาคุณเข้าใจ Mindset และเบื้องหลังว่าทำไมโค้ดบางแบบถึงเทสต์ง่าย และจะออกแบบให้เป็นแบบนั้นได้อย่างไร

ทุกวันนี้การเขียน Automated Test ทั้ง Unit Test และ Integration Test กลายเป็นเรื่องปกติที่นักพัฒนาซอฟต์แวร์ทุกคนต้องทำ เพื่อให้ระบบมีคุณภาพ และพร้อมสำหรับการเปลี่ยนแปลง แต่ในความเป็นจริงแล้ว หลายคนมักจะเขียน Test ตามตัวอย่าง หรือทำตามคำสั่งโดยไม่เคยเข้าใจ "หลักคิด" เบื้องหลังว่าทำไมโค้ดบางแบบถึงเทสได้ง่ายกว่า

ความเข้าใจผิดเกี่ยวกับการเขียน Test สำหรับ Developer

การเขียน Test ของ Developer นั้นแตกต่างจากการทดสอบของ QA เพราะมันไม่ใช่แค่การตรวจสอบฟีเจอร์ว่าทำงานถูกต้อง แต่เป็นการ เขียนโค้ดที่สามารถทดสอบได้โดยไม่ต้องพึ่งพาระบบภายนอก และไม่เปราะบางเมื่อมีการเปลี่ยนแปลง

บ่อยครั้งที่เราพบว่า:

  • เขียน Test ตามที่เห็นในตัวอย่าง
  • Mock ตามที่เพื่อนร่วมทีมสั่ง
  • ใช้ Pattern ตามที่ใครบางคนบอกว่า "อันนี้เทสง่ายกว่า"

แต่กลับไม่เคยเข้าใจจริง ๆ ว่า "ทำไม" โค้ดแบบนี้ถึงเทสได้ง่ายกว่าโค้ดอีกแบบ นี่คือสิ่งที่หลายคนพลาดไป โดยเฉพาะคนที่เรียนรู้จากการลงมือทำเพียงอย่างเดียว

Testable Architecture: หัวใจของการสร้างระบบที่เทสได้ง่าย

คำตอบเริ่มต้นที่แนวคิดที่เรียกว่า Testable Architecture หลักการออกแบบระบบให้เอื้อต่อการทดสอบได้ง่าย รวดเร็ว และเชื่อถือได้ ตั้งแต่แรกเริ่ม ไม่ใช่แค่การเลือกใช้ Testing Framework หรือการเขียน Test หลังจากที่โค้ดเสร็จแล้ว

หลายคนอาจเคยได้ยินแนวคิดอย่าง Clean Architecture, MVC, CQRS, การแยก Layer, Dependency Injection หรือการใช้ Mock จำนวนมาก แต่มักขาดความเข้าใจภาพรวมว่าอะไรคือรากฐานที่แท้จริงของการทำให้ระบบ Testable

Testable Architecture คือการวางโครงสร้างระบบให้รองรับการทดสอบตั้งแต่เนิ่นๆ โดยเฉพาะการ แยกส่วน Business Logic ออกจากองค์ประกอบภายนอก เช่น Database, UI, หรือ External API ซึ่งช่วยให้เราสามารถสลับระหว่าง Implementation จริงกับ Mock หรือ Stub ได้อย่างยืดหยุ่นในเวลาทดสอบ

การที่ระบบมีโครงสร้างแบบนี้ทำให้เรา เขียน Unit Test ได้ง่ายขึ้น เพราะ Logic สามารถถูกทดสอบแยกออกมาได้โดยไม่ต้องรันผ่าน Database หรือเรียกระบบภายนอก ทำให้ Test เร็วขึ้น เสถียรขึ้น และไม่ต้องพึ่งพาการ Setup ที่ยุ่งยาก ซึ่งแตกต่างจากระบบที่โค้ดทุกอย่างผูกติดกันไปหมด การทดสอบเล็กๆ ก็กลายเป็นเรื่องใหญ่และเปราะบาง นำไปสู่การที่ทีมเขียน Test น้อยลง หรือเลิกเขียน Test ไปในที่สุด

ดังนั้น การออกแบบระบบให้ Testable จึงไม่ได้เป็นเพียงเรื่องของการ Testing เท่านั้น แต่มันสะท้อนถึง คุณภาพของโครงสร้างซอฟต์แวร์ ที่จัดสรรแบ่งส่วนได้ดี ดูแลง่าย และเปิดทางให้เราทำงานกับมันได้อย่างมั่นใจในระยะยาว

สิ่งที่คุณจะได้เรียนรู้ในคอร์ส "Design Your Own Testable Architecture"

คอร์สออนไลน์แรกในไทยที่จะพาคุณเข้าใจแนวคิดและ Mindset ในการออกแบบระบบให้ Test ได้จริง ไม่ใช่แค่เขียน Test ให้ผ่าน ในคอร์สนี้ คุณจะได้:

  • เข้าใจความแตกต่าง ของการเขียน Test จากมุมมองของ QA vs Developer
  • เข้าใจแนวคิดของ Testable Architecture และหลักการเบื้องหลังที่ทำให้ระบบทดสอบได้ง่าย
  • รู้วิธีแบ่ง Unit/Sub-unit เพื่อวาง Test อย่างมีโครงสร้าง
  • ใช้ Test Pyramid อย่างถูกต้อง ไม่เขียน Test เกินความจำเป็น
  • ลงมือออกแบบและแก้ระบบจากโจทย์จริง เพื่อฝึกคิดแบบคนออกแบบซอฟต์แวร์
  • เข้าใจหลักการของ Architecture ที่ไม่ขึ้นกับ Pattern — ไม่ว่าจะใช้ MVC, Clean หรืออะไรก็สามารถปรับใช้ได้
  • [Bonus] ทำความเข้าใจแนวคิด Inversion of Control (IoC) เพื่อให้ระบบ Testable ได้ง่ายขึ้น

คอร์สนี้เหมาะกับใคร?

คอร์สนี้เหมาะสำหรับผู้ที่กำลังต้องการศึกษาการออกแบบ Testable Software Architecture ที่ดี เพื่อออกแบบ Software อย่างเป็นระบบ โดยเฉพาะอย่างยิ่ง หากคุณเป็น:

  • Developer ที่เรียนรู้การเขียน Test ด้วยตัวเอง แต่ยังรู้สึกสับสนหรือไม่เห็นภาพรวมว่าทำไมต้อง Test แบบนั้นแบบนี้
  • Developer ที่มีประสบการณ์การทำงานมาสักระยะ (Junior - Mid-Senior) และเริ่มเขียน Test ตามคำแนะนำของเพื่อนร่วมทีมหรือหัวหน้า แต่อยากเข้าใจหลักการเบื้องหลังอย่างลึกซึ้ง
  • Software Architect หรือ Senior Developer ที่มีบทบาทในการออกแบบโครงสร้างโค้ดและต้องการสร้างระบบที่ทีมสามารถเขียน Test ได้อย่างมีประสิทธิภาพและง่ายดาย
  • QA ที่ต้องการทำความเข้าใจหลักการและมุมมองการทดสอบของ Developer เพื่อการทำงานร่วมกันที่ราบรื่นยิ่งขึ้น

SECTION_TITLE.INSTRUCTOR

ชาคริต ฤทธาคนี (Technical Lead Innovation Studio Southeast Asia, ThoughtWorks) | Skooldio Instructor
ชาคริต ฤทธาคนี
Technical Lead Innovation Studio Southeast Asia, ThoughtWorks

SECTION_TITLE.COURSE_OUTLINE

01

Foundations of Testing and Architecture

Introduction

6:25

Before We Start

Course Materials

Testing for Developers vs. Testing for QAs

15:48

Testable Architecture

9:41

Design our Own Testable Architecture (Poker Hand)

1:11

[Design Units] 1st Draft

11:17

[Code Review] Reader & Printer

10:20

[Design Sub-Units] Comparer

10:09

[Code Review] Comparer

14:43

[Design] Hand to Rank

3:39

[Code Review] Hand to Rank #1

21:14

[Code Review] Hand to Rank #2

5:25

Integration Test

7:26

Test Pyramid

15:41

Debunk Unit & Integration Test Misconceptions

13:50

[Code Review] Rest of the App

7:29

[Real-World Application & Architecture] Poker API

3:13

[Real-World Application & Architecture] Controller

5:14

Test Double & Dependency Injection

14:25

[Code Review] Controller

17:02

[Real-World Application & Architecture] - Poker Model

6:20

Data Layer Testing

11:24

[Code Review] Data and Complete Model Layer

19:29

[Code Review] View Layer and Integration Test

11:47

Guideline to Design Units

12:01

Summarized Testable Poker API

7:03

[Bonus] Demystify Inversion of Control (IoC) Container

9:04

SECTION_TITLE.FAQS

Q:

วิธีขอใบเสนอราคาและใบแจ้งหนี้ในนามนิติบุคคล

A:

หากต้องการใบเสนอราคาและใบแจ้งหนี้ในนามนิติบุคคลสามารถส่งรายละเอียดดังนี้

  • คอร์สที่สนใจและจำนวนผู้เรียน
  • ชื่อ-นามสกุล, เบอร์โทรผู้ติดต่อ
  • ชื่อ-ที่อยู่บริษัท, เลขประจำตัวผู้เสียภาษี
  • จำนวนภาษีหัก ณ ที่จ่าย (ถ้ามี)

มาที่ hello@skooldio.com โดยใช้ระยะเวลาดำเนินการไม่เกิน 1 วันทำการ (จันทร์-ศุกร์)

A:

สามารถทำได้ โดยในหน้าคำสั่งซื้อ กดเครื่องหมายถูกในช่อง "ต้องการออกใบกำกับภาษี/ใบเสร็จรับเงิน" จากนั้นเลือก "นิติบุคคล/บริษัท" และคำสั่งซื้อจะมีการหักภาษี ณ ที่จ่าย 3% โดยอัตโนมัติ ในกรณีบริษัทของท่านไม่ใช่ 3% กรุณาส่งรายละเอียดที่ต้องการสั่งซื้อมาที่ hello@skooldio.com

A:

กดเครื่องหมายถูกในช่อง "ต้องการออกใบกำกับภาษี/ใบเสร็จรับเงิน" ในหน้าชำระเงินและเลือกประเภทบุคคลทั่วไปหรือนิติบุคคล และกรอกรายละเอียด

A:

สำหรับคอร์สที่ซื้อในนามบุคคลทั่วไป คอร์สมีอายุตลอดชีพ สำหรับคอร์สที่ซื้อในนามนิติบุคคล สามารถกลับมาเรียนซ้ำได้ภายใน 1 ปี

A:

หลังจากได้รับใบกำกับภาษีแล้ว หากต้องการแก้ไขข้อมูล สามารถทำได้ภายใน 7 วัน นับจากวันที่ได้รับใบกำกับภาษีแบบเต็มรูปทางอีเมล โดยสามารถแก้ไขข้อมูลได้เฉพาะ ชื่อ-นามสกุล เลขประจำตัวผู้เสียภาษีและที่อยู่เท่านั้น จะไม่สามารถแก้ไขข้อมูลคำสั่งซื้อได้

คอร์สอื่นๆ ที่ผู้ซื้อคอร์สนี้สนใจ