Как создать тест в excel с макросами
Перейти к содержимому

Как создать тест в excel с макросами

Генерация автоматических тестов: Excel, XML, XSLT, далее — везде

Есть определенная функциональная область приложения: некая экспертная система, анализирующая состояние данных, и выдающая результат — множество рекомендаций на базе набора правил. Компоненты системы покрыты определенным набором юнит-тестов, но основная «магия» заключается в выполнении правил. Набор правил определен заказчиком на стадии проекта, конфигурация выполнена.
Более того, поскольку после первоначальной приемки (это было долго и сложно — потому, что “вручную») в правила экспертной системы регулярно вносятся изменения по требованию заказчика. При этом, очевидно, неплохо — бы проводить регрессионное тестирование системы, чтобы убедиться, что остальные правила все еще работают корректно и никаких побочных эффектов последние изменения не внесли.

Основная сложность заключается даже не в подготовке сценариев — они есть, а в их выполнении. При выполнении сценариев “вручную», примерно 99% времени и усилий уходит на подготовку тестовых данных в приложении. Время исполнения правил экспертной системой и последующего анализа выдаваемого результата — незначительно по сравнению с подготовительной частью. Сложность выполнения тестов, как известно, серьезный негативный фактор, порождающий недоверие со стороны заказчика, и влияющий на развитие системы («Изменишь что-то, а потом тестировать еще прийдется… Ну его. »).

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

Под катом будет рассказано об одном подходе, реализующим данную идею — с использованием MS Excel, XML и XSLT преобразований.

Тест — это прежде всего данные

А где проще всего готовить данные, особенно неподготовленному пользователю? В таблицах. Значит, прежде всего — в MS Excel.

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

Итак, постановка задачи
  • обеспечить подготовку данных в MS Excel. Формат должен быть разумным с точки зрения удобства подготовки данных, простым для дальнейшей обработки, доступным для передачи бизнес пользователям (последнее — это факультативно, для начала — сделаем инструмент для себя);
  • принять подготовленные данные и преобразовать их в код теста.
Решение

Пара дополнительных вводных:

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

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

Итак, архитектура решения:

  1. Преобразовать данные из Excel в XML определённого формата
  2. Преобразовать XML с помощью XSLT в финальный код тестового скрипта на произвольном языке программирования
Этап 1. Ведение данных в Excel

Здесь, честно говоря, я ограничился ведением данных в виде табличных блоков. Фрагмент файла — на картинке.

image

  1. Блок начинается со строки, содержащей название блока (ячейка “A5″). Оно будет использовано в качестве имени xml-элемента, так что содержание должно соответствовать требованиям. В той же строе может присутствовать необязательный “тип” (ячейка “B5″) — он будет использовано в качестве значения атрибута, так что тоже имеет ограничения.
  2. Каждая колонка таблицы содержит помимо “официального” названия, представляющего бизнес-термины (строка 8), еще два поля для “типа” (строка 6) и “технического названия” (строка 7). В процессе подготовки данных технические поля можно скрывать, но во время генерации кода использоваться будут именно они.
  3. Колонок в таблице может быть сколько угодно. Скрипт завершает обработку колонок как только встретит колонку с пустым значением “тип” (колонка D).
  4. Колонки со “типом”, начинающимся с нижнего подчеркивания — пропускаются.
  5. Таблица обрабатывается до тех пор, пока не встретиться строка с пустым значением в первой колонке (ячейка “A11”)
  6. Скрипт останавливается после 3 пустых строк.
Этап 2. Excel -> XML

Преобразование данных с листов Excel в XML — несложная задача. Преобразование производится с помощью кода на VBA. Тут могут быть варианты, но мне так показалось проще и быстрее всего.

Ниже приведу лишь несколько соображений — как сделать финальный инструмент удобнее в поддержке и использовании.

    Код представлен в виде Excel add-in (.xlam) — для упрощения поддержки кода, когда количество файлов с тестовыми данными более 1 и эти файлы создаются/поддерживаются более чем одним человеком. Кроме того — это соответствует подходу разделения кода и данных;

Этап 3. XML -> Code

Эта часть предельно специфична задачам которые решаются, поэтому ограничусь общими замечаниями.

    Начальная итерация начинается по элементам, представляющим листы (различные тестовые сценарии). Здесь можно размещать блоки setup / teardown, утилит;

Финальный комментарий

Через какое-то время файлов с тестовыми данными станет много, а отладка и «полировка» шаблонов генерации тестовых скриптов будет все продолжаться. Поэтому, прийдется предусмотреть возможность «массовой» генерации автотестов из набора исходных Excel файлов.

Заключение

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

В нашем проекте удалось довольно быстро создать набор тестовых сценариев для интеграционного тестирования сложной функциональной области — всего на данный момент около 60 файлов, генерируемых примерно в 180 тестовых классов tSQLt (фреймворк для тестирования логики на стороне MS SQL Server). В планах — использовать подход для расширения тестирования этой и других функциональных областей проекта.

Формат пользовательского ввода остается как и раньше, а генерация финальных автотестов можно менять по потребностям.

Код VBA для преобразования Excel файлов в XML и запуска преобразования (вместе с примером Excel и XML) можно взять на GitHub github.com/serhit/TestDataGenerator.

Преобразование XSLT не включено в репозиторий, поскольку оно генерит код для конкретной задачи — у вас все равно будет свой. Буду рад комментариям и pull request’ам.

Проектирование тестов в среде MS Excel и VBA

Если ваши ученики освоили в Excel представление и обработку данных, то можно переходить на качественно новый уровень работы с Excel – автоматизировать свою работу. Язык VBA (Visual Basic for Application) – язык программирования, который подходит для всех приложений Microsoft Office, это один из самых простых в изучении и применении языков, он является версией языка Visual Basic.

Предлагаю задания для создания проектов в виде тестов в среде MS Excel и VBA.

  • Откройте Excel.
  • Переименуйте Лист1 в Вопросник и составьте таблицу.

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

Пользовательские формы могут иметь вид:

UserForm1

UserForm2

  • При вызове следующего вопроса закрывается текущая форма, записываются результаты на лист Вопросник, и открывается форма со следующим вопросом.
  • В форме с последним вопросом запрограммировано только закрытие формы и запись результатов.
  • Спроектируйте на листе Excel Вопросник кнопку вызова форм:

Примечание. Подумайте, как изменится программа, если заполнить таблицу по вертикали.

Темы проектов:

1. Подобрать тест, обработать его, результаты показать через пользовательскую форму.

2. Вопросник по любому предмету, результаты которого обработать в Excel и выдать через пользовательскую форму оценку:

« Создание интерактивных тестов с использованием электронного процессора EXCEL. »

Нажмите, чтобы узнать подробности

Данная работа является контрольно-обучающим пособием по теме «Практическое применение табличного электронного редактора EXCEL », а именно создание интерактивных тестов.

Работу можно использовать на уроках информатики в 9-11 классах технического профиля, а также для пользователей начинающего уровня.

Microsoft Excel — программа для работы с электронными таблицами, созданная корпорацией Microsoft для Microsoft Windows, Windows NT и Mac OS. Она предоставляет возможности экономико — статистических расчетов, графические инструменты и, за исключением Excel 2008 под Mac OS X, язык макропрограммирования VBA (Visual Basic для приложений). Microsoft Excel входит в состав Microsoft Office и на сегодняшний день Excel является одним из наиболее популярных приложений в мире.

Также в Microsoft Excel можно создавать интерактивные тесты с помощью стандартных функций или макросов.

Создание интерактивных тестов в программе MS Excel.

(инструкция для изучения возможностей и применения MS Excel по созданию интерактивных тестов для учащихся старших классов)

Разработка состоит из трех разделов. В первом – основные сведения по MS Excel – даются лишь самые основные сведения по MS Excel, которые необходимо знать при создании тестов, опытным пользователям можно пропустить этот раздел. Во втором показана возможность создания интерактивного теста с помощью стандартных функций Excel, а в третьем с помощью макросов – набора команд, используемых для автоматического выполнения некоторых операций, что позволяет автоматизировать переход к следующему вопросу теста и возврат к началу теста.

Интерактивные тесты можно применять на различных этапах урока (вводный, текущий, заключительный инструктаж), на различных этапах контроля (входной, текущий, рубежный, итоговый). В моей практике тесты с удовольствием создают сами учащиеся. Наполняют ими свои курсовые проекты. Они привлекают внимание учащихся своим разнообразием, яркостью, возможностью самостоятельно создать мини программу для компьютера, которая не только считает оценку, но и будет применяться на уроках, приобретая практическую значимость для учащихся.

Для создания таких тестов не требуется специального программного обеспечения. Пакет MS Office (Excel в частности) имеется на каждом персональном компьютере. Этим объясняется доступность предлагаемой информации.

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

Основные сведения по MS Excel

Для создания теста необходимо знать несколько особенностей программы MS Excel, на которые имеются ссылки в данной разработке.

Перечень команд, которые управляют работой Excel, находится в основном меню (рис.1,1) Здесь Вы найдете команду Вставка, Данные, Сервис.

Пункты основного меню содержат раскрывающийся список команд, открыть который можно щелкнув левой кнопкой мыши на пункте меню. Так Вы найдете команды Проверка (пункта меню Данные), Лист (пункта меню Вставка), Макрос (пункта меню Сервис).

Каждая ячейка Excel имеет уникальный адрес, состоящий из названия столбца и строки (рис.1,2).

Столбцы таблицы Excel обозначаются латинскими буквами (рис.1,3), строки цифрами (рис.1,4). Обратите внимание, если будете вводить формулы с клавиатуры.

Формулы вводим в строку формул (рис.1,5), начиная со знака = (равенства).

Для создания фигуры к тесту воспользуемся панелью инструментов Рисование (находится в нижней части окна Excel), либо пунктом меню Вставка-Рисунок-Автофигуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *