Efficient Software Testing
If you write any sort of code, chances are you have encountered bugs, even surprising ones that caused a lot of headache.
This course teaches a collection of simple techniques that not only help you prevent bugs, but also help you design software and focus on the broader structure of your project.
It will show you how testing can be very efficient with your time, and also fun!
Course Contents:
1. Approaches: overview of testing and workflows
2. Test-Driven Development: how to integrate testing in your work
3. Unit Testing: testing individual parts
4. Integration Testing: testing groups of unit working in tandem
5. Good Test Design: principles for good and efficient testing
6. Testing Complex Code: systemic approaches for complicated software
7. Testing Random Code: testing software that uses randomness
-
2. Test-Driven Development
11m
The Test-Driven Development (TDD) process is described as a way for building software in step with testing, as well as a tool for designing and refining software.
Learning Goals:
1. Understand the TDD workflow
2. Learn to use TDD as a design tool -
4. Integration Testing
7m 32s
The need for integration testing is presented, along with its benefits and best practices for performing it during development cycles.
Learning Goals:
1. Learn what integration testing is concerned with
2. See how it can find bugs in groups of correctly-working units -
5. Good Test Design
13m
Good general testing principles are presented, to give a solid foundation that can be used in most circumstances.
Learning Goals:
1. Understand some typical psychological biases around testing
2. Assess and address risk
3. Form a defensive testing mindset -
6. Testing Complex Code
22m
Testing strategies and demos for complex code are presented, with a focus on property-based testing (PBT). Common PBT patterns and typical examples are covered.
Learning Goals:
1. Recognize when code can have complex behavior
2. Form a systemic perspective on your code
3. Learn how to generate t... -
7. Testing Random Code
10m
Testing approaches are presented for randomized code, such as statistical or data processing software, machine learning, games, and much more. Additionally, best practices for randomized research software are listed.
Learning Goals:
1. Form a systemic image of randomness in your code
2. Learn to...