SlideShare a Scribd company logo
Система генерации чек-листов для регрессионного
тестирования на основе анализа рисков
или QA паранойя
Солодов Владимир
Superjob, Москва, Россия
Постановка задачи
Постановка задачи
Функционал, связанный с
изменением, положительные
кейсы,
15% критичных багов
Функционал, связанный с
изменением, кейсы на
предельные значения и
отрицательные кейсы,
40% критичных багов
Функционал, не связанный
с изменением,
45% критичных багов
Мы хотим
• получить набор тесткейсов, проведение которых гарантировало бы
нахождение ВСЕХ(!) багов, привнесенных конкретным изменением кода
• получить приоритеты тесткейсов, чтобы сначала обнаружить наиболее
критичные баги, привнесенные с изменениями, а затем находить наименее
критичные баги
Постановка задачи
Природа багов
Задание: Вывести
ссылку «Ссылка 10»
красным цветом
Природа багов
Изменение 1.
Программист поменял код HTML на странице: он обрамил текст ссылки в тег
<font color=”red”> и забыл его закрыть. Все работает, ссылка корректно
окрашена.
Расширяем контекст.
Ниже в верстке есть поп-ап, который появляется при клике на ссылку
«Ссылка3», Текст в попапе окрашивается в цвет, который мы установили для
ссылки.
Природа багов
Природа багов
Изменение 2.
Программист поменял существующий стиль программы, добавил в css-стиль
строку color: red и убрал style:linked.
Расширяем контекст.
В шаблонах других странице данным стилем обозначены все ссылки на
данную страницу, а их текст мы хотим оставить прежним.
Природа багов
Изменение 3.
Программист добавил в css новый стиль, новый идентификатор, для которого
корректно указал цвета.
Расширяем контекст.
С данным стилем, идентификатором был связан код JS, который сейчас не
работает.
Риски реализации
Риск – вероятное событие, приводящее к негативным последствиям.
Величина риска = (вероятность) x (ущерб) = P x H
Ущерб
Вероятность
1 2 3
1 1 2 3
2 2 4 6
3 3 6 9
Риски реализации
Гипотезы, которые мы приняли
• изменения, вносимые в систему однозначно определяют риски, которые могут
материализоваться в системе,
• риски, связанные с каждым изменением могут быть устойчивыми (регулярно
повторяющимися), если взаимосвязи элементов, в которых вносятся изменения
будут сохранять инвариантность (постоянство), то есть изменения должны
касаться изменения частей системы, а не характера их взаимосвязей
Одним из таких инвариантов в компьютерной программе является архитектура
приложения.
Инициализация. Шаги 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). Логика
Инициализация. Шаги 3,4 из 4
Шаг 3. Для каждого изменения можно определить риски, следующие из здравого
смысла и определить им вероятность возникновения 0,5, вред определить из
логики приложения.
Шаг 4. Для каждого риска предусмотреть тест-кейсы, которые должны быть
выполнены, чтобы данный риск был протестирован.
Риск Симптом
1 Стиль наследует данные, которые конфликтуют с
версткой
Верстка нового элемента некорректна
2 Стиль используется другими элементами Верстка сопряженных элементов некорректна
3 Атрибуты наследуются другими элементами Верстка сопряженных элементов некорректна
4 Некорректно работают JS-обработчики Не работают скрипты добавления, модификации
элементов DOMa
Алгоритм работы
Шаг 1. Отметить какие изменения были внесены в систему.
Шаг 2. Выбрать риски для изменений, которые отмечены и отранжировать их в
порядке убывания параметра P x H, для данных рисков уже заранее определены
тесткейсы
Шаг 3. Проверить, риски в порядке убывания параметра
Шаг 4. Отметить риски, которые материализовались, зафиксировать баги в
системе.
Шаг 5. Пересчитать вероятности рисков с учетом того, какие материализовались,
а какие – нет.
Обучение системы
В режиме обучения необходимо проводить регрессионные испытания,
изменения вносятся, если:
• обнаруживается новый вид изменений в системе (такое изменение связано
либо с изменением архитектуры, либо с неправильным исходным разбиением),
• для изменения обнаруживается новый риск, который ранее не был учтен, в
этом случае добавляется новый риск
Демонстрация работы
Демонстрация работы
Демонстрация работы
Демонстрация работы
1. Добавлено поле Expirience в таблицу
- Изменены запросы на страницах, использующих поле
- Меняется валидатор значений
- Поле добавляется в фиды
- Добавляется проверка на обязательность поля
- Поле участвует в полях печати и т.д.
2. Добавлен элемент DOM на страницы Создания, Редактирования, Отображения вакансии
- Добавляется клиентская валидация поля
- Добавляется серверная валидация поля
- Добавляется поле в БД
- Добавляется поле в фид поисковой машины
- Добавляется поле в админке с валидацией
- Добавляется поле в бланк для печати
- Добавляется поле с хинтом
- Поле добавляется в поисковые запросы и параметры рассылок
3. Изменен обработчик JS для отображения поля в бланке вакансии для соискателя
- Изменение DOM, добавление, удаление, изменение элемента
- Изменение клиентской логики, отображение с прописной/строчной буквы
Демонстрация работы
Преимущества
1. Сокращается время тестирования проекта. Тескткейсы приоретизированы
2. До начала изменений разработчики могут увидеть как будет тестироваться
данный функционал
3. До начала проектирования у аналитика есть опорные точки, по которым он
может учесть проблемы, которые уже возникали в проекте, а тестировщик может
выполнять тестирование требований
4. Появляется «память проекта», в которой учтены проблемы, возникавшие ранее.
5. Формируется модель проекта, позволяющая оценить взаимосвязь архитектурных
элементов, таким образом, тестирование переносится в фазу обратной связи
Недостатки
1. На первом этапе обучения не все кейсы получают корректные приоритеты. Эта
проблема проявляется в самом начале, но очень быстро устраняется в процессе
работы системы. Причем устраняется значительно с меньшими затратами
ресурсов и времени, чем, например, в тех же автотестах.
2. В начале работы системы не все кейсы учтены. Эффективность работы системы
во многом зависит от квалификации инженера, выполняющего разбиение.
Однако, это компенсируется тем, что в дальнейшем для систем с одной
архитектурой база рисков уже полностью готова и требует только
незначительной настройки приоритетов кейсов.
3. Изменение архитектуры проекта влечет необходимость изменить поменять
набор рисков и тесткейсов. Архитектура проекта меняется не настолько часто и
является скорее исключением, чем правилом.
Спасибо за внимание, и помните,
«Работа должна доставлять удовольствие»

More Related Content

PPTX
Тестирование сложных программных решений и комплексных систем.
PPTX
Reporting error
PPTX
Тест-дизайн "в цикле"
PPTX
Тесты (типы тестов, организация тестов, создание тестов).
PPTX
Test levels
PPTX
Test types
PPTX
Теория тестирования, часть 2 (процесс, компоненты).
PPT
Тест-дизайн: проще читать или проще писать
Тестирование сложных программных решений и комплексных систем.
Reporting error
Тест-дизайн "в цикле"
Тесты (типы тестов, организация тестов, создание тестов).
Test levels
Test types
Теория тестирования, часть 2 (процесс, компоненты).
Тест-дизайн: проще читать или проще писать

What's hot (20)

PPTX
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
PPTX
Теория тестирования, часть 1
PPTX
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
PPTX
Fundamental test process
PPT
Tpo 05111(1)
PPT
[Sqa days]risk driven testing
PPT
Тестирование ПО (лекция 2)
PPT
Тестирование ПО (лекция 3)
PPT
Тестирование ПО (лекция 1)
PPTX
Тестирование ПО
PPTX
программное обеспечение процесса тестирования
PPTX
Документирование дефектов
PPTX
Процесс тестирования
PPTX
От тестирования к QA
PPTX
Управление конфигурациями и артефакты тестирования
PPTX
Обеспечение качества: Практические советы
PPTX
лекция3 QA
PPTX
лекция4 qa
PPTX
Профилактика дефектов
PPTX
QA Лекция2
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Теория тестирования, часть 1
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Fundamental test process
Tpo 05111(1)
[Sqa days]risk driven testing
Тестирование ПО (лекция 2)
Тестирование ПО (лекция 3)
Тестирование ПО (лекция 1)
Тестирование ПО
программное обеспечение процесса тестирования
Документирование дефектов
Процесс тестирования
От тестирования к QA
Управление конфигурациями и артефакты тестирования
Обеспечение качества: Практические советы
лекция3 QA
лекция4 qa
Профилактика дефектов
QA Лекция2
Ad

Viewers also liked (20)

PPTX
MindMap - в мире интеллектуального тестирования
PPTX
Инструменты для тестирования пользовательского интерфейса UI
PPTX
Пример эффективного управления тест-кейсами при помощи Google docs
PPTX
Риски в тестировании
PDF
Беседа о тестовых данных
PPTX
JIRA. С добавками. Для тестировщиков
PDF
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
PPTX
QA Лекция1
PPTX
Автоматизация тестирования: почему умирают проекты?
PPT
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
PPT
Мини-школа тестировщиков, ориентированных на Web
PPTX
От ручного тестирования к автоматическому: опыт внедрения в крупном проекте
PPTX
Инструменты для тестирования UI
PPTX
Наталья Руколь - Sqamaps
PPTX
Оптимизация процесса тестирования локализаций
PPTX
Как найти побольше багов? (Особенно, если времени нет)
PPTX
Как эффективно организовать Автоматизацию, если у вас недостаточно времени, р...
PDF
Организация тестирования в Inostudio
PPT
Оптимизируем тест кейсы
PPT
Модель компетенций в оценке, обучении и развитии специалиста по тестированию
MindMap - в мире интеллектуального тестирования
Инструменты для тестирования пользовательского интерфейса UI
Пример эффективного управления тест-кейсами при помощи Google docs
Риски в тестировании
Беседа о тестовых данных
JIRA. С добавками. Для тестировщиков
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
QA Лекция1
Автоматизация тестирования: почему умирают проекты?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Мини-школа тестировщиков, ориентированных на Web
От ручного тестирования к автоматическому: опыт внедрения в крупном проекте
Инструменты для тестирования UI
Наталья Руколь - Sqamaps
Оптимизация процесса тестирования локализаций
Как найти побольше багов? (Особенно, если времени нет)
Как эффективно организовать Автоматизацию, если у вас недостаточно времени, р...
Организация тестирования в Inostudio
Оптимизируем тест кейсы
Модель компетенций в оценке, обучении и развитии специалиста по тестированию
Ad

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

PPTX
Тестирование для программистов
PPTX
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
PDF
Грабли автоматизации. Учимся на чужих ошибках
PDF
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
PDF
доклад на SQADays 2011 в Казани
PDF
Процесс тестирования в распределенной команде
PDF
Светлана Федянина - Процесс тестирования в распределенной команде
PDF
Работа с унаследованным кодом. Есть ли жизнь после коммита.
PDF
Heavy metal testing Part 3
PPTX
Улучшить KPI в два раза? Сделано!
ODP
Bugs
PPT
Юрий Цыганенко, QA как услуга
ODP
SqaВфны8
PPTX
Agile: разработка + тестирование
PDF
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
PDF
Автоматическое тестирование. Моя система
PDF
Масло масляное или Тестируем тестирование
PPTX
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
PPT
Бывает так, что вас нет рядом
PPT
Анна Кербель -- Risk driven testing
Тестирование для программистов
«тестирование для программистов. или «есть ли жизнь без тестировщиков» ( рома...
Грабли автоматизации. Учимся на чужих ошибках
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
доклад на SQADays 2011 в Казани
Процесс тестирования в распределенной команде
Светлана Федянина - Процесс тестирования в распределенной команде
Работа с унаследованным кодом. Есть ли жизнь после коммита.
Heavy metal testing Part 3
Улучшить KPI в два раза? Сделано!
Bugs
Юрий Цыганенко, QA как услуга
SqaВфны8
Agile: разработка + тестирование
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Автоматическое тестирование. Моя система
Масло масляное или Тестируем тестирование
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
Бывает так, что вас нет рядом
Анна Кербель -- Risk driven testing

More from SQALab (20)

PDF
Готовим стажировку
PPTX
Куда приводят мечты? или Искусство развития тестировщика
PPT
Оптимизация Selenium тестов и ускорение их поддержки
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
PPTX
Continuous performance testing
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
PPT
Команда чемпионов в ИТ стихии
PPTX
API. Серебряная пуля в магазине советов
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
PPT
Делаем автоматизацию проектных KPIs
PDF
Вредные привычки в тест-менеджменте
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PPTX
Стили лидерства и тестирование
PPT
"Давайте не будем про качество"
PDF
Apache.JMeter для .NET-проектов
PPTX
Тестирование геолокационных систем
PPTX
Лидер или босс? Вот в чем вопрос
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Готовим стажировку
Куда приводят мечты? или Искусство развития тестировщика
Оптимизация Selenium тестов и ускорение их поддержки
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Continuous performance testing
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Команда чемпионов в ИТ стихии
API. Серебряная пуля в магазине советов
Добиваемся эффективности каждого из 9000+ UI-тестов
Делаем автоматизацию проектных KPIs
Вредные привычки в тест-менеджменте
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Стили лидерства и тестирование
"Давайте не будем про качество"
Apache.JMeter для .NET-проектов
Тестирование геолокационных систем
Лидер или босс? Вот в чем вопрос
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...

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

  • 1. Система генерации чек-листов для регрессионного тестирования на основе анализа рисков или QA паранойя Солодов Владимир Superjob, Москва, Россия
  • 3. Постановка задачи Функционал, связанный с изменением, положительные кейсы, 15% критичных багов Функционал, связанный с изменением, кейсы на предельные значения и отрицательные кейсы, 40% критичных багов Функционал, не связанный с изменением, 45% критичных багов
  • 4. Мы хотим • получить набор тесткейсов, проведение которых гарантировало бы нахождение ВСЕХ(!) багов, привнесенных конкретным изменением кода • получить приоритеты тесткейсов, чтобы сначала обнаружить наиболее критичные баги, привнесенные с изменениями, а затем находить наименее критичные баги Постановка задачи
  • 5. Природа багов Задание: Вывести ссылку «Ссылка 10» красным цветом
  • 6. Природа багов Изменение 1. Программист поменял код HTML на странице: он обрамил текст ссылки в тег <font color=”red”> и забыл его закрыть. Все работает, ссылка корректно окрашена. Расширяем контекст. Ниже в верстке есть поп-ап, который появляется при клике на ссылку «Ссылка3», Текст в попапе окрашивается в цвет, который мы установили для ссылки.
  • 8. Природа багов Изменение 2. Программист поменял существующий стиль программы, добавил в css-стиль строку color: red и убрал style:linked. Расширяем контекст. В шаблонах других странице данным стилем обозначены все ссылки на данную страницу, а их текст мы хотим оставить прежним.
  • 9. Природа багов Изменение 3. Программист добавил в css новый стиль, новый идентификатор, для которого корректно указал цвета. Расширяем контекст. С данным стилем, идентификатором был связан код JS, который сейчас не работает.
  • 10. Риски реализации Риск – вероятное событие, приводящее к негативным последствиям. Величина риска = (вероятность) x (ущерб) = P x H Ущерб Вероятность 1 2 3 1 1 2 3 2 2 4 6 3 3 6 9
  • 11. Риски реализации Гипотезы, которые мы приняли • изменения, вносимые в систему однозначно определяют риски, которые могут материализоваться в системе, • риски, связанные с каждым изменением могут быть устойчивыми (регулярно повторяющимися), если взаимосвязи элементов, в которых вносятся изменения будут сохранять инвариантность (постоянство), то есть изменения должны касаться изменения частей системы, а не характера их взаимосвязей Одним из таких инвариантов в компьютерной программе является архитектура приложения.
  • 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). Логика
  • 13. Инициализация. Шаги 3,4 из 4 Шаг 3. Для каждого изменения можно определить риски, следующие из здравого смысла и определить им вероятность возникновения 0,5, вред определить из логики приложения. Шаг 4. Для каждого риска предусмотреть тест-кейсы, которые должны быть выполнены, чтобы данный риск был протестирован. Риск Симптом 1 Стиль наследует данные, которые конфликтуют с версткой Верстка нового элемента некорректна 2 Стиль используется другими элементами Верстка сопряженных элементов некорректна 3 Атрибуты наследуются другими элементами Верстка сопряженных элементов некорректна 4 Некорректно работают JS-обработчики Не работают скрипты добавления, модификации элементов DOMa
  • 14. Алгоритм работы Шаг 1. Отметить какие изменения были внесены в систему. Шаг 2. Выбрать риски для изменений, которые отмечены и отранжировать их в порядке убывания параметра P x H, для данных рисков уже заранее определены тесткейсы Шаг 3. Проверить, риски в порядке убывания параметра Шаг 4. Отметить риски, которые материализовались, зафиксировать баги в системе. Шаг 5. Пересчитать вероятности рисков с учетом того, какие материализовались, а какие – нет.
  • 15. Обучение системы В режиме обучения необходимо проводить регрессионные испытания, изменения вносятся, если: • обнаруживается новый вид изменений в системе (такое изменение связано либо с изменением архитектуры, либо с неправильным исходным разбиением), • для изменения обнаруживается новый риск, который ранее не был учтен, в этом случае добавляется новый риск
  • 19. Демонстрация работы 1. Добавлено поле Expirience в таблицу - Изменены запросы на страницах, использующих поле - Меняется валидатор значений - Поле добавляется в фиды - Добавляется проверка на обязательность поля - Поле участвует в полях печати и т.д. 2. Добавлен элемент DOM на страницы Создания, Редактирования, Отображения вакансии - Добавляется клиентская валидация поля - Добавляется серверная валидация поля - Добавляется поле в БД - Добавляется поле в фид поисковой машины - Добавляется поле в админке с валидацией - Добавляется поле в бланк для печати - Добавляется поле с хинтом - Поле добавляется в поисковые запросы и параметры рассылок 3. Изменен обработчик JS для отображения поля в бланке вакансии для соискателя - Изменение DOM, добавление, удаление, изменение элемента - Изменение клиентской логики, отображение с прописной/строчной буквы
  • 21. Преимущества 1. Сокращается время тестирования проекта. Тескткейсы приоретизированы 2. До начала изменений разработчики могут увидеть как будет тестироваться данный функционал 3. До начала проектирования у аналитика есть опорные точки, по которым он может учесть проблемы, которые уже возникали в проекте, а тестировщик может выполнять тестирование требований 4. Появляется «память проекта», в которой учтены проблемы, возникавшие ранее. 5. Формируется модель проекта, позволяющая оценить взаимосвязь архитектурных элементов, таким образом, тестирование переносится в фазу обратной связи
  • 22. Недостатки 1. На первом этапе обучения не все кейсы получают корректные приоритеты. Эта проблема проявляется в самом начале, но очень быстро устраняется в процессе работы системы. Причем устраняется значительно с меньшими затратами ресурсов и времени, чем, например, в тех же автотестах. 2. В начале работы системы не все кейсы учтены. Эффективность работы системы во многом зависит от квалификации инженера, выполняющего разбиение. Однако, это компенсируется тем, что в дальнейшем для систем с одной архитектурой база рисков уже полностью готова и требует только незначительной настройки приоритетов кейсов. 3. Изменение архитектуры проекта влечет необходимость изменить поменять набор рисков и тесткейсов. Архитектура проекта меняется не настолько часто и является скорее исключением, чем правилом.
  • 23. Спасибо за внимание, и помните, «Работа должна доставлять удовольствие»