Raw notes can be found on the wiki at:
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=195730039
I wanted to outline key decisions and next steps around implementing cucumber as test framework and leveraging community efforts to identify test cases to be created and begin implementing those test cases.
Key decisions that were made:
Selection of Test Framework
- Cucumber was chosen as it enables business-driven test design and behavior-driven development where semi and non-technical individuals with more domain knowledge can easily write test cases.
Implementation of Cucumber Framework
- Aleks to implement changes he made to build scripts to improve developer experience into upstream
- Cucumber framework to then be implemented (Aleks)
- In future can implement test containers for integration tests.
- Ongoing changes that Petri and Aleks are working on with the REST API layer can happen in parallel
Creation of Test Cases
- Identify and separate out failing integration tests that should be in unit test cases. (Aleks)
- Convert a few existing integration tests to unit tests as examples
- Define the expected code coverage we'd want at a functional module leve (i.e. module should have at least 80% unit testing coverage)
- Identify which unit test cases to focus on and ultimately have a wiki page with five categories, each category having 100 to 200 test cases and red or green tick mark to show if we have coverage.
- Create a test data set (No owner yet)
- Create a replicable cookbook for creation of test cases using DBUnit for setting up the database and providing a few examples for others to follow. Test cases can be set up with simple CSV files.
- In future can generate Jacoco and other reports for test coverage.
- We can reference some previous test cases that were documented at https://drive.google.com/drive/folders/1T5MlVh0KWC6bQmqiZwEmoI73Q-0cuaxr?usp=sharing
Documentation
In parallel we need to:
- Update documentation on testing
- Update our strategy and guidance on what tests (unit and/or integration) are required for PR to be contributed.
- It is still outstanding if test should be part of the PR or separate
- Don't want to add too much friction to developers by requiring too many test to be created
- Could put skeleton of test in place in Cucumber, mark as ignore test and then set up Github Actions to create a todo list of ignored tests that other volunteers could work on.