Test Driven Development (TDD) has become a standard best practice for developers, especially those working in an Agile development environment. TDD is more than just automated unit testing, it is a team and individual development discipline which, when followed correctly, increases productivity of both individual developers and entire teams. From the programmer’s perspective, TDD has another benefit – it allows programmers to eliminate the tedious tasks of debugging and reworking code so that programmers can focus on the creative work of designing and writing code. It makes programming fun again. The course integrates two primary learning streams. The first is the how to effectively implement TDD in a production or development environment and intel-grating TDD practices with other practices like software craftsmanship, agile design practices, continuous integration and best practices in program design and Go development. The second learning stream is an in depth and hands on deep dive into Go TDD tools, starting with the standard Go test framework but also including a number of useful TDD third party tools that are popular in the Golang community. The class is designed to be about 50% hands on labs and exercises, about 25% theory and 25% instruct-tor led hands on learning where students code along with the instructor.
This course is intended for Go programmers who have successfully completed ProTech’s “Introduction to Go Programming for Developers” (PT20182) or have an equivalent level of Go knowledge and experience. Students who do not have this prerequisite will find the course difficult to follow and the labs too fast pasted. Because the course does not have time that can be allocated to doing additional Go remedial instruction, this prerequisite is essential.
3 Days/Lecture & Lab
This course is intended for Go programmers who have successfully completed ProTech’s “Introduction to Go Programming for Developers” (PT20182) or have an equivalent level of Go knowledge and experience.
- The TDD process - “red, green, refactor”
- Eliminating technical debt with TDD
- Why TDD works
- Integrating the TDD discipline into a development process
- Using TDD to support programming and design best practices
- Developing a TDD project using the Go test framework
- Go test concepts, architecture and features
- Go assertions, using the testify package, hamcrest, gocheck, etc
- The concepts of using mocks.
- Mocking in Go: libraries (testify, gomock) and generators (counterfeit, minimock)
- How to developing good tests and test suites
- Best practices when using TDD to improve development
- TDD and concurrency in Go
- Migrating to TDD as a programming discipline