Bug yang muncul setelah rilis, refactor yang menimbulkan kekhawatiran karena berpotensi merusak fitur lain, serta kode yang semakin sulit dipahami biasanya bukan terjadi karena tim kurang kompeten, melainkan karena tidak adanya mekanisme pengujian yang kuat sejak awal. Pola kerja yang hanya menguji di tahap akhir—atau sekadar mengandalkan pengujian manual—membuat banyak keputusan desain lolos tanpa validasi yang memadai, lalu menumpuk menjadi technical debt. Akibatnya, perubahan kecil sekalipun dapat memicu dampak berantai dan memperpanjang waktu perbaikan.
Test-Driven Development (TDD) membalik kebiasaan tersebut dengan menempatkan pengujian sebagai acuan perilaku kode sebelum implementasi dibuat. Pengujian ditulis lebih dulu untuk mendefinisikan ekspektasi fungsi, kemudian kode dikembangkan secukupnya agar ekspektasi tersebut terpenuhi, dan selanjutnya dirapikan melalui proses refactoring. Pendekatan ini membantu menjaga desain tetap modular, mempermudah kolaborasi tim, serta memberikan rasa aman saat melakukan perubahan. Sejumlah studi juga menunjukkan bahwa penerapan TDD secara konsisten dapat berdampak positif terhadap kualitas desain dan penurunan cacat perangkat lunak, khususnya ketika didukung disiplin praktik pengujian yang baik (Munir et al., 2014; Santos et al., 2020).
Course Test Driven Development Fundamentals mengajak peserta berlatih TDD secara bertahap melalui skenario yang mendekati kondisi proyek nyata, bukan sekadar pembahasan konseptual. Fokus pembelajaran diarahkan pada penyusunan unit test yang jelas dan terstruktur, pemilihan strategi mocking yang tepat, serta pembangunan test suite yang cepat namun tetap andal sebagai safety net. Setelah fondasi tersebut terbentuk, pembahasan dilanjutkan ke pengujian integrasi dan end-to-end, termasuk tantangan pada kode konkuren, arsitektur microservices, serta pengujian kasus ekstrem agar aplikasi lebih stabil dan siap digunakan di lingkungan produksi.
OBJECTIVES
1. Memahami pola pikir test-first dan alur kerja TDD yang benar
2. Mampu menyusun unit test yang jelas, terstruktur, dan mudah dirawat
3. Menguasai teknik mocking dan assertion untuk menulis kode yang testable
4. Mampu membangun test suite yang efisien untuk kebutuhan tim dan proyek
5. Mampu melakukan refactoring dengan aman berbekal pengujian yang solid
6. Memahami strategi pengujian untuk integrasi, end-to-end, dan concurrency
AUDIENCE
1. Software Developers
2. Backend Developers
3. Quality Assurance Engineers
4. Test Automation Engineers
5. DevOps Engineers
PREREQUISITES
Tidak ada training khusus yang dipersyaratkan
CONTENT
1. Introduction to Test-Driven Development
1.1. Introduction to TTD
1.2. Understanding the Benefits and Use of TTD
1.3. Understanding Test Metrics
2. Unit Testing Essentials
2.1. The Unit Under Test
2.2. Testing package
2.3. Test Setup and Teardown
2.4. Operating with Subtests
2.5. The Difference Between a Test and a Benchmark
3. Mocking and Assertion Frameworks
3.1. Interfaces as Dependencies
3.2. Exploring Mocks
3.3. Working with Assertion Frameworks
3.4. Writing Testable Code
4. Building Efficient Test Suites
4.1. Testing Multiple Conditions
4.2. Table-driven Testing in Action
4.3. Use Case – the BookSwap Application
5. Performing Integration Testing
5.1. Supplementing Unit Tests with Integration Tests
5.2. Behavior-driven Testing
5.3. Understanding Database Testing
5.4. Spinning Up and Tearing Down Environments with Docker
6. End-to-End Testing the BookSwap Web Application
6.1. Use Case – Extending the BookSwap Application
6.2. Exploring Godog
6.3. Implementing Tests with Godog
6.4. Using Database Assertions
7. Refactoring in Go
7.1. Understanding Changing Dependencies
7.2. Relying on Your Tests
7.3. Error Verification
7.4. Splitting Up the Monolith
8. Testing Microservice Architectures
8.1. Functional and Non-functional Testing
8.2. Contract Testing
8.3. Breaking Up the BookSwap Monolith
8.4. Production Best Practice
9. Challenges of Testing Concurrent Code
9.1. Concurrency Mechanisms in Go
9.2. Applied Concurrency Examples
9.3. Issues with Concurrency
9.4. The Go Race Detector
9.5. Use case – Testing Concurrency in the BookSwap Application
10. Testing Edge Cases
10.1. Code Robustness
10.2. Usage of Fuzzing
10.3. Property-based Testing
10.4. Use Case – Edge Cases of the BookSwap Application
11. Working with Generics
11.1. Writing Generic Code in Go
11.2. Table-driven Testing Revisited
11.3. Extending the BookSwap Application with Generics
11.4. Testing Best Practices
Course Features
- Lectures 13
- Quizzes 2
- Duration 32 hours
- Skill level Intermediate
- Language English
- Students 13
- Certificate Yes
- Assessments Yes
- 3 Sections
- 13 Lessons
- 32 Hours
- 1. PERSIAPAN2
- 2. PEMBELAJARAN11
- 2.11. Introduction to Test-Driven Development
- 2.22. Unit Testing Essentials
- 2.33. Mocking and Assertion Frameworks
- 2.44. Building Efficient Test Suites
- 2.55. Performing Integration Testing
- 2.66. End-to-End Testing the BookSwap Web Application
- 2.77. Refactoring in Go
- 2.88. Testing Microservice Architectures
- 2.99. Challenges of Testing Concurrent Code
- 2.1010. Testing Edge Cases
- 2.1111. Working with Generics
- 3. PENUTUPAN2




