Resources¶
What to learn next¶
Try reading the chapter on reproducible computational environments and then the chapter on continuous integration. The chapter on reviewing outlines how you can further strengthen your code base by adding a formal reviewing stage to your development workflow.
Further reading¶
TutorialsPoint has a number of useful tutorials related to testing, as does the Turing Institute. It is also worth looking at softwaretestingfundamentals.com.
Definitions/glossary¶
Acceptance test: A test that the program meets the project’s fundamental requirements.
Code coverage: A measure which describes how much of the source code is exercised by the test suite.
End to end test: A test that runs the program from beginning to end and verifies that the output is correct.
Integration test: A test where units of code are combined and run, and the output is verified to check the units have been correctly integrated.
Mocking: Replace a real object with a pretend one to use when running tests.
Regression test: Comparing the result of a test before and after the code has been altered. If the output has changed a problem has been introduced somewhere in the program, and an error is thrown.
Runtime test: Tests embedded within the program which are run as part of it.
Smoke test: Very brief initial checks that ensure the basic requirements needed to run the project hold.
Stochastic code: Code which, while correct, does not always output the same result. For example a program that outputs ten random numbers will generate a different result each time, despite being correct.
System test: See “end to end test”.
Test driven development: A process of code development where unit tests are written before the units themselves.
Test stub: Fake implementations of parts of code which are used in testing to remove dependences.
Test suite: The tests that have been written for a project.
Testing framework: Tools that make writing and running tests less labour intensive.
Unit: A small piece of code that does one simple thing. It usually has one or a few inputs and usually a single output.
Unit test: A test that checks the behaviour of a unit.
Bibliography¶
Materials used: How this will help you/ why this is useful¶
Talk by Chrys Woods Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
Turing testing course basics Creative Commons share and remix
SSI blog Creative Commons Attribution Non-Commercial 2.5 License.
Materials used: General guidance and good practice for testing¶
SSI blog on testing software Creative Commons Attribution Non-Commercial 2.5 License.
Turing testing course Creative Commons share and remix
Mocking Attribution-NonCommercial-ShareAlike 3.0 Germany (CC BY-NC-SA 3.0 DE)
Testing with floating points Apache License 2.0
Materials used: Types of tests¶
Software testing fundamentals: levels of tests Copyleft - 2019 STF
Materials used: Smoke testing¶
Digitalocean Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Materials used: Unit testing¶
An introduction to continuous integration Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Software testing fundamentals: unit tests Copyleft - 2019 STF
Materials used: Integration testing¶
An introduction to continuous integration Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Software testing fundamentals: integration testing Copyleft - 2019 STF
Materials used: System testing¶
Software testing fundamentals: system testing Copyleft - 2019 STF
An introduction to continuous integration Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Materials used: Acceptance testing¶
An introduction to continuous integration Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Materials used: Regression testing¶
Sound software Creative Commons Attribution-NonCommercial 3.0 License
Examples of Regression Testing by Cem Karner Creative Commons Attribution-ShareAlike License 2.0
Adopting automated testing Apache License 2.0
Materials used: Runtime testing¶
Materials used: Test driven development¶
Testing your software Creative Commons Attribution-NonCommercial 3.0 License.
Why bother Creative Commons Attribution-NonCommercial 3.0 License.
Materials used: glossary¶
Netherlands eScience centre Creative Commons Attribution 4.0 International License