<img src="https://secure.leadforensics.com/133892.png" alt="" style="display:none;">

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

Компоненты системы

Современная информационная система – большой, сложный и комплексный продукт, состоящий из множества компонентов:

  • Клиента с GUI,
  • Программного сервера,
  • СУБД,
  • Аппаратного обеспечения и др.

Каждый из видов компонентов при этом может быть не в единственном числе, а сама система может взаимодействовать по разным каналам с другими столь же сложными системами, внешними сервисами, подключаемым оборудованием и т.д.

Также, целевые информационные системы строятся на основе систем, компонент, библиотек сторонних вендоров, которые развиваются с течением времени. Здесь под целевой информационной системой подразумевается внедряемая/сопровождаемая информационная система.

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

Этапы жизненного цикла системы

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

  • этап разработки и внедрения,
  • этап сопровождения и развития,
  • работы по обновлению целевой системы в связи с выпуском вендорами новых версий ее компонентов.

На этих этапах присутствуют:

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

Для обеспечения стабильности системы в связи с изменением ее компонентов и алгоритмов применяются различные методы тестирования.

Методы тестирования

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

  1. Модульное тестирование (Unit test)

     

    Цель: проверить, что код работает именно так, как должен (при заданных входных параметрах выдает предполагаемый результат).

  2. Анализ покрытия кода тестами (Test coverage)

    Цель: проверить, что весь наш код отрабатывает при модульном тестировании, что нет не участвующих в тестировании участков кода.

  3. Анализ стилистики кода

    Цель: проверка кода на соблюдение стандартов разработки (отраслевых, корпоративных, принятых на проекте).

  4. Анализ производительности (Benchmark, Profiling)

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

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

Технологии тестирования

Рассмотрим технологии, которые можно применить для модульного тестирования и покрытия кода тестами.

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

В качестве примера можно привести такой упрощенный критерий:

  • Исходные данные: в систему внесен документ реализации товаров на сумму 100 руб., со ставкой НДС 20%, НДС сверху.
  • Действия пользователя: пользователь формирует отчет по продажам за период, в котором введен документ.
  • В результате в отчете отображена сумма реализации 100 руб. и сумма НДС 20 руб.

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

  • Вручную такое тестирование, как правило, выполняется единожды, поскольку выполнять каждый раз полный комплект тестов очень трудоемко.
  • Нет гарантии того, что тесты, описанные в техническом задании покрывают функциональность полностью. Т.е. даже если тесты описаны и проводятся регулярно, вероятно наличие не протестированного функционала.

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

Инструменты автоматизированного тестирования

В зависимости от платформы, применяются различные инструменты тестирования. Рассмотрим те инструменты, которые можно применить на платформе 1С:

  1. Для Unit-тестирования можно применять систему «1С:Сценарное тестирование 8», хотя сценарное тестирование и отличается от блочного.
  2. Для проверки соблюдения стандартов 1С существует инструмент «Автоматизированная проверка конфигураций».
  3. Для анализа производительности можно применять хорошо себя зарекомендовавший «Корпоративный инструментальный пакет 8».

К сожалению, инструмента анализа покрытия кода 1С тестами пока не встречал.

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

Преимущества применения технологий тестирования

Как и у любой активности, в случае применения тестирования есть свои плюсы и минусы.

Проведенный опрос показал, что к минусам относят:

  1. Необходимость дополнительно писать сами тесты и писать их правильно.
  2. Необходимость строить свой код таким образом, чтобы тесты могли исполняться.

К плюсам, на мой взгляд, относятся:

  1. Повышение качества разрабатываемого функционала.
  2. Снижение трудозатрат на повторное тестирование. Тем более, что тестировать полезно каждую сборку целевой системы.
  3. Повышение привлекательности компании для заказчиков. Применение технологий автоматизированного тестирования является показателем высокой культуры разработки и практически мировой тенденцией.
  4. Монетизация разработанных тестов, как продукта интеллектуальной деятельности. Например, по завершению проекта тесты могут быть переданы заказчику, если заказчик планирует развивать систему силами собственного ИТ-подразделения.

А что касается обозначенных «минусов», то их я, скорее, считаю плюсами, которые позволят обеспечить преемственность кода.

Выводы

Технологии автоматизированного тестирования полезны и повышают качество продукта, а их применение является ценным и повышает привлекательность компании для клиентов. Следует стремиться их применять и совершенствовать.

Обсудить

Вас может заинтересовать

Зачем нужен парсинг в среде 1С? Наверное, любой сотрудник службы маркетинга, имеющий дело с интернет-бизнесом, или аналитик, желающий знать положение своей фирмы на рынке или среди конкурентов, сталкивался с задачей сбора информации на различных сайтах по специфике своего бизнеса.
Зачастую в компании, которая уже работает в системе «1С:ERP Управление предприятием» (или «1С:Комплексная автоматизация», или «1С:Управление торговлей») или только собирается ее внедрить, возникают вопросы:
О бизнес-процессах, что такое BPM Разговаривать о процессном подходе, методологии BPM и нотации BPMN невозможно без понятия бизнес-процесса.
right-arrow share search phone phone-filled menu filter envelope envelope-filled close checkmark caret-down arrow-up arrow-right arrow-left arrow-down