О Unit-тестах замолвите слово.Часть 1
Последнее время в контексте 1С очень много говорят о функциональном тестировании, BDD. А Unit-тестирование обходят стороной. Попробуем разобраться, для чего Unit-тестирование применять стоит.
- Описание
- Подробнее
Описание
Введение
Разберемся немного в терминологии:
Функциональное (E2E) тестирование — проверка, что сценарии работы пользователя выполняются. Другими словами прогоны тестовых пользовательский сценариев. Поддерживается фреймворками "Сценарное тестирование", "Vanessa-ADD", "Vanessa-Automation", "Тестер" и др. Большинство из этих фреймворков специально созданы для написания функциональных/сценарных тестов.
Unit-тестирование (модульное тестирование) — проверка на корректность отдельные единицы работы исходного кода программы. Минимальными единицами работы для нас являются процедуры и функции.
Получилось так, что наибольшую популярность среди программистов 1С получило функциональное тестирование. Такой вывод можно сделать по обилию публикаций и дискуссий на профессиональных конференциях.
Основной целью такого тестирования при его внедрении в первую очередь является уменьшение ошибок, в том числе организация регрессионного тестирования (англ. regression testing, собирательное название для всех видов тестирования программного обеспечения, направленных на обнаружение ошибок в уже протестированных участках исходного кода).
Функциональное тестирование требует подготовки — создание эталонных баз / шаблонов данных, проработки сценариев использования и их написания. Т.е. это больше история про процесс разработки, а не непосредственное написание кода, ответственность за поддержку лежит на команде.
Unit-тесты в противовес функциональным тестам пишется разработчиком в помощь себе. Они позволяют быстро прогнать все возможные варианты входных данных для написанного участка кода, облегчают рефакторинг.
Для Unit-тестов есть один специализированный фреймворк — xUnitFor1C (возможно я не прав, напишите, пожалуйста, в комментариях, если это не так). Его функционал плавно перекочевал в Vanessa-ADD. Также модульные тесты можно запускать и на фреймворках, предназначенных для функционального тестирования. Существуют плагин для EDT для написания unit-тестов с использованием фреймворка Vanessa-Automation (https://github.com/DoublesunRUS/ru.capralow.dt.unit.launcher).
Unit-тестирование и функциональное тестирование не исключают, а дополняют друг друга.
Функциональный тест vs Unit-тест
Попробуем сравнить разные виды тестирования.
Категории сравнения:
Скорость — время выполнения теста
Область действия — что тест проверяет
Сложность написания — объем необходимых знаний
Сложность запуска — насколько сложная инфраструктура нужна для запуска теста, насколько сложно обеспечить повторение однотипных тестов
Изменение трудозатрат на написание тестов с ростом количества тестов — как меняются количество времени, необходимое для написания тестов с ростом количества тестов и накоплением инструментария.
| Критерий | Функциональный тест | Unit-тест |
| Скорость | Медленный | Быстрый |
| Область действия | Сценарий пользователя | Процедура/Функция |
| Сложность написания | Средне | Средне |
| Сложность запуска | Средне | Легко |
| Трудозатраты на написание | Большие | Маленькие |
| Изменение трудозатрат на написание тестов с ростом количества тестов | Уменьшаются | Остаются неизменными |

