Dmitriy Kovalenko: Minimization of manual QA

Post on 15-Jun-2015

253 views 0 download

Transcript of Dmitriy Kovalenko: Minimization of manual QA

или как получить максимальное качество с минимальными усилиями

Минимизация мануального тестирования

Вопросы на которые ответит выступление:

1. Как минимизировать ручную работу без потери качества?

2. Как реализовать трудно автоматизируемые сценарии?

3. Чем в итоге заниматься мануальный тестировщик?

4. Какой profit?

Зачем уменьшать количестов ручного тестирования?

Для того чтобы:

1. Сократить цикл тестирования релиза

2. Увеличить колличество свободных рук для Progression тестирования

3. Исключить человеческий фактор

4. Избежать “замыливания взгляда” при многократном регрессионном тестировании

Два слона, на которых основано уменьшение ручного тестирования:

Подготовка автотестов еще до финального тестирования версии1 2

Практически полное покрытие функциональности автотестами (E2E + Integration automation)

Manual QA sprint

Планирование

Разработка продукта

Progression тестирование

Ознакомление с документацией

Создание тест плана Сценарии для Integration тестовCценарии для E2E автоматизацииСценарии для мануальных тестов

Релиз кандидат

Выполнение progression тестовЗаведение баговСоздание отчета

Regressionтестирование

Анализ результатов автотестов Верификация багов

QA

E2E automation sprint

Планирование

Разработка продукта

Прогрессивное Тестирование

Ознакомление с документацией

Проработка и оценка тестовых сценариевСоздание логики автотестов

Релиз кандидат

Добавление GUI селекторов в тест и отладка теста

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

Запуск готовых тестов!QA

Что такое Integration тесты?

1. Под интеграционными тестами имеется виду не классические тесты на проверку взаимодействия различных частей системы между собой, а BDD фреймворк (Behavior-Driven Development — Разработка на Основе Поведений) для тестирования JavaScript кода

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

3. Они являются промежуточным звеном между Unit и E2E тестами.

4. В нашем случае используется JasmineJS фреймворк для интеграционных тестов

Особенности Integration тестов

1. Являются неотрывной частью процесса разработки2. Разрабатаваются паралельно с основным функционалом3. В зависимости от функционала и сложности могут писатсья автоматизаторами4. Заменяют большое количество E2E тестов5. Покрывают ту функциональность которую нет возможности (рациональности) покрыть E2E тестами

Чем отличаются Integration тесты, от Unit тестов?

Integration тесты E2E тесты

Тестирование GUI Не используется используется

Применение Клиент Клиент + сервер

Область тестирования Один фрейм много фреймов + БД

Используется Developer/Automation QA Automation QA

Скорость Очень быстрая Средняя

Модульного тестирования функциональности

используется нет

Язык Тот же что и основной код (напр. JavaScipt)

Любой высокооуровневый (напр. Java/Python)

Платформа JasmineJS Selenium

Классический QA Спринт

Планирование

Создание Тест кейсов

Прием билда

Running testcases/ bug

reporting

Bug verification

Автоматизация

Отчет

Спринт с оптимизированной автоматизацией

Создание Tест плана

E2E automation(Selenium)

Создание manual Тест кейсов

Integration automation

Запуск автоматизации

Bug verification

Отчет

Прохождение тест-кейсов и

анализ автоматизации

Многопоточная разработка и тестирование

Цикл 0 Анализ документации и планирование, проработка стратегии и пр.

Developer QA automation Manual QA

Разработка Создание тест плана

Создание логики автотестов

Цикл 1

Цикл 2Создание прогрешен тест кейсов

Цикл 3 BugFix

Cоздание Integration тестов

Отладка и запуск автотестов

Выполнение тестов

BugFixВерификация

багов

Цикл nЗапуск, анализ автотестов

...

Classic Test sprint

Regression cycle

Progression cycle

Release

Стандартное время

до недели

Automated Test sprint

Progression cycle

Release

Automationcycle

4 - 8 рабочих часов

стандартное время на тестирование - свободные руки

Задача QA эксперта:

- Создание тест плана, которым будут руководствоваться все команды - Проработка тестовых сценариев, которые покроют весь функционал - Разделение тестовых сценариев для E2E и integration тестов- Закрепление написания автотестов за разными командами и включить их в процесс разработки продукта- Создание тест кейсов для мануального тестирования (все, что останется не покрытым)- Создание тесткейсов для приемочного тестирования- Дополнительные средства верификации (Нагрузочное тестирование, кросс-платформенное, безопастность и пр. )

- Создать логику тестов еще до выпуска первого релиз кандидата по usecases- Добавить селекторы в автотесты сразу после релиза- Отладить автотесты- Завести баги найденные при автоматизации- Запустить их во время регрессионного цикла- Модифицировать/поддерживать тесты

Задачи E2E Automation QA:

Задачи разработчика:

- Написать integration тесты по usecases созданным тест менеджером- Модифицировать/поддерживать тесты- Дать отчет по прохождению integration тестов- Пофиксить баги и выпустить релиз

Задачи manual QA:

- Ознакомится с тест планом и спецификацией - Выполнить тест кейсы для прогрессивного тестирования- Завести баги / верифицировать баги- Проанализировать результаты E2E автотестов- Создать отчет версии

Какой Profit в результате?

- Значительная экономия времени при финальном регресионном тестировании - Улучшения качества кода- Минимизация рисков- Отсутвие ручного регресивного тестирования при запуске HotFix- Оптимизация рабочего процесса автотестировщиков- Максимальное покрытие проекта автотестами

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