Вы правы, что сбои происходят из-за ошибок AssertionErrors, генерируемых методами утверждений JUnit, либо путем генерирования ошибки AssertionError, либо из-за исключения, объявленного вами в аннотации @Test, а ошибки происходят из других неожиданных исключений. Но между ними есть важное различие:
Ошибка означает, что ваш тест был выполнен правильно и обнаружил дефект в вашем коде.
Ошибка может означать ошибку в вашем коде, но такую, которую вы даже не проверяли. Это также может означать, что ошибка находится в самом тесте.
Короче говоря, сбой означает, что вам нужно переписать код, который тестируется. Ошибка означает, что это может быть модульный тест, который вам нужно переписать. Это может означать это, даже если ошибка была в вашем коде, например, NullPointerException, потому что вы обнаружили дефект, который вы даже не тестировали, поэтому может быть целесообразно проверить это.