Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как проверить процедуры численного анализа?
Есть ли хорошие онлайн-ресурсы, чтобы создать, поддерживать и думать о написании тестовых подпрограмм для кода численного анализа?
Одно из ограничений, которое я вижу для чего-то вроде тестирования умножения матриц, заключается в том, что очевидные тесты (например, наличие одной матрицы, являющейся идентификатором) не могут полностью проверить функциональность кода.
Кроме того, существует тот факт, что вы обычно имеете дело с большими структурами данных, а также. У кого-нибудь есть хорошие идеи о том, как подойти к этому, или есть указатели на хорошие места для поиска?
Похоже, что вам нужно подумать о тестировании по крайней мере двумя разными способами:
Некоторые численные методы допускают некоторое мета-мышление. Например, обратимые операции позволяют настроить тестовые случаи, чтобы увидеть, находится ли результат в допустимых пределах ошибки оригинала. Например, матрица M-обратное время матрицы M * случайный вектор V должен привести к V снова, в пределах некоторой приемлемой меры ошибки.
Очевидно, что в этом примере выполняется матричное обратное, матричное умножение и матрично-векторное умножение. Мне нравятся такие цепочки, потому что вы можете генерировать довольно много случайных тестовых случаев и получать статистическое покрытие, которое было бы трудным, чтобы писать вручную. Однако они не проводят одиночных операций изолированно.Некоторые численные методы имеют замкнутое выражение своей ошибки. Если вы можете настроить ситуацию с известным решением, вы можете сравнить разницу между решением и вычисленным результатом, ища разницу, которая превышает эти известные границы.
В принципе, этот вопрос иллюстрирует проблему, что тестирование сложных методов хорошо требует довольно много знаний о предметной области. Конкретные ссылки потребуют немного более конкретной информации о том, что вы тестируете. Я бы определенно рекомендовал вам, по крайней мере, иметь список рекомендуемых книг Стива Йегге под рукой.
Если вы собираетесь выполнять матричные вычисления, используйте LAPACK. Это очень хорошо протестированный код. Очень умные люди работали над этим десятилетиями. Они глубоко задумались о проблемах, о которых непосвященные никогда бы не задумались.
В общем, я бы рекомендовал два вида тестирования: систематическое и случайное. Под систематическим я подразумеваю изучение краевых случаев и т. д. Это помогает, если вы можете прочитать исходный код. Часто алгоритмы имеют точки ветвления: вычислите этот путь для чисел в этом диапазоне, этот другой путь для чисел в другом диапазоне и т. д. Тестовые значения близки к точкам ветвления с обеих сторон, потому что именно там ошибка аппроксимации часто является наибольшей.
Случайные входные значения также важны. Если вы рационально выберете все тестовые случаи, вы можете систематически избегать чего-то, что вы не понимаете, является проблемой. Иногда вы можете хорошо использовать случайные входные значения, даже если у вас нет точных значений для тестирования. Например, если у вас есть код для вычисления функции и ее инверсии, вы можете сгенерировать 1000 случайных значений и посмотреть, приведет ли применение функции и ее инверсии к тому, что вы начали.
Ознакомьтесь с книгой Дэвида Грайса " наука программирования". Речь идет о доказательстве правильности программ. Если вы хотите быть уверены, что ваши программы верны (вплоть до доказательства их правильности), эта книга-хорошее место для начала.
Вероятно, это не совсем то, что вы ищете, но это ответ компьютерной науки на вопрос о разработке программного обеспечения.