Identify functions most in need of testing, and hardest to test
In addition to our opportunistic write-tests-as-you-go approach, we should also direct our testing efforts on the functions that most need to be tested. This includes (possibly)
- Big functions
- Volatile functions (ones that have changed many times)
- Functions that have had lots of bugs in them in the past
- Functions nobody understands
- Functions with high complexity
- Functions with high complexity-to-line ratio
- Functions with high code-to-comments ratio
We should also look at what's hardest to test, including possibly
- Anything that hits the OS directly
- Anything that's windows only.
- Anything that calls many other functions
- Anything that calls many other modules
- Anything that indirectly calls most of the rest of Tor.