Further Recommendations#
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.
TutorialsPoint has a number of useful tutorials related to testing, as does the Turing Institute. It is also worth looking at softwaretestingfundamentals.com.
Materials used: Motivation and Background#
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
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.