Speaker: Aaron Bassett
- The Very Top: Manual testing (most expensive)
- Functional Testing: End to end testing (long running, expensive)
- Integration Testing (test that components work well together)
- The Very Bottom: Unit tests (test 1 thing in isolation, fast and contained)
BDD: Behaviour Driven Development
Start development from user/usage scenarios. Use something structured to write these scenarios, eg Gerkhin.
Then as natural language keywords, allows boolean connections with
Work on formulating release checklists as well as feature files that describe the behaviours required to be present for a new release. Do not use those feature files for manual testing (too tedious and much), use checklists for that.
But use something like
pytest-bdd to work off these files, and look at something like
splinter, that supports testing in multiple browsers. Write BDD methods
Then statements. (You may also alias a method to other wordings at the same time.)
But these tests run a long time, and long running tests are horrible for coder motivation. And if you avoid making small
changes, your code base starts to smell. This is what unit tests come in. Seeing as they are low-level, we'll need to
mock and patch a lot of stuff. Reuse those mocks and patches! Also mock other services to you, using
responses. Think also of mocking failure states.
Integration tests do not need to cover everything, because we still have the other three steps of the testing pyramid, btw. Do not over engineer here!