2010-03-04 5 views
1

Должны ли люди, анализирующие выход и результаты алгоритма, знать о его дизайне?
По анализу я имею в виду поиск случаев, когда алгоритм завершился неудачей и привел плохие результаты.Разделение и анализ алгоритмов

ответ

1

Существует два типа испытаний: сначала технические испытания, чтобы убедиться, что код, воплощающий функции алгоритма, особенно в границах, определенных дизайном, и особенно в краевых случаях.

Вторая форма - функциональное тестирование, чтобы увидеть, соответствуют ли выходы, создаваемые алгоритмом, намерениям проекта. Для этого вам необязательно знать о реализации, и есть разумный аргумент, чтобы сказать, что это делается более объективно, если вы этого не сделаете.

Конечно, если алгоритм тривиально и все возможные результаты могут быть известны, то тестирование это просто вопрос создания тестовых данных, которые выполняли граничные условия.

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

Итак, короткий ответ - да, если это возможно, но это не всегда необходимо для того, чтобы алгоритм был полностью объяснимым.

1

Есть два различных типа модульного тестирования:

  1. Blackbox
  2. GlassBox

Оба невероятно важны. Тесты Blackbox должны быть написаны исключительно на основе документации по функции (ее заявленные входы, заявленные предварительные условия, заявленные результаты, заявленные постусловия и заявленные ошибки и поведение/результаты в случае возникновения таких ошибок). Тестирование Glassbox пытается обеспечить правильную работу всех ветвей внедрения и требует рассмотрения реализации. Такие тесты обычно предоставляют несколько примеров ввода для каждой ветви исполнения.

Что касается анализа ... Обычно, когда люди говорят об «алгоритмическом анализе», речь идет не о конкретной реализации, а скорее о теоретическом анализе алгоритма, обычно использующем его псевдокод и обычно для этой цели проверки правильности алгоритма и верхней границы его наихудшего или ожидаемого времени работы. Такие анализы обычно требуют псевдокода (или, по крайней мере, какого-либо другого формального описания поведения алгоритма), чтобы обосновать и доказать свойства об этом.

Смежные вопросы