Topic: Unit Tests
Proposal type: Hardware [ ] , Software [ ] , Other [ ] : _________________
Mostly software, but possibly might need additional testing server like the autotest or coverity server once implemented. Python has some excellent unittest libraries, and since we use waf for building( which is python ), it would probably be best that the unit test system be python based. Many unit-tests themselves will be compiled code, so they will clearly be C/C++, but the wrapper-tools around this will be python.
Description: Problem: The autotest server currently tests the "well worn" code paths that are used for flying an aircraft, and does an excellent job of that, but the "corner cases" and other code paths are unfortunately not tested so well. Solution: The unit tests proposal aims to fix this by building up a library of code path tests that should "always work", but aren't validated well. Initially we can test that individual libraries give their expected output/s when given expected inputs, and/or we can choose to test higher-level functionality if desired.
Details / Plan for implementation: It's hoped that we will be able to implement a new Unit Testing "system", and integrate a fixed number of tests ( say 20?) of varying complexity that give a representation of what is possible with the system, and create a base on which others can build additional tests.
Planned amount: estimated $2000
- a general unit-testing framework
- ability to automatically execute the test suite.
- 10 new unit tests covering 2 subsystems ( probably based on existing "example" code that some libraries have being made to execute in a repeatable / testable method ) - integration of at least 5 existing unit tests (such as in AP_Math/tests)
- enough developer documentation that other developers can extend the framework easily.
Estimated time for completion: 2 months part-time