Testing
Automated testing and test driven development are some of the most important practices in software development especially when developing software in scientific disciplines. If you are not already sold on test driven development, or find it a burden, you should consult with your mentor to discuss software quality and collaborative development and how neither are possible without test driven development. You should also investigate the concept of Technical Debt and make every effort not to begin stacking it up in your own projects.
Python provides a set of test libraries and frameworks that are easy to use and most apps and projects that you work with with have at least a minimal test suite. You should learn how to run them, how to look at the automated test output from Continuous integration systems and how to write your own tests. You should also learn the difference between the different types of software tests and how to create and manage test suites for your own projects.
Goals/Objectives/Outcomes
- Understand the importance of software testing and how it is foundational to the discipline of scientific software development
- Understand how test driven development is practiced and why it is important
- Understand the concept of technical debt and how it plays a role in the lifespan of software
- Understand how to use python and django test frameworks
- Understand how to continuous integration systems work and how they are used to assure software quality
Reference Material
- https://en.wikipedia.org/wiki/Software_testing
- https://www.udacity.com/course/software-testing–cs258
- https://docs.djangoproject.com/en/1.8/topics/testing/
- https://docs.djangoproject.com/en/1.8/topics/testing/overview/
- https://docs.djangoproject.com/en/1.8/internals/contributing/writing-code/unit-tests/
- http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/
- https://realpython.com/blog/python/testing-in-django-part-1-best-practices-and-examples/
- http://django-testing-docs.readthedocs.org/en/latest/basic_unittests.html
- http://django-testing-docs.readthedocs.org/en/latest/views.html
- http://docs.python-guide.org/en/latest/writing/tests/
- https://docs.python.org/2/library/unittest.html
Measures of Success
- Participant has “got the gospel” about software testing
- Participant has demonstrated the ability to run the test suite for a larger project
- Participant has demonstrated knowledge of basic CI concepts and inspected the test server for a larger project
- Participant has written tests in their own apps and projects
- Participant can articulate the concept of Technical Debt and how it plays a role in software development
- Participant is committed to quality in their projects through testing