Как проверить программу в vba

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

На следующем этапе оказывается пользительнее и выгоднее сначала писать тест для метода, а уже затем сам метод

Возникло желание поручить этап тестирования компьютеру.

Одна из технологий тестирования доступна начинающим программистам: юнит-тестирование (ЮТ).
Чтобы насладиться ЮТ (которое создано для уменьшения затрат на отладку) нужно: освоить объектно-ориентированное мышление в стиле Давида Вэста и его евангелиста Егора Бугаенко.

В вашей программе будут простые, тупые, надёжные исполнители: функции-методы, выполняющие что-то одно, что можно проверить. И для тестирования простых функций придумали ЮТ. Вы автоматически попадаете в зону чистого и ремонтопригодного кода. Для этого не нужно быть хакером.

Наоборот: стремимся разлагать сложность, чтобы Вы сами и любой обычный программист, хотели многократно использовать код. Порядок бьёт класс.

FIND в VBA – полный гайд по поиску в VBA (Серия VBA 26)

Что делает ЮТ? Вызывает функцию с нужными аргументами и проверяет возвращаемое значение.

Программисты-хакеры пишут сложные интеллектуальные функции типа крестьянина-хвата: он и пахарь, и жнец и на дуде игрец. Для такой функции сложно написать юнит-тест.

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

Во взрослых языках программирования инструменты ЮТ распространены. Для VBA мне известен RubberDuck.
Для себя, под него, я написал код, который анализирует написанный мною код и сам создаёт для него юнит-тесты.

Умелое применение ЮТ экономит интеллектуальные усилия. Чем меньше усилий, тем больше благодати при программировании — тем больше Вы будете хотеть программировать. Синергия.

Задавайте вопросы в комментариях

Источник: inexsu.wordpress.com

Обработка ошибок Приемы тестирования программ VBA

Главный прием обеспечения безошибочной работы программы — это ее тестирование. При создании крупных программных продуктов на их тестирование часто уходит не меньше времени, чем на их создание. Поскольку в наших условиях рассчитывать на то, что тестировать вашу программу будет профессиональный тестер, не приходится, проверять ее придется вам самим. Вот некоторые советы по тестированию:

  • попытайтесь запустить программу при работе с большим количеством документов или когда не открыто ни одного документа;
  • посмотрите, как работает программа, когда окно документа развернуто, свернуто или размер его изменен;
  • проверьте, как работает программа, когда выделены разные элементы или группы элементов;
  • если предусматривается ввод информации, попробуйте специально передать программе неверные значения. Например, если программа ожидает числовых значений, попробуйте ввести строковое значение, значение даты или оставить строку пустой;
  • попробуйте прервать работу программы в самый неподходящий момент и потом вновь запустить ее;
  • проверьте, как ведет себя программа, когда пропадает сеть, заканчивается свободное место на диске, заканчивается бумага в принтере и т.п.
  • проверьте работу программы под разными версиями Office и операционных систем (в том числе англоязычных и локализованных);
  • попробуйте до запуска программы и во время ее работы переставлять системную дату и время, устанавливая самые невероятные значения.
Читайте также:
Как называется программа для монтажа от adobe

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

Ячейки в VBA: Как использовать Cells в VBA (Серия VBA 6)

Мне очень нравится «диверсионный» подход при тестировании программ. Представьте себе, что вы — вредитель и диверсант, у которого цель — вывести программу из строя. Потом опробуйте те способы, которые вам пришли в голову. Если способ оказался удачным, придумайте от него защиту. Как ни удивительно, но реальная работа пользователей с вашей программой будет очень похожа на действия таких диверсантов.

Источник: vbastudio.ru

Лабораторная работа №2. Отладка программ и обработка ошибок в vba

Лабораторная работа служит для ознакомления с возможностями VBA по отладке программ и обработке ошибок и приобретения практических навыков по их использованию при отладке программ.

Основные сведения о средствах отладки и обработки ошибок

Отладка программ — это проверка и внесение исправлений в программу при ее разработке.

В процессе отладки программы возможны три вида ошибок:

  • ошибки компиляции, возникающие при неправильном использовании синтаксиса инструкций, свойств и методов объектов. Эти ошибки выявляются на уровне компиляции и легко исправляются;
  • ошибки выполнения, возникающие при выполнении программы. Причиной таких ошибок может быть отсутствие данных, неправильные данные, неготовность устройства и так далее. Для устранения возникновения этих ошибок целесообразно использовать имеющиеся в VBA средства обработки ошибок.

Обработка ошибок — это задание реакции на ошибки, которые возникают во время выполнения программы. Целесообразно в программе создать подпрограмму — обработчик ошибок, тех которые могут возникнуть в данной программе на этапе выполнения;

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

К средствам обработки ошибок относятся операторы On Error, Resume. Оператор On Error осуществляет передачу управления на подпрограмму обработки ошибок. Возможны три варианта синтаксиса оператора:

On Error GoTo метка — передача управления на подпрограмму, идентифицирующуюся меткой;
On Error Resume Next — ошибка игнорируется, и управление передается следующему оператору за тем, при выполнении которого возникла ошибка;
On Error GoTo 0 — отключает обработку ошибок для данной процедуры.

Оператор Resume передает управление из обработчика ошибок в программу, возможны следующие варианты синтаксиса оператора:

Resume [0] — повторное выполнение оператора, вызвавшего ошибку;
Resume Next — выполнение следующего оператора за тем, при выполнении которого возникла ошибка;
Resume метка — выполнение оператора, помеченного меткой.
Читайте также:
Аграрная программа столыпина предусматривала такие меры как ликвидация помещичьего земледелия

Объект Err, через свойства и методы которого можно получить о последней ошибке выполнения. Свойства объекта Err:Number — номер возникшей ошибки; Source — имя проекта, в котором возникла ошибка; Description — строка с описанием ошибки; HelpFile — полное имя файла справки; HelpContext — идентификационный номер ошибки в файле справке; LastDLLError — содержит код системной ошибки для последнего вызова DLL. Методы объекта Err:Clear — очищает значения всех свойств объекта Err; Raise — генерирует ошибку во время выполнения программы. Используется для проверки работы обработчика ошибок, или создания собственных ошибок при выполнении программы. Средства отладки VBA дают возможность прервать выполнение программы в точке останова (точка останова — это специальная инструкция в процедуре VBA, на которой работа процедура приостанавливается), обеспечивают возможность пошагового выполнения процедуры, позволяют в процессе работы процедуры отслеживать значения ее переменных, выражений, свойств объектов, и если нужно изменять их. В VBA имеется три режима работы с программой:

  • режим конструктора (режим работы с текстом программы);
  • режим выполнения (текст программы не доступен для изменения работы, его можно только просматривать);
  • режим прерывания (приостановка работы программы, режим позволяет просматривать значения переменных, продолжать или прекращать работу программы, вносить изменения в текст программы).

Команды отладки доступны из меню Отладка или через панель Отладка. VBA имеет следующие средства отладки:

Запуск/ Продолжение Переключение из режима конструктора в режим выполнение, или из режима прерывания в режим выполнения
Прервать Переключение в режим прерывания
Сброс Переключение из режима прерывания или выполнения в режим конструктора
Точка останова Устанавливает / удаляет в текущей строке точку останова
Шаг с заходом Выполняет следующую строку с заходом в процедуры
Шаг с обходом Выполняет следующую строку без захода в процедуру, процедура выполняется полностью
Шаг с выходом Выполняет оставшуюся часть процедуры и останавливается на следующем после вызова процедуры операторе
Окно локальных переменных Открывает окно с текущими значениями всех локальных переменных процедуры
Окно отладки Открывает окно, в котором можно выполнить нужные операторы
Окно контрольного значения Открывает окно, в котором можно просматривать текущие значения переменных, выражений
Стек вызова В режиме прерывания открывает диалоговое окно со списком всех работающих процедур

Выполнение лабораторной работы

  1. Открыть новый документ EXCEL или WORD.
  2. Добавить в проект модуль с именем Отладка.
  3. Добавить в модуль процедуру, подсчитывающую отношение суммы элементов массива и их произведения, а также нахождение среднего арифметического элементов массива, значение которых являются четными числами:

Public Sub pr_Otl1() Dim b(10) As Integer Dim s As Single Dim p As Integer Dim s1 As Single Dim k As Integer p = 1 For i = 1 To 10 b(i) = InputBox(«Введите число») If b(i) Mod 2 = 0 Then s1 = s1 + b(i): k = k + 1 s = s + b(i): p = p* b(i) Next s = s / p : MsgBox s s1 = s1 / k : MsgBox s1 End Sub

  1. Выполнить отладку процедуры. Запустить процедуру на выполнение и ввести значения элементов массива 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 .
Читайте также:
Лучшая программа для чтения аудиокниг на Андроид

VBA выдает ошибку выполнения № 6 — «переполнение» (Overflow). В окне с сообщением об ошибке нажать кнопку Debug(Отладка). Цветом выделяется оператор, выполнение которого привело к возникновению ошибки.

  1. Просмотреть значения переменных, влияющих на результат в режиме прерывания. Для этого в VBA имеется несколько средств:
  • для просмотра значения конкретной переменной, установить на ее имя указатель мыши и значение переменной отобразится во всплывающей подсказке. Если этого не произошло, следует установить флажок AutoDataTips на вкладке Editop в окне команды Tools/Options. Просмотреть значение переменных p и b(i);
  • для просмотра значений всех локальных переменных выполнить команду ViewLocalsWindow(ВидОкно локальных переменных);
  • для просмотра значений нужных переменных и выражений использовать окно Watches(Контрольные значения).

Просмотреть в контрольном окне значение переменных p и b(i), а также выражения p*b(i). Для добавления переменной (выражения) в контрольное окно, следует выделить ее имя (выражение) в операторе и выполнить команду AddWatch(ОтладкаДобавить контрольное значение). Просмотр окна Watches позволяет сделать вывод, что тип переменной p не соответствует помещаемому значению. Тип переменной р необходимо изменить на Long (Длинное целое). Внести изменение в текст процедуры. Закрыть окно Watches. Повторно выполнить программу.

  1. Продолжить отладку программы. Запустить программу на выполнение и ввести значения 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. VBA выдает ошибку выполнения №11 — «деление на 0» (Division by zero). Просмотреть значение переменных, участвующих в вычислениях в операторе, выполнение которого привело к возникновению ошибки.
  2. Перейти из режима прерывания программы в режим конструктора. Для этого выполнить команду RunReset(ЗапускСброс) или нажать кнопку Сброс на панели Стандарт.
  3. Продолжить отладку программы. Запустить ее на выполнение и ввести значения 1,3,5,7,9,11,13,15,17, 19. VBA выдает ошибку выполнения № 6 — «переполнение». Просмотреть значение переменных, участвующих в вычислениях в операторе, выполнение которого привело к возникновению ошибки.
  4. Добавить в процедуру обработчик ошибок. Для этого отредактировать процедуру в соответствии с приведенным ниже текстом:

Public Sub pr_Otl1() Dim b(10) As Integer Dim s As Single Dim p As Long Dim s1 As Single Dim k As Integer On Error GoTo MyErrHandler p = 1 Vvod: For i = 1 To 10 b(i) = InputBox(«Введите число») If b(i) Mod 2 = 0 Then s1 = s1 + b(i): k = k + 1 s = s + b(i): p = p * b(i) Next s = s / p MsgBox s s1 = s1 / k MsgBox s1 Exit Sub MyErrHandler: Select Case Err.Number Case 6 MsgBox «среди элементов массива нет четных чисел, повторите ввод» Err.Clear: s1 = 0: p = 1 Resume Vvod Case 11 MsgBox «Один из элементов массива равен нулю,» отношение суммы к произведению элементов найти нельзя» Resume Next Case Else Dim err_num As Integer err_num = Err.Number MsgBox «Ошибка выполнения»

  • запустить процедуру на выполнение;
  • после прерывания работы процедуры просмотреть значение переменных s,s1,p,k;
  • продолжить выполнение процедуры в режиме трассировки;
  • удалить точку останова.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru