
СПИСОК ВОПРОСОВ НА МОДУЛЬНЫЙ КОНТРОЛЬ №2
Понятие регрессионного тестирования 2
Интеграционное тестирование. Уровни, стратегии, их достоинства и недостатки. 5
Основные принципы стратегии «Чистой комнаты» 8
Основные принципы подхода непрерывной интеграции. 11
Этапы цикла построения ПО на примере Hudson 13
Принципы использования каркаса FITNESSE 16
Понятие регрессионного тестирования
Регрессионное тестирование – обобщённое название совокупности методов тестирования ПО, направленных на обнаружение регрессионных ошибок, которые представляют собой вид ошибок, возникающих в одних участках исходного кода программы после модификации других его частей. Проведение подобного вида тестирования необходимо по той причине, что как в процессе разработки, так и в процессе промышленной эксплуатации, программные системы часто модифицируются (например, для соответствия приложения изменившимся требованиям или для устранения обнаруженных ошибок).
При регрессионном тестировании используются уже существующие тестовые наборы, запускавшиеся на более ранних этапах разработки. Основной проблемой при регрессионном тестировании является выбор такого множества тестовых наборов, которое бы покрыло все возникшие изменения. Существуют три основные методологии регрессионного тестирования:
Полное повторное тестирование (Retest All). Данный метод предполагает использование все набора уже существующих тестов для проведения регрессионного тестирования. Если небольшие проекты могут эффективно использовать данный метод, то при разработке объёмных ИС метод оказывается чрезмерно дорогим;
Выбор отдельных тестовых наборов (Regression Test Selection). Данный метод предполагает выбор тестовых наборов из общего числа по определённому алгоритму. К таким алгоритмам относятся, например:
Случайные методы. Выбирается заданный процент тестов с определённым разбросом (это может быть выполнено автоматически, либо экспертом).
Безопасные методы. Выбирается набор тестов, которые покрывают все изменившиеся выходные данные, а также некоторые тесты, которые покрывают выходные данные, оставшиеся без изменений;
Методы минимизации. При этом требуется предварительный анализ для выбора минимального покрытия (что может быть дороже, но не эффективнее, чем использование непосредственно случайных методов)
Методы покрытия кода. При этом сам метод выбора тестов зависит от выбранного критерия покрытия (т. е. покрытие операторов, ветвей или потоков данных).
Приоритезация тестовых наборов (Prioritization of Test Cases). Выбор тестовых наборов происходит по разнообразным критериям, позволяющим произвести сортировку тестов. Существует множество техник выбора критерия, причём сам критерий может различаться при многоуровневом тестировании (тестирование кода, тестирование спецификаций). В качестве критерия может быть выбрано, например, количество ветвей кода, покрываемых тестом (если количество ветвей для двух тестов идентично, то они сортируются случайным образом). Данная методика позволяет быстрее обнаружить критические ошибки в контексте ориентации приложения.
Существует множество инструментов, предназначенных для автоматизации регрессионного тестирования (и тестирования в целом):
Selenium (open source). Инструмент, используемый для автоматизации работы браузеров на основе файлов скриптов (что используется при тестировании);
Robotium. Аналог Selenium для платформы Android (open source);
Watir. Инструмент для автоматизации тестирования веб-страниц с помощью скриптов на языке Ruby;
HP (Mercury) QuickTest Professional. Поддерживает тестирование множества технологий. Для написания сценариев тестирования используется язык VBScript;
IBM Rational Robot. Среда, используемая для тестирования широкого спектра приложений, написанных под разные платформы. Для написания сценариев тестирования, используются скрипты на языке SQABasic;
Borland (Segue) SilkTest. Позволяет составлять тестовые сценарии на языках C++, Java, VB, C#;
Ranorex. Поддерживает широкий спектр тестируемых технологий. Не имеет собственного скриптового языка, но предоставляет библиотеки для написания скриптов на языках C#, VB.NET;