Скрипты теста записи

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Если вы написали свой код в сотрудничестве с другими разработчиками или намереваетесь расширить или обновить его позже, необходимо протестировать код несколько раз. Тестирование части кода, каждый раз, когда вы или кто-то еще изменяетесь, это помогает вам гарантировать, что эта часть работает правильно. Когда вы планируете протестировать некоторую часть кода неоднократно, полезно записать тестовый скрипт и выполнить его каждый раз, когда необходимо протестировать код. Например, создайте следующую процедуру f. Эта процедура принимает два числовых аргумента, a и b, сравнивает их и возвращает большее число:

f := proc(a:Type::Numeric, b:Type::Numeric)
begin
  if a = b or a > b then
    return(a)
  else
    return(b)
  end_if
end_proc:

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

Каждый тестовый скрипт запускается с функции prog::testinit и концов с функцией prog::testexit. Чтобы задать имя протестированной процедуры, используйте print(Unquoted, "testname") после prog::testinit. Это имя не влияет на саму протестированную процедуру. Это только появляется в протоколах испытаний, сгенерированных вашим тестовым скриптом.

Чтобы протестировать процедуру f на различный выбор параметров, запишите следующий тестовый скрипт и сохраните его в файл test-f.tst. Тест не находит неожиданных результатов или ошибок. После того, как MuPAD выполняет тестовый скрипт, он генерирует протокол испытаний. Тестовый скрипт не требует никакого конкретного расширения файла. Можно использовать любое расширение файла, которое вы любите. Протокол испытаний показывает, что количество выполняет тесты, количество ошибок, с которыми сталкиваются при выполнении тестового скрипта, и время и память раньше выполняли тестовый скрипт:

//test-f.tst
prog::testinit("f");
print(Unquoted, "function f that compares two numbers")

prog::test(f(1, 1), 1):
prog::test(f(1, 2), 2):
prog::test(f(2, 1), 2):
prog::test(f(100, 0.01), 100):
prog::test(f(0.01, 100), 100):
prog::test(f(-10, 10), 10):
prog::test(f(2*I, 2*I), 2*I):
prog::test(f(2 + I, 2 + I), 2 + I):
prog::test(error(f(2 + I, 3 + I)), TrapError=1003):
prog::test(error(f(x, y)), TrapError=1202):
prog::test(error(f(x, x)), TrapError=1202):

prog::testexit(f)
Info:
11 tests, 0 errors, runtime factor  0.0  (nothing expected)
Info: CPU time:  12.7 s
Info: Memory allocation 20452460 bytes [prog::testexit]

Если вы изменяете исходную процедуру f, запускаете тестовый скрипт, чтобы отловить какие-либо неожиданные результаты:

f := proc(a:Type::Numeric, b:Type::Numeric)
begin
  if a >= b then
    return(a)
  else
    return(b)
  end_if
end_proc:

Вы не должны копировать тестовый скрипт в блокнот. Вместо этого можно выполнить тестовый скрипт что вы сохраненный в файл, не открывая файл. Выполнить тестовый скрипт:

  1. Выберите Notebook > Read Commands, чтобы открыть диалоговое окно Read Commands.

  2. Измените фильтр файла, чтобы показать тестовые файлы MuPAD или все файлы.

  3. Перейдите к тестовому файлу, который содержит скрипт, и нажмите OK.

Также используйте переменную READPATH, чтобы задать путь к папке, которая содержит файл. Затем используйте функцию read, чтобы найти и выполнить тестовый файл. Например, если вы сохраненный тестовый файл test-f.tst в папке C:/MuPADfiles/TestScripts, используйте следующие команды:

READPATH := "C:/MuPADfiles/TestScripts":
read("test-f.tst")
Error
in test function f that compares two numbers 7
Input: f(2*I, 2*I)
Expected:
 2*I
Got:       TrapError = [1003,
"Error: Can't evaluate to boolean [_leequal];\r\n  Evaluating: f"]
Near line: 9
Error in test function f that compares two
numbers 8
Input: f(2 + I, 2 + I)
Expected:  2 + I
Got:
      TrapError = [1003, "Error: Can't evaluate to boolean [_leequal];\r\n
 Evaluating: f"]
Near line: 10
Info: 11
tests, 2 errors, runtime factor  0.0  (nothing expected)
Info: CPU time:  12.7 s
Info: Memory allocation 20452460 bytes [prog::testexit]

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