It's explained in the error module comments, but it goes something like:

     TestError if a autotest/virt-test/test-module coding problem, bug, etc.
     TestFail if the subject of the test breaks or bug detected
     TestNA is if the test cannot run due to some external factor, bad config, bad host setup, etc.