Внедрение процесса тестирования для крупной ERP-системы с нуля
Бизнес-вызовы
Продуктовая IT-компания занимается разработкой динамично развивающейся ERP-системы для учёта и планирования расходов крупных производственных предприятий в сфере машиностроения. В функциональность IT-решения постоянно вносятся изменения, при этом у компании не хватает ресурсов на тестирование. Процесс обеспечения качества не выстроен, на проекте нет необходимых специалистов. Исправление ошибок происходит только на поздней стадии жизненного цикла продукта в рамках приёмочного тестирования, обходится заказчику слишком дорого и может негативно сказываться на его репутации. Команда не в силах самостоятельно обеспечить высокое качество системы к поставке конечному клиенту.
Ситуация на проекте
К моменту обращения за консультацией к специалистам JazzTeam в компании заказчика не было систематизированного и чёткого процесса тестирования. Проверка качества приложения осуществлялась непосредственно перед отправкой продукта специалистами по интеграции и только с помощью мануального тестирования, критически важного и нового функционала.
На проекте не было выделенной команды тестирования: проверкой качества продукта занимался бизнес-аналитик. Его компетенций и времени не хватало для того, чтобы поддерживать высокий уровень качества системы и проводить тестирование в срок. При этом решение уже давно было выведено в продакшн и активно поставлялось конечным пользователям.
Также у владельцев продукта были большие планы по развитию системы и наращиванию функциональности. Поэтому вопрос обеспечения качества в компании стоял очень остро.
Формат проведения консалтинга
Консультанты JazzTeam (менеджер и QA-специалист) присоединились к проекту заказчика для постановки, формализации и отладки процессов тестирования, внедрения культуры тестирования, а также передачи лучших практик автоматизации. Нашей командой был предложен следующий план оказания услуги:
- Аудит проекта: анализ системы и текущих процессов тестирования.
- Разработка стратегии тестирования, создание тест-кейсов и тест-планов.
- Мануальное тестирование системы.
- Выявление узких мест продукта, разработка плана по внедрению автотестирования.
- Внедрение непрерывной интеграции. Настройка и запуск инструментов автотестирования (TestLink).
- Передача знаний: обучение команды тестирования заказчика и создание необходимой документации.
Особенности проекта
- Необходимо выстроить процессы тестирования с нуля и передать знания команде заказчика таким образом, чтобы в будущем они смогли полностью справляться с данной активностью самостоятельно.
- Сжатые сроки проекта: необходимо выстроить процессы тестирования за 3,5 месяца.
- Команда консультантов постоянно анализировала внедрённые изменения, при необходимости в планы вносились изменения.
- Владельцы продукта, технический лидер и команда проекта оказывали активную поддержку консультантам, что способствовало достижению результатов в срок.
- Специалист по тестированию команды консультантов JazzTeam обладал знаниями в предметной области: понимал процессы и нужды крупных производственных компаний.
Подходы и решения
1 этап: аудит проекта
Для проведения детального анализа команда JazzTeam запросила всю необходимую информацию о том, как проводилось тестирование на проекте. В том числе были получены доступы к документации (user stories, постановка задач), используемой заказчиком системе багтрекинга, codebase продукта. Также процесс аудита включал общение специалистов JazzTeam с владельцами продукта, техническим лидером компании, бизнес-аналитиком.
В ходе анализа наша команда получила полное представление о том, как был организован процесс тестирования на проекте, какие сложности присутствовали, в чём заключалась основная боль заказчика. Также мы узнали, каким образом и в какие сроки проводится обнаружение, регистрация и обработка дефектов на проекте. Важнейшим фактором в этом процессе был высокий уровень доверия фаундеров и команды к специалистам JazzTeam. Заказчик был уверен в нашей экспертизе, мы получили содействие, поддержку и видели желание команды изменить ситуацию на проекте.
После проведения тщательного анализа на проекте были выявлены следующие пробелы в процессе тестирования:
- Тесты для backend-части системы разработаны, но не используются.
- Отсутствуют Unit-тесты на стороне frontend.
- Отсутствует этап тестирования при разработке.
- Не внедрена автоматизация тестирования.
- Не внедрён процесс непрерывной интеграции (CI).
2 этап: разработка стратегии тестирования
После выявления основных проблем на проекте наша команда приступила к разработке стратегии тестирования. Одна из особенностей ERP-системы — большое количество элементов со схожей функциональностью. Поэтому для тестирования таких страниц было необходимо создать автотесты. Сложные для воспроизведения и реализации бизнес-кейсы было решено проверять с помощью мануального тестирования.
Следующий шагом стало написание тест-кейсов и тест-планов для мануального тестирования. Работы были чётко фазированы, каждый этап планировался и согласовывался с заказчиком и был ограничен дедлайном.
3 этап: мануальное тестирование
Функциональность UI-части ERP системы предусматривала выполнение большого количества мелких операций (например, создать, редактировать карточку объекта, удалить, продублировать). Из-за высокой сложности UI было решено покрывать тест-кейсами весь функционал приложения, включая незначительные особенности страниц. Нашей командой был создан базовый и полный набор тестов для проведения smoke и регрессионного тестирования в количестве 60 и 158 тестов соответственно.
Также на данном этапе менеджер JazzTeam провёл ряд консультаций для команды заказчика по процессу включения тестирования в разработку. Важной задачей для нас была передача культуры тестирования. Необходимо было донести команде, что обеспечение качества — обязательная часть каждого спринта и процесса разработки в целом. Инженеры и тестировщики должны ежедневно взаимодействовать по исправлению ошибок, а не только перед поставкой клиенту, когда времени на тестирование недостаточно. Внимание к процессу тестирования и своевременное его проведение позволяют постоянно поддерживать высокое качество продукта и своевременно исправлять дефекты в ПО.
4 этап: разработка и внедрение автотестирования
На следующем этапе наша команда создала план по внедрению автотестирования. Он был согласован и утверждён заказчиком. Далее команда консультирования JazzTeam разработала и внедрила поток задач по автотестированию новой функциональности, а также повторному тестированию исправленных дефектов (регрессионному тестированию). В рамках автоматизированного тестирования были реализованы следующие активности:
- Установлены и запущены серверы Jenkins и TestLink, настроены плагины для интеграции результатов из Jenkins в TestLink.
- Выстроены CI/CD pipelines (проработана и применена схема порядка взаимодействия jobs на Jenkins).
- Созданы шаблоны автотестов для последующего переиспользования.
- Организовано автоматизированное тестирование посредством TestLink.
- Проведён анализ автотестов с их последующей актуализацией.
Автотестирование стало обязательной частью обеспечения качества в компании заказчика. Специалисты JazzTeam смогли доказать эффективность данного подхода команде проекта. Консультанты на практике показали, как автоматизация позволяет достичь необходимого результата при значительной экономии времени и усилий. Понимание ценности автотестов побуждало команду к их регулярному написанию и применению.
5 этап: улучшение процесса управления релизами
Помимо прочего, наша команда обнаружила, что на проекте есть сложности с процессом релиз-менеджмента. Мы провели консультации о том, как настроить релизы, проводить регрессионное тестирование, эффективно управлять разработкой, чтобы повышать качество системы.
Специалисты JazzTeam способствовали улучшению процесса релиз-менеджмента на проекте:
- Внедрили итеративный подход к планированию разработки, благодаря чему стало возможным составлять план релизов.
- Регрессионное тестирование стало обязательной частью обеспечения качества: прогоны имеющихся автотестов и анализ их результатов с последующим фиксом найденных дефектов проводились регулярно.
Подготовили инструкцию по выпуску релиза.
- Создали чек-лист в помощь ответственному за поставку релиза.
6 этап: передача знаний команде заказчика
В финальной фазе работы по консультированию наша команда задокументировала процессы тестирования на разных уровнях: от конкретных инструкций для членов команды и до описания алгоритмов работы job для сборки продукта на Jenkins.
В помощь команде заказчика наши специалисты создали ряд документов:
- чек-листы и тест-кейсы для мануального тестирования;
- инструкция поставок (релизов);
- требования к оформлению тест-кейсов;
- чек-лист в помощь ответственному за поставку релиза;
- пошаговый алгоритм тестирования системы.
Впоследствии в команде заказчика появился QA-специалист, которому эксперты JazzTeam передали знания и наработки по тестированию на проекте. В том числе мы провели обучение по выстроенным процессам мануального и автотестирования, проведению регрессионного тестирования, грамотной обработке и анализу результатов тестирования. Научили команду верно оформлять дефекты в Redmain, чтобы исправлять и принимать их согласно Definition of Done.
Достижения компании на проекте
Всего за 3,5 месяца работы на проекте нам удалось достичь следующих значимых результатов:
- Успешно выстроены процессы мануального и автоматизированного тестирования в компании с нуля. Теперь проверка качества проводится своевременно и силами выделенного QA-инженера. Повышение качества продукта способствовало улучшению репутации компании-заказчика.
- Разработан и внедрён детальный план по автоматизации тестирования системы, все узкие места покрыты автотестами, что позволит заказчику сэкономить на тестировании без потери качества продукта.
- Внедрён и запущен процесс непрерывной интеграции (CI), с помощью которого ошибки в ПО выявляются регулярно и своевременно. Раннее обнаружение багов позволяет уменьшить затраты на их исправление.
- Система управления тестами (TestLink) запущена и интегрирована с Jenkins. Это позволило отслеживать и хранить все результаты тестов в одном месте, избавило от необходимости переносить результаты тестирования из Jenkins в TestLink для каждой сборки. Кроме того, использование TestLink позволяет формировать удобные отчёты, которые можно прикреплять к поставке в качестве документа, подтверждающего высокое качество ПО.
- Разработаны и внедрены инструкции, рекомендации по тестированию продукта и оформлению дефектов.
- Установлены эффективные регулярные поставки продукта.
ЗАИНТЕРЕСОВАНЫ В СОТРУДНИЧЕСТВЕ?