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.