Advanced Testing
#Talks
#Advanced Testing with Go
by Mitchell Hashimoto
Notes:
golden_test.go
Testing with golden files and updating them (while usingtestdata
).# udpate > go test -update
testing.go
Havingtesting.go
ortesting_.go
(orfile_testing.go
) to provide Testing API.network_testing.go
server listner fixture (see https://github.com/hashicorp/go-plugin ).subprocessing_test.go
testing subprocesses with Entrypoint
#Testing Techniques
by Andrew Gerrand
Notes_:
- Table-driven Tests
#Go Testing By Example
by Russ Cox
- Make it easy to add new test cases.
- Use test coverage to find untested code.
- Coverage is no substitute for thought.
- Write exhaustive tests.
- Separate test cases from test logic.
- Look for special cases.
- If you didn’t add a test, you didn’t fix the bug.
- Not everything fits in a table.
- Test cases can be in testdata files.
- Compare against other implementations.
- Make test failures readable.
- If the answer can change, write code to update them.
- Use txtar for multi-file test cases.
- Annotate existing formats to create testing mini-languages.
- Write parsers and printers to simplify tests.
- Code quality is limited by test quality.
- Scripts make good tests.
- Try rsc.io/script for your own script-based test cases.
- Improve your tests over time.
- Aim for continuous deployment.
#Testing Patterns
A test is not a unit test if:
- It talks to the database
- It communicates across the network
- It touches the file system
- It can’t run at the same time as any of your other unit tests
- You have to do special things to your environment to run it.