18 ноября 2018

О правильном применении метрик в автоматизированном тестировании

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

Особенно важна и ценна автоматизация тестирования в проектах, где высока цена ошибки. Например, в проектах банковской сферы. Почему?

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

При правильном применении автоматизации тестирования вы можете получить следующие преимущества:

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

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

Все это на длительной дистанции снижает стоимость проведения тестирования в целом.

Как понять, какая польза от автоматизации тестирования? На помощь приходят метрики, с которыми надо быть осторожным. Есть две крайности:

  • метрики вообще не используются: «Ну это же и так понятно»;
  • метрики используются на каждом шагу, но большая часть цифр никому не нужна и никогда не просматривается.

И, как обычно это бывает, вдаваться в крайности - плохо. Метрики не лекарство от плохих процессов, это индикатор проблем.

Для чего же нужны метрики?

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

  • для визуализации. Метрики помогают наглядно показать ситуацию на проекте;

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

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

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

  • Наличие GUI пользовательских сценариев;
  • кроссбраузерность;
  • конфигурирование CI и тестовых виртуалок.

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

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

Мы начали обращать внимание не только на стабильность теста и время прогона, но и на:

  • время прогона, когда автотесты падали. В случае, когда тесты падают долго, они могут создать очередь, которая в свою очередь не несет полезной нагрузки и вызывает простой стенда и CI;

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

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

Как оценить покрытие автотестами?

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

Кто-то считает покрытие по написанным вручную кейсам, кто-то считает покрытие кода. Нам эти варианты не подошли. Идеальный для нас вариант — считать покрытие популярных пользовательских юзкейсов.

По итогу мы добились следующего:

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

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

  • сняли головную боль от вопросов «А вдруг автотесты не нужны?» и тому подобных.

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

Итог

Типичным антипаттерном являются «метрики ради метрик». Как уже отмечали выше, метрики  — это лишь инструмент, который помогает количественно оценить, насколько хорошо вы достигаете целей. В данном случае метрики помогли нам ответить на вопрос: «Есть ли польза от автоматизации тестирования на нашем проекте?». И ответ был утвердительный. И как только ситуация меняется и автотесты перестают быть столь полезными, то метрики сразу же сигнализируют нам об этом и мы вовремя успеваем все исправить и не тратить силы впустую.

Понравилась статья?
Подпишитесь на рассылку SimbirSoft! Пришлём письма о лайфхаках в разработке, поделимся опытом управления командами и компанией, а также расскажем о новых ивентах SimbirSoft.

Другие статьи

Вебинар “Анализировать нельзя разрабатывать. Лекарство от хаоса в разработке”
05 апреля 2024
SimbirSoft и Синара Лаб – партнеры по внедрению коробочного решения «Цифровой рубль»
04 апреля 2024
Вебинар «Красиво vs Качественно. Какие метрики вашего бизнеса зависят от Frontend-разработки?»
12 марта 2024
Написать нам
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Оставьте свои контакты
SimbirSoft регулярно расширяет штат сотрудников.
Отправьте контакты, чтобы обсудить условия сотрудничества.
Прикрепить резюме, до 10 Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Написать нам
Расскажите, какие задачи сейчас на вашем проекте.
Проконсультируем и предложим подходящих специалистов, а также сориентируем по ставкам на аутстаф.
Направление
Количество специалистов
Middle
TeamLead
Senior
TechLead
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Экспресс-консультация
Заполните все поля формы.
Эксперт свяжется с вами в течение рабочего дня.
Тематика
Прикрепить файл до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.
Порекомендуйте друга — получите вознаграждение!
  • Middle Fullstack QA Engineer (Mobile)
  • Python-paзработчик
  • Java-разработчик
  • Angular-разработчик
  • PHP-разработчик
  • Системный аналитик
  • QA Engineer Fullstack (Python)
  • C#-разработчик
  • Инженер по нагрузочному тестированию
  • Golang-разработчик
  • DevOps-инженер
  • 1С-аналитик
  • 1C QA Engineer
  • Юрист
  • Разработчик на C++
  • UI/UX дизайнер
  • 1С-разработчик
  • DWH-разработчик
  • Менеджер по сопровождению бизнес-процессов
  • SDET (Python)
  • Маркетолог
  • Архитектор C#
  • Менеджер по продажам IT SaaS
  • QA Engineer Fullstack (Java/Kotlin)
  • C# /.NET-разработчик
  • Бизнес-аналитик
  • Аналитик DWH
  • Team Lead Java
  • Менеджер проектов 1С
  • Руководитель отдела Backend
  • Руководитель отдела Frontend
  • SDET (Java)
  • Менеджер по продажам IT продуктов на иностранное направление
  • Менеджер по продажам IT продуктов
  • Team Lead Python
  • SAP-аналитик
  • Middle Golang разработчик (Teamlead)
  • SDET (JavaScript)
  • Fullstack-аналитик
  • SDET Python (мобильные приложения)
Прикрепить резюме, до 10Мб
Файл выбран
Можно прикрепить один файл в формате: txt, doc, docx, odt, xls, xlsx, pdf, jpg, jpeg, png.

Размер файла до 10 Мб.