Существует два типа тестирования, во-первых, это техническое тестирование, чтобы убедиться, что код, воплощающий функции алгоритма, особенно в пределах, определенных проектом, и особенно в крайних случаях.
Вторая форма - это функциональное тестирование, чтобы увидеть, соответствуют ли выходные данные, созданные алгоритмом, проектному замыслу. Для этого вам не обязательно знать о реализации, и есть разумный аргумент, чтобы сказать, что это делается более объективно, если вы этого не сделаете.
Конечно, если алгоритм тривиален и все возможные результаты могут быть известны, тогда тестирование - это просто вопрос получения тестовых данных, которые выполняли граничные условия.
Однако, в зависимости от алгоритма, это может быть невозможно. В тех случаях, когда алгоритм анализирует данные в пространстве, которое нелегко визуализировать (скажем, он имеет 27 измерений и 1М точек данных), тогда только тривиальные случаи могут быть проверены на функциональную точность. Ситуация ухудшается, если в результате анализа нет единственного «правильного» ответа, а есть множество вероятных результатов. В этих случаях требуется опытный аналитик, чтобы посмотреть на результаты, чтобы увидеть, имеют ли они смысл. Иногда это тот же человек, который реализует код, иногда нет. В этих случаях реализация почти наверняка будет поставлена под сомнение при попытке понять результаты, которые сами по себе будут сложными.
Итак, короткий ответ - да, если это возможно, но это не всегда необходимо, поскольку алгоритм полностью объясним.