Closed bkowshik closed 5 years ago
Spent an hour researching into System Testing in general and following are my notes:
Functional Testing
instead of System TestingLooked around for examples for system tests, particularly in Python; not sure if I am looking for right things. Would love to :eyes: some example projects with functional tests.
Taking inspiration from how Mercantile has tests for it's cli, we could have a similar setup where we have a tests/test_cli.py
file that tests the different steps in the Robosat pipeline like rs extract
, rs cover
etc. Something I want to try out is when a tests file has all the test function laid out, will the test runner run them in order or is that not predictable. If the tests are run in order, we could potentially wire-up in such a way that outputs of one step become the inputs to the next step. 😃
Think this is stale - going to close but please yell if that's not the case!
There are couple of open PRs in Robosat that affect multiple files and folders. I am thinking having a system test in place gives us more confidence in rebase and merging these PRs. Having this run for every commit on Travis would be amazing!
Steps
The different steps in the Robosat pipeline can be grouped into the following 4 groups. Grouping makes thinking about writing tests a little easier with clarity of what are inputs and outputs for each group and for a lot of cases, the output of the previous step is used as input for the next step.
Group 1. Data preparation
This group begins with a
pbf
file. So, ideally we create a small pbf file representing it and store it in the repository itself so that all tests are repeatable with examples based on this testing dataset.Group 2. Model training
Since, we want these tests to run on CPUs from TravisCI, the current strategy would be to keep the numbers of samples in the training and validation dataset small, 25-50 samples maybe.
Group 3. Post-processing
Need to make sure that the samples in the testing dataset as split across multiple tiles so that we can test the behavior of the merge step. Similarly, for the testing dataset, we could draw out a few polygons to represent parking lots mapped in OpenStreetMap instead of using raw OpenStreetMap data.
Group 4. Infrastructure
Tests for this group are of a lesser priority in comparison to the above three steps. So, this can definitely come later once we have the system tests for the above three groups finalized.