-
Telegram
-
Vkontakte
-
Копировать ссылку
-
Поделиться
Оптимизация внутренних процессов и автоматизация тестирования для ПО в сфере информационной безопасности
- Web
Если у вас нет времени читать детально, но нужно понять что же было сделано
Разрабатываемая комплексная система для администрирования сетей быстро развивалась, усложняя продукт и тестовую модель. Система состоит из множества опциональных компонентов, поэтому необходимо было обеспечить максимальное качество работы вне зависимости от конфигурации. Был внедрен новый подход к приоритезации критических областей и актуализации тестовой модели и разработан общий фреймворк для автоматизации тестирования.
Число багов на этапе релиза сократилось на 98%, все тесты были автоматизированы, время на покрытие нового функционала автотестами сократилось на 62%.
Понравилось, но хочется больше деталей?
Читайте далее, там больше подробностейКлиент — компания по разработке ПО в сфере информационной безопасности
Разрабатываемый продукт— комплексная система для администрирования сетей и сетевого оборудования. Помимо этого, в задачи разрабатываемого ПО входит контроль и распределение трафика, авторизация пользователей, проверки на уязвимости узлов и проверки на несанкционированный доступ к данным.
Программный комплекс находится в стадии постоянного развития, функционал расширяется, что ведет за собой усложнение архитектуры и увеличение частоты релизов. Всё это, в свою очередь, приводит к повышенной необходимости в качественном тестировании.
Что мы использовали
-
С#
-
Microsoft .NET
-
NUnit
-
Visual Studio
-
Selenium
-
AzureDevOps
-
Git
-
PostgreSQL
-
Swagger
-
Postman
-
Portainer.io
-
Baretail
Проблематика проекта
Ожидаемо, что для такой категории программных продуктов требуются гарантии безусловного качества.
Постоянный ввод нового функционала влечет за собой постоянное расширение тестового покрытия, повышает сложность тестирования. В проверке нуждались интеграция доработок и новых компонентов как между собой и имеющимися модулями, так и с внешними системами, с которыми происходит взаимодействие.
Рост проблем, которые способна решать система, идет с высокой скоростью. Это отражается на автоматизации тестовой базы. Происходит устаревание разработанных ранее автоматизированных тест-кейсов при уменьшении общего покрытия автоматизацией из-за увеличения общего пула задач тестирования.
Ввиду специфики проблем, решаемых этим ПО, спектр интегрируемых систем широк как в плане способов работы с ними, так и решаемых задач. Многие из внешних модулей имеют достаточно узкую специализацию, ввиду чего подход работы с ними может быть незауряден и отличаться от общепринятых практик интеграции между системами.
В свою очередь система состоит из множества независимых модулей, часть из которых опциональна. Это, в свою очередь, накладывает дополнительный пласт задач тестирования, связанный с интеграцией модулей между собой и комбинированием различных наборов конфигураций.
Наша команда вместе с подрядчиком разработали комплекс задач, покрывающих широкий спектр сторон продукта. Нам предстояло:
- Обеспечить своевременное тестовое покрытие растущего функционала продукта, а также ввести процесс актуализации существующей тестовой базы.
- Тестировать новый функционал и составлять отчетность о качественном состоянии ПО при каждом итерационном срезе.
- Разработать фреймворк для автоматизации тестирования, имеющий необходимый функционал проверок, а также инструмент отчетности, способный интегрироваться в комплексную среду управления разработкой, поддерживающий все виды интеракции с частями системы, включая: UI, API всех её отдельных модулей, API внешних интегрируемых систем, БД и системы конфигурации внешних модулей.
- Произвести автоматизацию имеющейся тестовой базы и внедрить выполнение автотестов в цикл поставки ежедневных версий, а также разработать график их исполнения для специализированных веток.
- Синхронизировать актуализацию автотестов с доработками тестовой базы продукта.
- Обеспечить объединение автоматизированного модульного, интеграционного и тестирования UI в один фреймворк и разработать инструмент общей отчетности между ними, чтобы централизованно получать целостную информацию о состоянии разрабатываемой системы.
- Своевременно доносить информацию о дефектах, возможных уязвимостях, предложениях к доработке до остальных команд разработки проекта.
После анализа темпов разработки и скорости развития программного продукта были переработаны алгоритмы приоритезации проблемных областей, реализованы способы группировки задач
Также было оптимизировано получение информации о предрелизном состоянии функционала, что, исходя из всего вышеперечисленного, привело к сокращению сроков покрытия новых разработок тестами.
На основе технологий Selenium, .NET, и NUnit, с помощью языка C# был разработан общий фреймворк для автоматизации разных аспектов тестирования продукта. В разработанный фреймворк были интегрированы переработанные готовые автотесты, налажена разработка новых решений, как в рамках имеющейся тестовой базы, так и её пополнения, доработки.
После ввода в эксплуатацию разработанной тестовой платформы произошло упрощение создания автотестов и ускорение их выполнения за счет корректной группировки и параллелизациии процессов. Также был упрощен анализ, ввиду более целостного подхода.
В ходе совершенствования процессов обеспечения качества произошло значительное сокращение количества багов, доходящих до релиза. Также было уменьшено среднее время обнаружения дефектов в новых сборках и налажен своевременный обмен информацией между всеми участниками процесса разработки.
Были автоматизированы все имеющиеся в тестовой модели кейсы
Вот к каким результатам мы пришли
-
-46%
Снижение времени на покрытие тестами нового функционала
-
на 78%
Сократилось среднее время от создания тест кейса до его автоматизации
-
-97%
Сократилось количество багов на этапе релиза
-
100%
Сценариев автотестов было переработано и оптимизировано
Также в результате проведенной работы увеличилась скорость выполнения автотестов на 64%, что позволило существенно сократить время на прогоны и запускать их дважды в день. Это также повлияло на общую скорость проведения тестирования на проекте, а скорость анализа состояния продукта после сборки билда увеличилась на 44%, а среднее время обнаружения бага в ветке разработки уменьшилось на 61%
Продукт получил возможность используя внедренные решения продолжать работу над внутренним качеством, при этом наращивая объем нового функционала.