Как протестировать числовые аналитические стандартные программы?

У меня была та же проблема. В моем случае я думаю, что проблема заключалась в том, что когда я сделал слияние, моя копия ветки слияния была устаревшей по сравнению с удаленной. (коллега сделал удаление, а не меня)

В любом случае, что исправлено, он удаляет всю рабочую копию и клонирует ее заново.

7
задан nbro 30 September 2017 в 00:28
поделиться

3 ответа

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

  1. Некоторые численные методы допускают некоторые метавзгляды. Например, обратимые операции позволяют Вам настраивать тестовые сценарии, чтобы видеть, ли результат в приемлемых ошибочных границах оригинала. Например, матричные времена M-инверсии матрица M * случайный вектор V должны привести к V снова, к в некоторой приемлемой мере ошибки.
    Очевидно, этот пример осуществляет матричную инверсию, умножение матриц и матричное векторное умножение. Мне нравятся цепочки как они, потому что можно генерировать довольно много случайных тестовых сценариев и получить статистическое покрытие, которое было бы сильным ударом для записи вручную. Они не осуществляют единственные операции в изоляции, все же.

  2. Некоторые численные методы имеют выражение закрытой формы своей ошибки. Если можно настроить ситуацию с известным решением, можно затем сравнить различие между решением и расчетным результатом, ища различие, которое превышает эти известные границы.

Существенно, этот вопрос иллюстрирует проблему, что методы испытательного комплекса хорошо требуют довольно большого количества знаний проблемной области. Определенные ссылки запросили бы немного более определенную информацию о том, что Вы тестируете. Я определенно рекомендовал бы, по крайней мере, иметь рекомендуемый книжный список Steve Yegge под рукой.

3
ответ дан 7 December 2019 в 10:11
поделиться

Если Вы собираетесь быть выполнением матричных вычислений, используйте LAPACK. Это очень хорошо протестировано код. Очень умные люди работали над ним в течение многих десятилетий. Они думали глубоко о проблемах, что непосвященное никогда не думало бы о.

В целом я рекомендовал бы два вида тестирования: систематичный и случайный. Систематическим я означаю исследовать пограничные случаи и т.д. Помогает, можно ли считать исходный код. Часто алгоритмы имеют точки разветвления: вычислите этот путь к числам в этом диапазоне, этот другой путь к числам в другом диапазоне, и т.д. Тест оценивает близко к точкам разветвления с обеих сторон, потому что это - то, где ошибка приближения является часто самой большой.

Случайные входные значения важны также. При рациональном выборе всех тестовых сценариев можно систематически избегать чего-то, что Вы не понимаете, проблема. Иногда можно хорошо использовать случайные входные значения, даже если у Вас нет точных значений для тестирования против. Например, если у Вас есть код для вычисления функции и ее инверсии, можно генерировать 1 000 случайных значений и видеть, отложило ли применение функции и ее инверсии Вас близко к тому, где Вы запустили.

2
ответ дан 7 December 2019 в 10:11
поделиться

Проверьте книгу David Gries под названием Наука о Программировании. Это о доказательстве правильности программ. Если Вы хотите быть уверенными, что Ваши программы корректны (на грани доказательства их правильности), эта книга является хорошим местом для запуска.

Вероятно, не точно, что Вы ищете, но это - ответ информатики на вопрос о разработке программного обеспечения.

1
ответ дан 7 December 2019 в 10:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: