มีโอกาสได้ไปแบ่งปันใน Course Test-Driven Development (TDD) with Java จัดโดย IMC Institute
ซึ่งเป็นครั้งแรกสำหรับการแบ่งปัน 2 วันกันแบบเต็มๆ
และมีคนเข้ามาเรียนจำนวน 18 คน
มาดูว่าได้แบ่งปันอะไรไปบ้าง ?
เนื้อหาในวันแรก
ใน course นี้เน้นเรื่องของการทำ workshop
เพื่อให้ผู้เรียนได้รู้และเข้าใจของที่มาที่ไปของ code
รวมทั้งเพื่อให้เข้าใจปัญหาที่นักพัฒนาต้องแบกรับ และ สร้างมันขึ้นมา
นั่นก็คือ code ที่ยุ่งเหยิง และ พวก Legacy code
โดยหนึ่งในแนวทางการแก้ปัญหาคือ Test-Driven Development (TDD)
และเป้าหมายหลักของ course นี้คือ เรื่อง Small Step
ดังนั้นจึงลงมือทำ Workshop เยอะ เพื่อฝึกฝน
จากนั้นทำการอธิบายถึงคุณสมบัติของ Unit test ที่ดี คือ FIRST
- F = Fast
- I = Independent
- R = Repeatable
- S = Self-validate
- T = Timely
ในการทำ workshop จะใช้ JUnit สำหรับการเขียน unit test ด้วยภาษา Java
ดังนั้นจึงทำการแนะนำการใช้งานเบื้องต้น
รวมทั้งโครงสร้างของ unit test ที่ดี นั่นก็คือ A-A-A (Arrange-Act-Assert)
เนื้อหาในวันที่สอง
ทำการสรุปความสามารถต่างๆ ของ jUnit เช่น
- Life cycle ของการทำงานพวก @BeforeClass, @Before, @AfterClass และ @After
- การจัดการกับ Exception ใน test
- การใช้งาน Parameterization สำหรับการทดสอบแบบ Data-Driven Development
จากนั้นจึงเริ่มทำการแนะนำเรื่อง การออกแบบที่ดีในโลกของ Object-Oriented
นั่นก็คือ SOLID
- S = Single Responsibility Principle
- O = Open-Closed Principle
- L = Liscov Substitution Principle
- I = Interface Segregation Principle
- D = Dependency Inversion Principle
เรื่องที่เน้นมากๆ นั่นก็คือ S, O และ D
ซึ่งได้ลงมือทำ workshop ต่างๆ เพื่อทำให้เข้าใจ
จากนั้นเริ่มอธิบายเรื่องของ D
และทำการแนะนำให้รู้จักกับ Test Double
เพื่อทำการแยกส่วนการทำงานต่างๆ ออกจากกัน (Isolate)
ส่งผลให้ระบบสามารถทดสอบได้ง่าย (Testable)
ประกอบไปด้วย
- Dummy
- Stub
- Spy
- Mock
- Fake
จากนั้นลงมือทำ Workshop เพื่อให้เข้าในเรื่องของ Stub, Spy และ Mock
น่าจะทำให้ผู้เรียนได้รับความรู้และเข้าใจ เกี่ยวกับ Test-Driven Development ด้วยภาษา Java มากขึ้น
รวมทั้งน่าจะเป็นแนวทางสำหรับการต่อยอดในการพัฒนานะครับ
เจอกันอีกครั้งช่วงปลายปีครับ
สามารถดูรายละเอียดของ course ได้ที่ IMC Institute :: Test-Driven Development with Java