gifts2017

Bugs must die! или Как повысить качество внедрений инструментами тестирования

Опубликовал Евгений Шумилов (eu_genij) в раздел Программирование - Инструментарий

Речь в статье пойдет про тестирование, про качество программ и про то, как можно процесс тестирования автоматизировать. Статья написана по итогам доклада, прочитанного автором на Конференции IE 2013 Еvolution 23-24 мая 2013 года. Также она напечатана в Журнале Инфостарта №2.

Зачем нужно тестирование?

  • Для бизнеса принципиально важно быстро внедрять.
  • Для большинства сфер деятельности важна и критична стабильность работы информационных систем.
  • Соответственно, повышение качества может привести к значительным конкурентным преимуществам.
  • В случае если это ИТ-сфера, то автоматизация тестирования и повышение качества – это прямая прибыль.

  

Какими методами можно добиваться качества программных продуктов?

Про некоторые из этих методов на конференции Infostart Event 2012 рассказывал Артур Аюханов. Повторяться я не буду. Вкратце озвучу, три основных способа повышения качества:

  • Во-первых, – это правильное проектирование программных продуктов.
  • Во-вторых, – их качественное тестирование.

А также применение различных методик, которые приводят к повышению качества. Например, экстремальное программирование. 

Условные обозначения

Далее в статье будут использоваться условные обозначения:

  • Программы,
  • Ошибки,
  • Тестировщики. Тестировщиков так принято называть во всем мире, это не мы придумали.

 

Что такое тестирование?

Для термина «тестирование» есть разные определения, но самое правильное – это процесс обнаружения ошибок.

Ручное тестирование

В чем проблема? Протестировать "1С:Управление производственным предприятием" вручную практически нереально.

  • Это скучный процесс. Через какое-то время человек, который повторяет ряд одинаковых операций, начинает уставать. Соответственно, что-то не замечает. И это приводит к понижению качества.
  • Это длительный и трудоемкий процесс. Тестировать вручную можно, но только небольшой объем функционала.

Что такое «ошибка»

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

Методы классификации ошибок.

Основные:

  • когда ошибка была внесена в программу (когда она появилась),
  • как она обнаруживается,
  • как она себя ведет,
  • в какой среде она обитает.

Время внесения ошибок в программу

По времени внесения ошибок в программу можно выделить следующие основные классы:

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

  

Устойчивость и скрытность ошибок

По устойчивости ошибки тоже можно классифицировать:

  • Есть ошибки самые простые, самые приятные – которые возникают всегда при повторении одних и тех же действий, соответственно, их очень просто найти и очень просто исправить;
  • Есть значительно более сложные ошибки, например, ошибки, которые зависят от контекста. Соответственно, если контекст немного поменялся, то ошибку очень сложно обнаружить.
  • И, самый плохой класс ошибок – это стохастические ошибки (вероятностные ошибки), которые при одинаковой среде, при одинаковых условиях, при одинаковой «погоде на Марсе» могут проявляться, а могут не проявляться. Обнаружить их очень сложно. И они доставляют больше всего проблем.

Среда обитания ошибок

Ошибки могут зависеть от:

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

Виды тестирования для обнаружения ошибок

Какие есть виды тестирования для обнаружения ошибок?

  • Юнит-тестирование,
  • Функциональное тестирование,
  • Регрессионное тестирование,
  • Нагрузочное тестирование,
  • и другие.

Многие из этих видов тестирования можно различными методами автоматизировать.

Самое сложное с точки зрения автоматизации, наверное, usability.

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

Есть два метода тестирования:

  • Ручное,
  • Автоматическое.

Степени сложности автоматического тестирования

Автоматическое тестирование может быть также различной степени сложности:

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

 

Как тестируют на 1С

Сейчас в мире 1С принято тестировать с помощью пользователей. На самом деле это самый эффективный способ тестирования. Чем больше пользователей – тем быстрее они найдут все ошибки.

Но качество в 1С очень принципиально. Иногда необнаружение некоторых ошибок приводит к проблемам

То есть, тестировать с помощью пользователей можно (и все так и делают), но – это неправильно.

Место и роль специалистов по тестированию в мире 1С

Почему мы говорим, что в 1С тестирование производится с помощью пользователей?

Мы изучали статистику кадрового рынка: сколько требуется программистов 1С и сколько требуется программистов в других сферах. И, для сравнения, тоже самое относительно тестировщиков. Мы увидели, что на рынке 1С практически нет специалистов по тестированию, и их никто не ищет. А зачем? Пользователи протестируют, и все будет хорошо.

 

На каких этапах жизни программы можно применять тестирование?

  • Проектирование.
  • Разработка.
  • Внедрение.
  • Обновление. Все программные продукты обновляются в той или иной степени – соответственно, можно применять тестирование после обновления.
  • Поддержка. На этапе поддержки тоже могут быть какие-то модификации, изменения контекста работы программы и так далее и тогда тоже можно применять тестирование.
  • Доработки. После них – снова обновление и…  жизненный цикл продолжается.

Тестировать необходимо на всех этапах.

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

Ручное тестирование – это хорошо. Тестирование пользователями – тоже неплохо. Но, на самом деле, процесс тестирования можно автоматизировать, и для этого нужны инструменты.

Инструменты тестирования производства фирмы "1С"

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

  • Первый программный продукт – это «Автоматизированная проверка конфигураций» производства фирмы "1С".Она позволяет находить:
    • ошибки usability,
    • ошибки нарушения стандартов,
    • ошибки в коде методами статического анализа.

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

  • Далее – программный продукт производства фирмы "1С"«Корпоративный инструментальный пакет» (КИП). В нем есть подсистема «Центр управления производительностью», которая позволяет производить нагрузочное тестирование. Основная задача: поиск и устранение узких мест при работе с SQL-сервером.
  • Следующий программный продукт – опять-таки, производства "1С" – это «Сценарное тестирование». Он входит как в «Корпоративный инструментальный пакет», так и распространяется самостоятельно. Развитие платформы «1С:Предприятие 8.3» предназначено именно для улучшения работы этого программного продукта. То есть – продукт «Сценарное тестирование» и «1С:Предприятие 8.3» - работают в связке.
  • Следующий программный продукт «1С:Автоматизированное обновление измененных конфигураций. ПРОФ» - предназначен, в первую очередь, для тестирования после обновления измененных конфигураций, в которых могут быть проблемы.
  • И последний программный продукт «1С:Автоматическое тестирование конфигураций».

Все эти продукты доступны для приобретения в фирме "1С".  

 

Инструменты тестирования производства фирмы "1С-ИжТиСи" (дочерней компании "1С")

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

Первый программный продукт – это «Управление работой приложений в операционной системе с использованием имитации работы пользователей» (сценарное тестирование на уровне операционной системы), который позволяет тестировать как конфигурации 1С, так и любые другие приложения, которые работают на операционной системе Windows.

Далее, очень специфичный программный продукт «Автоматизированная система протоколирования и разрешения инцидентов», который позволяет обеспечить непрерывную работу предприятия, чтобы пользователи, не видели возникающих ошибок. Его основной функционал:

    • автоматическое фиксирование  и блокировка всех ошибок во время выполнения конфигураций;
    • возможность за счет «горячей замены кода» исправлять различные классы ошибок без перезапуска информационной базы.

Следующий программный продукт «Юнит-тестирование», в основном, предназначен для разработчиков тиражных решений и тех, кто применяет методологию «Разработка через тестирование», то есть TDD.

Еще один специфический программный продукт «Проверка дистрибутивов», предназначенный для проверки корректности дистрибутивов конфигураций 1С.

 

Инструменты тестирования от других производителей

  • Программный продукт «Нагрузочное тестирование» производства фирмы «1С-Рарус».
  • На Инфостарте есть ряд обработок, которые позволяют что-то тестировать автоматически.

Возможно, есть еще разработки, про которые я не знаю. Если такие есть – пишите, мы будем их изучать. 

Автоматизированная проверка конфигураций

Немного по каждому продукту:

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

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

Список ошибок, которые он может находить:

  • Ошибки проектирования,
  • Синтаксические ошибки,
  • Ошибки нарушения стандартов разработки,
  • Это, наверное, единственный продукт на текущий момент, который позволяет тестировать usability (ограниченный класс ошибок),
  • Также программный продукт позволяет определять проблемы с данными.

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

 

Корпоративный инструментальный пакет.
Центр управления производительностью

Следующий программный продукт: «Корпоративный инструментальный пакет», в частности «Центр управления производительностью».

Список ошибок, которые позволяет находить этот программный продукт:

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

Основное назначение - нагрузочное тестирование. Для использования программного продукта «Центр управления производительностью» требуется очень квалифицированный специалист. В большинстве случаев – это специалист уровня 1С:Эксперт. Таких очень мало.

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

Сценарное тестирование

Следующий программный продукт – «Сценарное тестирование». Один из самых первых продуктов на платформе 1С, предназначенный для тестирования.

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

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

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

Соответственно, можно отнести этот программный продукт к юнит-тестированию и к функциональному тестированию.

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

1С:Автоматизированное обновление измененных конфигураций, версия ПРОФ

«1С:Автоматизированное обновление измененных конфигураций. ПРОФ» в основном предназначен для тестирования после обновлений сложных измененных конфигураций. 

Он полностью автономен, тестирование полностью автоматическое.

Не требует знания методологии и принципов работы конфигурации.

Позволяет находить множество различных ошибок.

Применяется на этапе разработки, внедрения, поддержки и обновления.

1С:Автоматическое тестирование конфигураций

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

Программный продукт «1С:Автоматическое тестирование конфигураций» тоже тестирует любые конфигурации на платформе 1С полностью автоматически и автономно.

После работы этого продукта появляется список ошибок, контекст, в котором эти ошибки произошли, последовательность действий, которая привела к этой конкретной ошибке

Преимущества автоматизированного тестирования

Минимальное участие человека во время тестирования – это принципиально. Для статистики: мы проводим 600 тестирований конфигураций ежемесячно. У нас этим занимается два человека. При этом мы тестируем принципиально разные  конфигурации. И те два человека, которые занимаются тестированием – в принципе, не могут знать все конфигурации - как они работают, их нюансы и т.д.  Для примера приведу один случай. У одного из наших заказчиков был сложный проект, изменения вносились раз в неделю. Он осуществлял ручное тестирование силами двух методистов, которые знали всё о внедряемой конфигурации. Ошибок не нашли. Когда мы выслали им список из 40 ошибок свежего релиза, они спросили: «Как Вы это сделали?»

Роль нашей компании в развитии программных продуктов «1С:Автоматизированное обновление измененных конфигураций» и «1С:Автоматическое тестирование конфигураций»

Продукты «1С:Автоматизированное обновление измененных конфигураций» и «1С:Автоматическое тестирование конфигураций» – это продукты производства фирмы "1С". Но развитием этих продуктов занимаемся конкретно мы.

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

Основной принцип работы данных программных продуктов:

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

Управление работой приложений в ОС с использованием имитации работы пользователей
 (сценарное тестирование на уровне операционной системы)

Следующий программный продукт – универсальный.

Он позволяет тестировать любое программное обеспечение на уровне операционной системы, то есть можно тестировать:

  • конфигурации в режиме «Предприятие», в толстом, тонком и веб-клиентах, 
  • различные операции в режиме «Конфигуратора»,
  • установку защиты и любых других приложений,
  • работу служб и сервисов.

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

Также он контекстно-зависимый. В зависимости от каких-то ситуаций, он может действовать по-разному.

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

Автоматизированная система протоколирования и разрешения инцидентов

Программный продукт предназначен для компаний, у которых жесткий график работы (24/7). Внесение любой ошибки может очень дорого обойтись для бизнеса. Ведь остановка работы в большой компании на 10 минут или на час может обходиться для бизнеса очень дорого.

Этот программный продукт выполняет тестирование во время работы пользователей.

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

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

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

Юнит-тестирование

"Юнит-тестирование" – это очень специфическая вещь. Она меняет идеологию разработки программных продуктов.

Мы при разработке собственных программ постоянно используем подобное тестирование. Почему? Потому что любая модификация программы может привести к ее дальнейшей некорректной работе. И чем чаще выполняется юнит-тестирование – тем проще исправить ошибку.

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

Проверка дистрибутивов

Этот инструмент основан на программном продукте «Сценарное тестирование» на уровне операционной системы.

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

Позволяет проверять:

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

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

Рарус. Нагрузочное тестирование

Лично я более качественного продукта по тестированию производительности СУБД не видел. Это – разработка компании "1С-Рарус" (gilev.ru). Она позволяет мониторить и находить узкие места в производительности информационных систем.

Разнообразие ошибок и способы их нахождения

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

Некоторые ошибки можно автоматически исправлять. А для некоторых можно автоматически определять причины возникновения.

 

Что дает автоматизация?

Первое – это качество. Качество программных продуктов – это принципиально важный момент – это удовлетворение пользователей и «счастье во всем мире».

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

 

***************

Приглашаем вас на новую конференцию INFOSTART EVENT 2016 DEVELOPER.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Sergey Sankov (Shpukler) 03.03.15 14:37
Уж простите, но в фразу "Для термина «тестирование» есть разные определения, но самое правильное – это процесс обнаружения ошибок." перед "правильное" Вы "не" забыли добавить.
2. борян петров (TODD22) 03.03.15 15:03
А продолжение будет? Желательно в виде примеров или простых самоучителей по функциональному тестированию.

А то тема тестирования может быть очень интересна. Но по ней очень мало информации в виде пошаговых инструкций.
4. Максим Жохов (ZhokhovM) 03.03.15 16:12
Мда, жаль что меня не взяли в тестировщики на удаленку.
5. Максим Жохов (ZhokhovM) 03.03.15 16:15
(2) TODD22, в ютубе поищи - канал 1cizhtc.
6. Максим Жохов (ZhokhovM) 03.03.15 16:34
Нет ссылок на скачивание инструментов тестирования производства фирм "1С" и "1С-ИжТиСи".

eu_genij, будьте любезны, замените тексты ссылками.
7. борян петров (TODD22) 03.03.15 19:00
(5) ZhokhovM, Одно видео как я понял только про тестирование конфигураций. А остальные про тестирование обновления и изменённых конфигураций. Да и то просто поверхностный обзор.
9. Игорь Пашутин (Alien_job) 04.03.15 07:07
А как выглядят инструменты то? Хоть ссылки на видео положите, а то это всё похоже на пустые фантазии.
10. Максим Жохов (ZhokhovM) 04.03.15 10:20
(9) Alien_job, инструменты все на обычной форме, на управляемой - ничего нет. В ютубе поищи - канал 1cizhtc.
11. Игорь Steelvan (Steelvan) 04.03.15 13:08
(8) ога, таки вы считаете что надо использовать символ валюты страны "Америка", а не "Россия" ?

многонационально <> западное

Вот именно так, потихоньку, и происходит подмена ценностей.
Посмотрите почти любой западный фильм, почти через один показывает звездно полосатый флаг крупным планом.
Все хавают, всем нравится.
12. Игорь Steelvan (Steelvan) 04.03.15 13:16
(4) А ты чего используешь Яндекс.Кошелек.

Используй WebMoney, если ты любишь американцев.
13. Евгений Шабалин (xzorkiix) 04.03.15 13:23
(11) Steelvan, у кого какие ценности, тот то и показывает, в том числе и на весь мир. Не следует заигрывать с шовинисткой аргументацией, что все вокруг плохие. Давайте обсуждать темы сообщества с целью получить знания, а кому есть, тому и поделиться. Выдохните, истерика не наш метод.

(0) Хотелось бы больше "поближе к теме", "на примерах" плохих и хороших: Вот что вы можете только с помощью конфигуратора + хранилище. например, а вот что можете с нами.
Рамзес; v777k; ZhokhovM; +3 Ответить 1
14. Евгений Шабалин (xzorkiix) 04.03.15 13:24
(4) ZhokhovM, это где и как выглядит?
17. Максим Жохов (ZhokhovM) 04.03.15 13:42
(12) Steelvan, в вебмани мой номер аннулирован и сменить я его не могу без пароля, сказали нужно идти в центр аттестации, а ходить мне туда влом.
20. Артур Аюханов (artbear) 05.03.15 00:49
Тем, кто интересуется тестированием, предлагаю еще посмотреть мою статью http://infostart.ru/public/326820/
и обратить внимание на абзац:
Рекомендуемая система для тестирования в 1С (я фактически ее product-owner и один из авторов) - https://github.com/xDrivenDevelopment/xUnitFor1C/wiki (2012-2015 гг.)
В ней огромное количество возможностей, поддержка от 8.2.13 - до 8.3.5.ХХХ, запуск из командной строки, работа с build-серверами, есть хорошая документация, есть много примеров и тестов, есть видеотренинги и видео-примеры.

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

Система активно развивается как раз после той самой, первой конференции Инфостарт-2012

ЗЫ (0) Женя, а тебе большое спасибо за упоминание меня в выступлении и статье!
21. Евгений Шумилов (eu_genij) 11.03.15 09:19
(6)
>будьте любезны, замените тексты ссылками.
Полный дистрибутив АПК можно скачать отсюда: https://users.v8.1c.ru/distribution/project/ACC
>Нет ссылок на скачивание инструментов тестирования производства фирм "1С" и "1С-ИжТиСи".
Инструменты для тестирования нашего производства – платные. Скачать просто так не получится.
Если необходимо и интересно можем провести вебинар по тестированию, ответить на интересующие вопросы. Показать.

(7)
>Одно видео как я понял только про тестирование конфигураций. А остальные про тестирование обновления и изменённых конфигураций. Да и то просто поверхностный обзор.
Когда выполняется (надо выполнять) тестирование в 1С?
1) После внесения в конфигурацию доработок (как частный случай обновление)
2) После смены платформы
3) После серьезных изменения «методологии» - изменение видов учета, каких-то сильно влияющих на работу констант.
Тестировать типовые конфигурации или без изменений в чистом виде никому кроме разработчиков этих решений не требуется.

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

(9)
>А как выглядят инструменты то? Хоть ссылки на видео положите, а то это всё похоже на пустые фантазии.

http://1с-ижтиси.рф/вебинары

(10)
>инструменты все на обычной форме, на управляемой - ничего нет.
Сами инструменты работают в обычном приложение, но тестировать и обновлять могут как обычное так управляемое приложение. Платформы 8.1.Х.ХХХ - до 8.3.5.ХХХ. Сейчас занимаемся реализацией поддержки 8.3.6.

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