Являются ли регрессионные тесты всем набором тестов или лишь выборкой тестов?

StackOverflow https://stackoverflow.com/questions/250779

Вопрос

Меня учили, что регрессионный тест - это небольшая (достаточная только для того, чтобы доказать, что вы ничего не нарушили при введении изменений или новых модулей) выборка из общих тестов.Однако, эта статья автор: Рон Моррисон и Грейди Буч заставляют меня думать по-другому:

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

В том же документе также говорится:

Как только добавляется небольшое количество устройств, генерируется тестовая версия и проводится "smoke tested", при котором выполняется небольшое количество тестов, чтобы получить уверенность в том, что интегрированный продукт будет функционировать должным образом.Цель не состоит ни в том, чтобы тщательно протестировать новый модуль (ы), ни в том, чтобы полностью регрессионно протестировать всю систему в целом.

Описывая тестирование на наличие дыма, авторы говорят следующее:

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

Я никогда не видел, чтобы "обширный" и "регрессионный тест" использовались вместе, равно как и регрессионный тест, описанный как "полное регрессионное тестирование всей системы".Предполагается, что регрессионные тесты должны быть максимально легкими и быстрыми.И определение теста на курение - это то, что, как я узнал, представляет собой регрессионный тест.

Неужели я неправильно понял то, чему меня учили?Меня неправильно учили?Или существует множество интерпретаций термина "регрессионный тест"?

Это было полезно?

Решение

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

Если возможно, что он сломался, проверьте его " Эмпирическое правило применяется здесь. Если изменение в Foo может повлиять на Bar , запустите регрессии для обоих.

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

Другие советы

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

Регрессия обычно используется для обозначения всего набора тестов. Это последнее, что делает QA перед выпуском. Он используется, чтобы показать, что все, что раньше работало, все еще работает, насколько это возможно. По моему опыту, это, как правило, общесистемный набор тестов, независимо от того, насколько маленьким было изменение (хотя небольшие изменения могут не вызвать регрессионный тест).

Где я работаю, регрессионные тесты стандартизированы для каждого приложения в конце каждого выпуска. Они предназначены для тестирования всей функциональности, но они не предназначены для выявления мелких ошибок. Таким образом, если у вас есть форма с различными видами проверки, например, набор регрессии для этой формы будет подтверждать, что выполняется каждый тип проверки (уровень поля и уровень формы) и что правильная информация может быть отправлена , Он не предназначен для охвата каждого отдельного случая (то есть, что если я оставлю поле A пустым? Как насчет поля B? Он просто проверит один из них и предположит, что остальные работают).

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

мое понимание термина "регрессионное тестирование" таково:

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

на практике лучше всего всегда запускать все существующие модульные тесты при внесении изменений.единственный раз, когда я бы беспокоился о подмножестве тестов, - это когда полный набор модульных тестов выполняется "слишком долго" [где "слишком долго" довольно субъективно]

Начните с того, что вы пытаетесь достичь. Затем сделайте то, что вам нужно сделать для достижения этой цели. А затем используйте модное лото, чтобы назначить слово тому, что вы на самом деле делаете. Как и все остальные :-) Точность не так уж важна.

  

... регрессионный тест представлял собой небольшой (всего лишь для того, чтобы доказать, что вы ничего не сломали с введением изменения или новых модулей) образец общих тестов

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

Как правило, подмножество тестов функций для новой функции, представленной в версии X продукта, становится основой регрессионных тестов для версий X + 1, X + 2 и т. д. Со временем вы можете сократить время, затрачиваемое на функциональные / регрессионные тесты стабильных функций, которые не пострадали от регрессий. Если функция страдает от множества регрессий, может быть полезно увеличить акцент на этой функции.

Я думаю, что статья, относящаяся к «обширному регрессионному тесту», означает запуск обширного набора (индивидуально простых) регрессионных тестов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top