23
Система генерации чек-листов для регрессионного тестирования на основе анализа рисков или QA паранойя Солодов Владимир Superjob, Москва, Россия

Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

  • Upload
    sqalab

  • View
    693

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

или QA паранойя

Солодов ВладимирSuperjob, Москва, Россия

Page 2: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Постановка задачи

Page 3: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Постановка задачи

Функционал, связанный с изменением, положительные кейсы, 15% критичных багов

Функционал, связанный с изменением, кейсы на предельные значения и отрицательные кейсы, 40% критичных багов

Функционал, не связанный с изменением, 45% критичных багов

Page 4: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Мы хотим

• получить набор тесткейсов, проведение которых гарантировало бы нахождение ВСЕХ(!) багов, привнесенных конкретным изменением кода

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

Постановка задачи

Page 5: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Природа багов

Задание: Вывести ссылку «Ссылка 10» красным цветом

Page 6: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Природа багов

Изменение 1.

Программист поменял код HTML на странице: он обрамил текст ссылки в тег <font color=”red”> и забыл его закрыть. Все работает, ссылка корректно окрашена.

Расширяем контекст.

Ниже в верстке есть поп-ап, который появляется при клике на ссылку «Ссылка3», Текст в попапе окрашивается в цвет, который мы установили для ссылки.

Page 7: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Природа багов

Page 8: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Природа багов

Изменение 2.

Программист поменял существующий стиль программы, добавил в css-стиль строку color: red и убрал style:linked.

Расширяем контекст.

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

Page 9: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Природа багов

Изменение 3.

Программист добавил в css новый стиль, новый идентификатор, для которого корректно указал цвета.

Расширяем контекст.

С данным стилем, идентификатором был связан код JS, который сейчас не работает.

Page 10: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Риски реализации

Риск – вероятное событие, приводящее к негативным последствиям.

Величина риска = (вероятность) x (ущерб) = P x H

Ущерб

Ве

ро

ятн

ост

ь 1 2 3

1 1 2 3

2 2 4 6

3 3 6 9

Page 11: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Риски реализации

Гипотезы, которые мы приняли

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

Одним из таких инвариантов в компьютерной программе является архитектура приложения.

Page 12: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Инициализация. Шаги 1,2 из 4

Шаг 1. На основе архитектуры приложения выделить основные компоненты (элементы архитектуры: шаблоны, базы данных, модели, таблица стилей)

Шаг 2. Для каждого компонента выделить изменения, которые вносятся разработчиком

1. Изменения CSS (styles.css, blitz, ViewModel)2. Исправление JS (файлы плагинов, blitz, ViewModel)3. DOM-HTML (blitz). Добавление элемента в дерево4. DOM-HTML (blitz). Изменение существующего элемента5. DOM-HTML (blitz). Удаление элемента из дерева6. Изменения в БД. Добавление нового поля 7. Изменения в БД. Удаление поля8. Изменения в БД. Исправлен запрос9. Изменение PHP скриптов (Контроллер, VM). Логика

Page 13: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Инициализация. Шаги 3,4 из 4

Шаг 3. Для каждого изменения можно определить риски, следующие из здравого смысла и определить им вероятность возникновения 0,5, вред определить из логики приложения.

Шаг 4. Для каждого риска предусмотреть тест-кейсы, которые должны быть выполнены, чтобы данный риск был протестирован.

Риск Симптом

1 Стиль наследует данные, которые конфликтуют с версткой

Верстка нового элемента некорректна

2 Стиль используется другими элементами Верстка сопряженных элементов некорректна

3 Атрибуты наследуются другими элементами Верстка сопряженных элементов некорректна

4 Некорректно работают JS-обработчики Не работают скрипты добавления, модификации элементов DOMa

Page 14: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Алгоритм работы

Шаг 1. Отметить какие изменения были внесены в систему.

Шаг 2. Выбрать риски для изменений, которые отмечены и отранжировать их в порядке убывания параметра P x H, для данных рисков уже заранее определены тесткейсы

Шаг 3. Проверить, риски в порядке убывания параметра

Шаг 4. Отметить риски, которые материализовались, зафиксировать баги в системе.

Шаг 5. Пересчитать вероятности рисков с учетом того, какие материализовались, а какие – нет.

Page 15: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Обучение системы

В режиме обучения необходимо проводить регрессионные испытания, изменения вносятся, если:

• обнаруживается новый вид изменений в системе (такое изменение связано либо с изменением архитектуры, либо с неправильным исходным разбиением),• для изменения обнаруживается новый риск, который ранее не был учтен, в этом случае добавляется новый риск

Page 16: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Демонстрация работы

Page 17: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Демонстрация работы

Page 18: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Демонстрация работы

Page 19: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Демонстрация работы

1. Добавлено поле Expirience в таблицу- Изменены запросы на страницах, использующих поле - Меняется валидатор значений - Поле добавляется в фиды- Добавляется проверка на обязательность поля - Поле участвует в полях печати и т.д.

2. Добавлен элемент DOM на страницы Создания, Редактирования, Отображения вакансии- Добавляется клиентская валидация поля- Добавляется серверная валидация поля - Добавляется поле в БД - Добавляется поле в фид поисковой машины - Добавляется поле в админке с валидацией- Добавляется поле в бланк для печати - Добавляется поле с хинтом- Поле добавляется в поисковые запросы и параметры рассылок

3. Изменен обработчик JS для отображения поля в бланке вакансии для соискателя- Изменение DOM, добавление, удаление, изменение элемента- Изменение клиентской логики, отображение с прописной/строчной буквы

Page 20: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Демонстрация работы

Page 21: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Преимущества

1. Сокращается время тестирования проекта. Тескткейсы приоретизированы

2. До начала изменений разработчики могут увидеть как будет тестироваться данный функционал

3. До начала проектирования у аналитика есть опорные точки, по которым он может учесть проблемы, которые уже возникали в проекте, а тестировщик может выполнять тестирование требований

4. Появляется «память проекта», в которой учтены проблемы, возникавшие ранее.

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

Page 22: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Недостатки

1. На первом этапе обучения не все кейсы получают корректные приоритеты. Эта проблема проявляется в самом начале, но очень быстро устраняется в процессе работы системы. Причем устраняется значительно с меньшими затратами ресурсов и времени, чем, например, в тех же автотестах.

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

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

Page 23: Система генерации чек-листов для регрессионного тестирования на основе анализа рисков

Спасибо за внимание, и помните,

«Работа должна доставлять удовольствие»