четверг, 18 апреля 2013 г.

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

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

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

      Виды
    Основные виды тестов регрессии в порядке их важности (обычно в таком порядке их и выполняют).
     1. Тесты верификации версии (Build Verification Test). Нужны эти тесты для проверки основной функциональности каждой версии программы. Только будучи уверенным в том, что основная функциональность программы не нарушена. При нахождении ошибки с помощью таких тестов необходимо пересмотреть соответствующую часть кода на предмет ошибок.
    2. Тесты верификации ошибок (Bug Verification Test). Если некоторый тест выявил наличие ошибки, необходимо после исправления провести этот тест еще раз. Хотя проведение этих тестов и является логичным, многие разработчики пренебрегают такого вида тестированием.
    3. Тесты регрессии (Regression Test Pass). К этим тестам относятся те, которые уже проводились с предыдущими версиями программы и не выявляли ошибок. Иногда при отсутствии времени некоторые из тестов можно пропустить (желательно только тогда, когда не были внесены изменения в соответствующие участки кода). Если ранее такие тесты уже проводились более 3 раз и предполагается их выполнение в дальнейшем, то данный процесс неплохо было бы автоматизировать.
      4. Тесты регрессии на исправленных ошибках (тесты на закрытых ошибках). Что такое закрытые ошибки можно понять из примера. Пусть некоторый тест нашел ошибку. После исправления этот же тест ошибки не обнаружил. В этом случае ошибка и называется “закрытой”. Ошибка может проявиться снова по ряду причин (особенно при модификации кода). Поэтому время от времени нужно возвращаться к этому месту программы.

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

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

Комментариев нет:

Отправить комментарий