TDD with Spring Boot - up1/training-courses GitHub Wiki
Course Description
แนวคิดของ Test-Driven Development (TDD) นั้นได้รับความนิยมในการพัฒนาระบบงานเพิ่มขึ้นเป็นอย่างมาก
ช่วยเพิ่มความเชื่อมั่นในการพัฒนา ทั้งทีมพัฒนาและส่งผลไปยังผู้ใช้งานระบบด้วยเช่นกัน (Internal and External confidence)
รวมทั้งช่วยเพิ่มความเร็วและคุณภาพของการพัฒนาระบบงานอีกด้วย (Speed and Quality)
แต่ก่อนอื่นจำเป็นต้องมีความรู้และเข้าใจ ตลอดลงมือฝึกฝนที่ถูกต้อง ก่อนนำไปใช้งาน (ช้าไม่เป็นก็เร็วไม่ได้)
โดยใน course นี้จะเน้นไปที่การพัฒนาระบบงานด้วยภาษา Java
รวมทั้งลงมือพัฒนาและทดสอบ RESTful API ด้วย framework ที่ได้รับความนิยมนั่นก็คือ Spring Framework และ Spring Boot แบบ step-by-step
Learn
- เรียนรู้แนวคิดและความสำคัญของ Test-Driven Development (TDD)
- เรียนรู้และใช้งาน JUnit สำหรับการเขียนชุดการทดสอบในภาษา Java
- เข้าใจการทดสอบในรูปแบบต่าง ๆ ตั้งแต่ Unit, Integration, Component, Contract และ End-to-End testing
- เข้าใจการทดสอบระบบงานที่พัฒนาด้วย Spring Framework และ Spring Boot
Target Groups
- Java programmer/developer
- Automation tester/QA (required programming skill)
Software Requirements
- JDK 1.8+
- IntelliJ IDE Community Edition (CE)
Course Outline
- ความรู้พื้นฐานเกี่ยวกับ Test-Driven Development (TDD)
- TDD Life Cycle
- TDD vs DLP (Debug Later Programming)
- ความสำคัญสำหรับ TDD
- เริ่มต้นเขียนชุดการทดสอบด้วย JUnit
- Structure of good unit test (GUT)
- JUnit Life Cycle
- Assertion
- Data-Driven Test with JUnit
- JUnit features
- Timeout
- Conditional
- Category
- Suite
- Running testing
- การเขียนชุดการทดสอบที่ดี
- Fast
- Independent
- Repeatable
- Self-validate
- Timely
- Code/Test coverage
- Code Coverage คืออะไร มีเป้าหมายเพื่ออะไร
- ใช้งาน Code Coverage ในระบบงาน
- การออกแบบที่ดีด้วย SOLID design principle
- Single Responsibility Principle
- Open/Closed Principle
- Interface Seggregation Principle
- Dependency Inversion Principle
- Test Double
- ความรู้พื้นฐานเกี่ยวกับ Spring Framework
- Spring Framework
- Inversion of Control (IoC)
- Dependency Injection (DI)
- Contexts
- Beans and Scopes
- Spring Projects and Modules
- ความรู้พื้นฐานเกี่ยวกับ Spring Boot 2.x
- การทำงานของ Spring Boot
- รูปแบบการ deploy ของ Spring Boot
- การพัฒนา RESTful API ด้วย Spring Boot
- โครงสร้างที่ดีของระบบงาน (Better project structure of project)
- การจัดการ dependency ต่าง ๆ ของ Spring Boot
- Layers ของระบบงาน
- Controller layer
- Service layer
- Repository layer
- Gateway layer
- Entity class vs Bean/Response class
- การพัฒนาและทดสอบ Controller Layer
- การพัฒนา controller ด้วย REST Controller
- การออกแบบและสร้าง RESTful API
- การจัดการข้อมูลทั้ง request และ response
- การจัดการ Error handling ด้วย Spring AOP
- การทดสอบ controller ในรูปแบบต่าง ๆ
- Spring Boot Testing
- Spring MVC Test
- Unit testing with JUnit and Mockito
- การพัฒนาและทดสอบ Service Layer
- การพัฒนาส่วนการทำงานใน Service Layer (Business process)
- การทดสอบ service ในรูปแบบต่าง ๆ
- Spring Boot Testing
- Spring MVC Test
- Unit testing with JUnit and Mockito
- การทำงานร่วมกับ Repository layer
- การจัดการ transaction กับ Database/Repository
- การพัฒนาและทดสอบ Repository Layer
- การพัฒนาส่วนการจัดการข้อมูลด้วย Spring Data JPA และ JDBC
- Transaction Management
- การทดสอบ service ในรูปแบบต่าง ๆ
- Spring Boot Testing
- JDBC Testing
- JPA Testing
- การพัฒนาและทดสอบ Gateway Layer
- การพัฒนาส่วนการดึงข้อมูลผ่าน RESTful API ด้วย REST Template และ Feign
- การทดสอบ service ในรูปแบบต่าง ๆ
- Contract/Consumer Testing