The Power of Go: Tests (Go 1.24 edition)

The Power of Go: Tests (Go 1.24 edition)

English | 2025 | 278 Pages | PDF, EPUB | 10 MB

Go’s built-in support for testing puts tests front and centre of any software project, from command-line tools to sophisticated backend servers and APIs. This book introduces you to all Go’s testing facilities, shows you how to use them to write tests for the trickiest things, and distils the collected wisdom of the Go community on best practices for testing Go programs. Crammed with hundreds of code examples, the book uses real tests and real problems to show you exactly what to do, step by step.

You’ll learn how to use tests to design programs that solve user problems, how to build reliable codebases on solid foundations, and how tests can help you tackle horrible, bug-riddled legacy codebases and make them a nicer place to live. From choosing informative, behaviour-focused names for your tests to clever, powerful techniques for managing test dependencies like databases and concurrent servers, The Power of Go: Tests has everything you need to master the art of testing in Go.

What you’ll learn

  • How to build practical, reliable, and delightful Go programs, guided by tests
  • All the latest facilities available in Go’s top-class testing libraries and tooling
  • Standard techniques like table tests, parallel tests, deep comparisons, and golden files
  • Randomised input generation and property-based testing
  • Usability testing and exploratory testing
  • Advanced techniques such as fuzzing and mutation testing, with detailed examples
  • How to use tests to support and streamline bug fixing, refactoring, and maintaining legacy code
  • Testing error handling, validation, sentinels, wrapped errors, and other sad-path behaviours
  • Testing the untestable: user interaction, databases, CLIs, and HTTP servers
  • How to test and refactor legacy systems with awkward dependencies
  • Testing concurrent and asychronous APIs
  • Why concurrency safety matters, and how to test for it
  • Writing scripted tests for command-line tools using the testscript language
  • How and when to use advanced techniques such as mocks, doubles, stubs, spies, fakes, and adapters
  • Brittle, feeble, and flaky tests, how to avoid them, and how to fix them
  • Time, and how to fake it for testing
  • How to design useful, informative, and challenging test cases
  • How tests can tell a story, and how to write that story in a clear, engaging, and readable way
  • Building a quality-focused culture in your organisation and giving productive code reviews
Homepage