Перейти к содержимому

В чем заключается цель регрессионного тестирования

  • автор:

В чем заключается цель регрессионного тестирования

События

  • Тестирование
    • Основы
      • Откуда берутся ошибки в ПО?
      • Почему тестирование необходимо?
      • Мифы о тестировании
      • Психология тестирования
      • Когда начинать и заканчивать тестирование?
      • Фундаментальный процесс тестирования
      • Принципы тестирования
      • Верификация и валидация
      • QA, QC и тестирование
      • Кто занимается тестированием?
      • Цели тестирования
      • Что такое тестирование программного обеспечения?
      • Роль тестирования в процессе разработки ПО
      • Сколько стоят дефекты?
      • Качество программного обеспечения (ISO/IEC 25010)
      • Матрица соответствия требований (Requirements Traceability Matrix)
      • Матрица покрытия и Матрица отслеживания
      • Тестирование веб-проектов: основные этапы и советы.
      • Мобильное и веб-приложение. В чем разница?
      • Тест дизайн (Test Design)
      • Agile
      • Словарь тестировщика
      • 75 популярных вопросов на собеседовании QA (+ примеры и ответы)
      • HTML и CSS для тестировщиков
      • Итеративная модель (Iterative model)
      • Спиральная модель (Spiral model)
      • V-модель (V-model)
      • Каскадная модель (Waterfall model)
      • Стадии цикла разработки ПО
      • Жизненный цикл ПО
      • Приемочное тестирование
      • Системное тестирование
      • Интеграционное тестирование
      • Модульное тестирование
      • White/Black/Grey Box-тестирование
      • Статическое и динамическое тестирование
      • Ручное и автоматизированное
      • Тестирование документации
      • Интернационализация и локализация
      • Стресс тестирование
      • Тестирование установки
      • Конфигурационное тестирование
      • Тестирование на отказ и восстановление
      • Юзабилити
      • Тестирование сборки
      • Тестирование взаимодействия
      • Тестирование безопасности
      • Дымное тестирование
      • Регрессионное тестирование
      • Тестирование производительности
      • Функциональное тестирование
      • Нефункциональное тестирование
      • Спецификация требований
      • Test Plan
      • Checklists для тестировщика
      • Test Case
      • Bug report
      • Жизненный цикл дефектов
      • Классификация дефектов
      • Тестирование мобильных приложений
      • Протоколы
        • Протокол TCP/IP или как работает Интернет (для новичков)
        • HTTP-запрос (HTTP request)
        • Автоматизация
          • Автоматизированное тестирование
          • Теория по X-Path локаторам
          • Как написать X-Path локатор.
          • Использование tagname
          • Вложенность родительского элемента.
          • Как выбрать инструмент автоматизации?
          • Базы данных в тестировании
            • Зачем нужен SQL для тестирования?
            • Общее
              • Интерфейс в коде ПО
              • Парадигмы программирования «ООП»
              • Процесс коммуникации с помощью API
              • Рефакторинг Кода
              • Фреймворк в программировании
              • Микросервисная архитектура ПО.
              • Монолитная архитектура ПО.
              • Что такое API?
              • Что такое JSON
              • Что не так с Android?
              • Android Studio 2.0
                • RxJava
                • Основы
                  • Внутренний мир компьютера: что там внутри

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

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

                  regr_test

                  Есть несколько видов регрессионных тестов:

                  • Верификационные тесты. Проводиться для проверки исправления обнаруженного и открытого ранее бага.

                  • Тестирование верификации версии. Содержит принципы дымного тестирования и тестирование сборки: проверка работоспособности основной функциональности программы в каждой новой сборке.

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

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

                  Некоторые положения относительно того, как проводить регрессионное тестирование:

                  • Данный вид тестирования проводится в каждом новом билде.

                  • Начинать нужно с верификации версии (тестирование сборки и дымное тестирование).

                  • Проверка исправленных багов.

                  • Регрессионное тестирование, в основном, не покрывает все приложение, а только те участки, которые тем или иным способом «соприкасаются» с изменениями в билде.

                  Далее тестируются уже закрытые ранее баги.

                  1) Регрессионное тестирование рекомендуется проводить несколько раз (3-5). Поэтому, с целью экономии драгоценного времени (и, может быть, для избавления от «рутинности») в регрессионных тестах активно используют мощь автоматизации тестирования.

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

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

                  • Выбери курс для обучения
                    • Тестирование
                      • Базовый модуль тестирования
                      • Тестирование ПО
                      • Тестирование WEB-сервисов
                      • Тестирование мобильных приложений
                      • Тестирование нагрузки с JMeter
                      • Расширенный модуль автоматизации тестирования
                      • Автоматизация тестирования с Selenium WebDriver (Python)
                      • Автоматизация тестирования с Selenium WebDriver (Java)
                      • Автоматизация тестирования с Selenium WebDriver (C#)
                      • Автоматизация тестирования на JavaScript
                      • Java для автоматизаторов
                      • Fullstack Web Developer
                      • Java
                      • Python
                      • JavaScript
                      • HTML5 И CSS3
                      • Полный стек разработки на фреймворке Laravel
                      • Разработка CMS на основе PHP
                      • Git для автоматизаторов
                      • Практический SQL
                      • Основы Unix и сети
                      • WEB-серверы и WEB-сервисы
                      • Создание проекта автоматизации и написания UI тестов
                      • Составление комбинированных тестов UI и API. Написание BDD тестов
                      • IT Project Manager
                      • HR-менеджер в ИТ-компании
                      • Как правильно составить резюме и пройти собеседование
                      • Подготовка к сертификации ISTQB Foundation Level на основе Syllabus Version 2018
                      • Тестирование
                        • Базовый модуль тестирования

                        Регрессионное тестирование

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

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

                        Вслед за динамично изменяющимися потребностями пользова тели хотят быстрых и частых улучшений IT-систем и приложений. Добавление нового функционала, перераб отка старого, подстройка под обновленную версию браузера или операционную систему, исправление дефектов — э то зачастую непрерывный процесс жизненного цикла программного обеспечения . Любое внесение изменений в код или окружение ПО не исключает появления ошибок. Причем при доработках системы есть вероятность, что изменения повлияют на ее работоспособность или часть ранее разработанной функциональности.

                        В каких случаях проводится?

                          Регрессионное тестирование рекомендуется проводить каждый раз после корректировки программы или сайта, которая может включать исправление дефектов, слияние кода, миграцию на другую ОС или БД, добавление новой функциональности и другие изменения. Если в процессе эксплуатации ПО существенно выросло число пользователей системы, рекомендуется проводить регрессионное нагрузочное тестирование.
                          С повышением сложности системы и увеличением количества функций увеличивается и количество тестов и время на их повторение. Регрессионное тестирование далеко не всегда означает полную проверку всей функциональности. Для гарантии высокого качества выпускаемого ПО при сохранении оптимальных сроков и стоимости, необходим продуманный подход для определения стратегии и достаточного регрессионного покрытия. В ходе проекта специалисты компании IBS QA Solutions в первую очередь проверяют ту часть функционала, где вероятность появления ошибки после внесенных изменений наиболее велика.

                        Автоматизация процесса

                          Если программное обеспечение подвергается частым изменениям и доработкам, то потребность в одинаковых проверках может значительно возрасти. Для экономии времени наши специалисты разрабатывают автоматизированные регрессионные тесты, которые сокращают сроки тестирования без потери в качестве работ.
                          Степень автоматизации зависит от количества тестовых случаев, которые можно повторно использовать для последовательных циклов регрессии, и определяется опытными специалистами индивидуально для каждого проекта.
                          Одним из преимуществ автоматизированного тестирования является возможность запускать тесты в любое время, что значительно сокращает сроки проекта при большом объеме регрессионных тестов.
                          Для разработки, хранения и запуска автоматизированных тестов специалисты IBS QA Solutions используют широкий спектр инструментов, таких как Selenium, Microfocus UFT (ранее HP), SmartBear TestComplete, а также собственное решение — платформу управления тестированием Test IT PRO.

                        Ключевые преимущества

                        • Сократим число ошибок в системе до ее релиза
                        • Сохраним качество системы при росте функциональности
                        • Снизим вероятность критических ошибок при использовании системы

                        Этапы

                        Основная задача регрессионного тестирования — проверк а cистемы на совместимости с объявленным в спецификации оборудованием, операционными системами и сторонними программными продуктами.

                        Подготовка

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

                        Проведение

                        Проводится тестирование системы на выбранных конфигурациях.

                        Отчет

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

                        Регрессионное тестирование: цели и задачи, условия применения, классификация тестов и методов отбора

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

                        Цели и задачи регрессионного тестирования

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

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

                        Пусть T = — множество из N тестов, используемое при первичной разработке программы P , а T— подмножество регрессионных тестов для тестирования новой версии программы P’ . Информация о покрытии кода, обеспечиваемом T’ , позволяет указать блоки P’ , требующие дополнительного тестирования, для чего может потребоваться повторный запуск некоторых тестов из множества T\supseteq T, или даже создание T» — набора новых тестов для P’ — и обновление T .

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

                        Таблица 11.1. Выборочное регрессионное тестирование и повторный прогон всех тестов.

                        Повторный прогон всех тестов Выборочное регрессионное тестирование
                        Прост в реализации Требует дополнительных расходов при внедрении
                        Дорогостоящий и неэффективный Способно уменьшать расходы за счет исключения лишних тестов
                        Обнаруживает все ошибки, которые были бы найдены при исходном тестировании Может приводить к пропуску ошибок

                        Задача отбора тестов из набора T для заданной программы P и измененной версии этой программы P’ состоит в выборе подмножества Tдля повторного запуска на измененной программе P’ , где T. Так как выходные данные P и P’ для тестов из множества T\supseteq Tзаведомо одинаковы, нет необходимости выполнять ни один из этих тестов на P’ . В общем случае, в отсутствие динамической информации о выполнении P и P’ не существует методики вычисления множества T’идеальное для произвольных множеств P , P’ и T . Это следует из отсутствия общего решения проблемы останова, состоящей в невозможности создания в общем случае алгоритма, дающего ответ на вопрос, завершается ли когда-либо произвольная программа P для заданных значений входных данных. На практике создание T’идеальное возможно только путем выполнения на инструментированной версии P’ каждого регрессионного теста, чего и хочется избежать.

                        t\in T

                        Реалистичный вариант решения задачи выборочного регрессионного тестирования состоит в получении полезной информации по результатам выполнения P и объединения этой информации с данными статического анализа для получения множества T’реальное в виде аппроксимации T’идеальное . Этот подход применяется во всех известных выборочных методах регрессионного тестирования , основанных на анализе кода. Множество T’реальное должно включать все тесты из T , активирующие измененный код, и не включать никаких других тестов, то есть тест входит в T’реальное тогда и только тогда, когда t задействует код P в точке, где в P’ код был удален или изменен, или где был добавлен новый код.

                        Если некоторый тест t задействует в P тот же код, что и в P’ , выходные данные P и P’ для t различаться не будут. Из этого следует, что если P(t)\ne P, t должен задействовать некоторый код, измененный в P’ по отношению к P , то есть должно выполняться отношение t\in T. С другой стороны, поскольку не каждое выполнение измененного кода отражается на выходных значениях теста, могут существовать некоторые такие t\in T, что P(t) = P'(t) . Таким образом, T’реальное содержит T’идеальное целиком и может использоваться в качестве его альтернативы без ущерба для качества тестируемого программного продукта.

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

                        Рассмотрим отбор тестов на примере рис. 11.1. Код, покрываемый тестами, выделен цветом и штриховкой. Легко заметить, что код, покрываемый тестом 1, не изменился с предыдущей версии, следовательно, повторное выполнение теста 1 не требуется. Напротив, код, покрываемый тестами 2, 3 и 4, изменился; следовательно, требуется их повторный запуск .

                        Регрессионное тестирование действительно необходимо

                        Веб-портал API

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

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

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

                        Необходимость регрессионного тестирования

                        Регрессионное тестирование необходимо, если есть:

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

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

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

                        1. Проверьте все еще раз

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

                        2. Выбор регрессионного теста

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

                        3. Приоритезация тестовых случаев

                        • Приоритет определенным контрольные примеры. В зависимости от влияния на бизнес-процессы мы выбираем наиболее важные и часто используемые функции. Выбор тестовых случаев на основе приоритета значительно снизит влияние регрессионного тестирования на проект.

                        Выбор тестовых случаев для регрессионного тестирования

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

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

                        Регрессионное тестирование и управление конфигурацией

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

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

                        Разница между регрессионным тестированием и повторным тестированием

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

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

                        Проблемы в регрессионном тестировании

                        Ниже перечислены основные проблемы во время регрессионного тестирования:

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

                        Заключение

                        Эффективная стратегия регрессии экономит время и деньги для организации. Согласно тематическому исследованию, проведенному в банках, регрессионное тестирование экономит до 60% времени. исправлений (которые, таким образом, обнаруживаются во время регрессионных тестов) и 40% бюджета.

                        Обсудить с нами LinkedIn.

                        Регрессионное тестирование действительно необходимо

                        Регрессионное тестирование действительно необходимо

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *