Введение
Одним из наиболее важных аспектов разработки и обслуживания программного обеспечения является регрессионное тестирование. Эффективное регрессионное тестирование необходимо для поддержания идеальной работы приложения после каждого небольшого или значительного изменения. А эффективное регрессионное тестирование, в свою очередь, требует тщательного отбора регрессионных тест-кейсов.
Чтобы избежать нежелательных изменений в ПО, всякий раз, когда происходят какие-либо изменения в программном обеспечении, запускается определенный набор тест-кейсов, и новые результаты тестов сравниваются со старыми.
Если новые и старые результаты тестов совпадают, это означает, что изменения, внесенные в одну часть программного обеспечения, не влияют на остальное ПО.
Если в ПО были внесены какие-либо изменения, непрактично повторно запускать все тест-кейсы для программы. В этом случае необходимо выбрать набор подходящих регрессионных тестов путем приоритизации тест-кейсов.
Приоритетность тест-кейсов для регрессионного тестирования определяется на основе бизнес-требований, опыта предыдущих циклов тестирования функциональности приложения и сроков поставки.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Почему нужно определять приоритеты тест-кейсов для регрессионного тестирования?
- Приоритизация тест-кейсов помогает команде DevOps снизить стоимость тестирования программного обеспечения и время, необходимое для выполнения тестов, не пренебрегая при этом качеством продукта.
- Приоритизация тест-кейсов позволяет тестировщикам рассмотреть и проанализировать, какие тесты необходимо выполнить для снижения рисков, связанных с поставкой программного обеспечения.
- Расстановка приоритетов тест-кейсов позволяет устранять наиболее критичные дефекты в ПО на ранних этапах разработки.
- В крупных проектах регрессионное тестирование занимает значительное количество времени.
- В некоторых случаях выполнение тестов может занять более одного спринта, что приводит к повышению стоимости проекта.
- Кроме того, многократное выполнение одного и того же набора тестов приводит к потере концентрации, и таким образом тестировщики могут не проверить наиболее важные функции приложения, что приведет к появлению ошибок в продакшене.
Как определять приоритет тест-кейсов для регрессионного тестирования?
Регрессионное тестирование – это последний, но важный этап перед запуском программного обеспечения или обновлений в продакшн. Задержки могут привести к негативному маркетингу, пропущенным срокам и потере доверия клиентов. Приоритезация тест-кейсов в регрессионном тестировании на основе времени и важности гарантирует, что цикл тестирования будет завершен вовремя.
#1 Сложные тест-кейсы
Многие системные функции предполагают выполнение сложных последовательных действий в графическом интерфейсе приложения. Поэтому, когда система становится более сложной, могут возникать проблемы с этими последовательностями. В связи с этим, сложные тест-кейсы также должны быть включены в регрессионное тестирование.
Большинство экспертов рекомендуют использовать подход к тестированию на основе рисков, при котором тест-кейсы ранжируются на основе определенных факторов, а затем расставляются по приоритетам. Эти тесты значительно экономят время, усилия и деньги.
- Высокий приоритет. В эту категорию входят критически важные функции, модули, чаще всего подвергающиеся ошибкам, а также недавно измененные модули приложения. Эти тест-кейсы добавляют большую ценность проекту.
- Средний приоритет. Тесты, которые проверяют негативные сценарии и сложные случаи, относятся к среднему приоритету. Эти тесты также могут существенно влиять на бизнес.
- Низкий приоритет. Тесты для пользовательского интерфейса и другие сценарии относятся к низкому приоритету. Их проверяют в последнюю очередь, и только если это действительно необходимо.
Тест-кейсы с высоким и средним приоритетом следует запускать во время каждого спринта регрессионного тестирования, тогда как тест-кейсы с низким приоритетом следует запускать только один раз перед финальным релизом.
#2 Тест-кейсы, которые часто приводят к ошибкам
Эти тест-кейсы охватывают области программного обеспечения, которые чаще всего подвергаются ошибкам и дают сбой после внесения каких-либо изменений. Они должны быть расставлены по приоритетам и включены в набор регрессионных тестов.
#3 Тест-кейсы проверки валидации полей
Это тест-кейсы для проверки негативных сценариев при заполнении полей, например, если вдруг мы не введем данные в обязательное поле формы, приложение выводит сообщение об ошибке, не позволяя пользователю перейти к следующему этапу.
#4 Тест-кейсы, охватывающие критически важные функции приложения
Основные аспекты программного обеспечения могут быть определены на основе документа бизнес-требований. Например, убедитесь, что регрессионный тест включает все тест-кейсы, которые покрывают эти основные функции. Матрица прослеживаемости также может использоваться для сбора всех высокоприоритетных тестов.
#5 Тест-кейсы, охватывающие часто изменяемые части кода
Многие части программного обеспечения регулярно обновляются. Однако эти компоненты более всего подвержены багам. Поэтому их обязательно следует включить в набор регрессионных тестов.
#6 Тест-кейсы интеграционного тестирования
Очень важно включить интеграционные тесты в набор регрессионных тестов, чтобы исключить возможность нарушения взаимодействия между модулями в последнюю минуту.
Приоритизация тест-кейсов в регрессионном тестировании на основе оптимизации муравьиными колониями
Приоритизация тест-кейсов – эффективный метод повышения эффективности регрессионного тестирования. Она предписывает набору регрессионных тестов выполнять более приоритетные тест-кейсы перед менее приоритетными. Проблема заключается в определении того, как оптимизировать порядок тест-кейсов на основе определенного критерия.
Оптимизация муравьиными колониями (ACO, Ant Colony Optimization) — это вид алгоритмов, которые используют поведение муравьев для нахождения кратчайших путей к еде. В случае приоритизации тестов, аналогия заключается в поиске наиболее эффективного набора тестов, которые нужно запускать в первую очередь.
Этот метод учитывает следующие 3 фактора:
- Обнаруженные дефекты
- Время выполнения
- Серьезность дефектов
Таким образом, приоритизация тест-кейсов с помощью алгоритма оптимизации муравьиными колониями позволяет выбирать те тесты, которые наиболее релевантны для регрессионного тестирования после изменений в коде, что сокращает время на тестирование и повышает его точность.
Подход к определению приоритетов тест-кейсов на основе онтологии
Онтологии – это формальные представления различных сущностей, их поведения, интерфейсов и ассоциаций. Например, в тестировании это может включать тест-кейсы, требования, дефекты и их взаимосвязи.
Онтологии могут быть использованы для определения, какие тест-кейсы следует выполнить в первую очередь. Это делается путем анализа тест-кейсов в контексте их взаимосвязей с требованиями, дефектами и рисками, описанными в онтологии.
Данный метод приоритизации тест-кейсов на основе онтологий может включать анализ веб-сервисов и использование онтологий для оценки рисков. Это помогает идентифицировать, какие тесты наиболее важны для выполнения, основываясь на потенциальных рисках и проблемах, связанных с веб-сервисами.
Таким образом, метод на основе онтологий помогает создать точную и структурированную модель для приоритизации тест-кейсов, улучшая управление тестированием и автоматизацию процесса.
Факторы для приоритизации тестов в регрессионном тестировании
На выбор и приоритизацию тест-кейсов может влиять множество факторов. В предлагаемом нами алгоритме для приоритизации тест-кейсов рассматриваются следующие три фактора:
#1 Обнаружение дефектов тест-кейсом
Важность тест-кейса определяется тем, сколько дефектов он может обнаружить. Тесты, которые покрывают большее количество дефектов, должны иметь более высокий приоритет, так как они потенциально находят больше проблем в приложении.
#2 Время выполнения тест-кейса
Время, необходимое для выполнения теста, также имеет важное значение. В условиях ограниченного времени на тестирование важно учитывать, сколько времени занимает каждый тест, чтобы эффективно управлять ресурсами и приоритизировать тесты.
#3 Серьезность обнаруженных багов
Различные неисправности по-разному влияют на программное обеспечение, и серьезность бага определяет его приемлемость. Тесты, которые обнаруживают более серьёзные проблемы, должны выполняться раньше, чтобы критичные ошибки были выявлены на ранних стадиях тестирования.
Еще один фактор – скорость обнаружения неисправностей, который определяет, насколько быстро тест-кейс обнаруживает дефекты. Он рассчитывается как отношение количества найденных дефектов к времени, затраченному на их обнаружение. Этот фактор помогает определить, насколько эффективно тестирование помогает в поиске дефектов в ПО.
Заключение
Приоритизация тест-кейсов позволяет тестировщикам классифицировать тест-кейсы в соответствии с их наивысшим и наименьшим приоритетом для эффективного выполнения тестов.
Лучший способ выполнения регрессионного тестирования, особенно когда вам нужно протестировать большое количество регрессионных тест-кейсов, – это их автоматизация, которая может решить множество проблем. А если автоматизированные тест-кейсы еще и расставить по приоритетам, это может привести к значительному возврату инвестиций и обеспечению высокого качества продукта согласно установленным срокам.
Перевод статьи «Test Cases Prioritization For Regression Testing [Methods & Best Practices]».