Post on 15-Jun-2015
или как получить максимальное качество с минимальными усилиями
Минимизация мануального тестирования
Вопросы на которые ответит выступление:
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- Оптимизация рабочего процесса автотестировщиков- Максимальное покрытие проекта автотестами
Спасибо за внимание!