Ну, ответ на ваш вопрос. Если вы не реализуете сложный генератор данных на основе таблиц, вы все делаете правильно с (1) и (2).
(1) охватывает правило «1 ошибка подтверждена, 1 новый контрольный пример».
И если структура данных псевдослучайного теста (2) соответствует чему бы то ни было в реальных жизненных ситуациях, это нормально.
(2) всегда можно улучшить, и это улучшится, в основном, со временем, если подумать о новых крайних случаях. Проблема со случайными данными для тестов заключается в том, что они могут быть случайными только до такой степени, что становится так трудно вычислить ожидаемый выходной результат из случайных данных в тестовом примере, что вам придется в основном переписать тестируемый алгоритм в тестовом примере.
Таким образом, (2) всегда будет соответствовать доле случаев. Если в один прекрасный день он будет соответствовать всем случаям, это будет фактически новая версия вашего алгоритма.