Павел Кондратенко
twitter: @mrgustarus | iam@kondratenko.me
Регрессионное тестирование на
MoscowJS, 25 августа, 2016
1 500 000+ уникальных посетителей ежедневно
Технологии
5
Проблема
6
После правок нужно тестировать то, что уже
протестировано ранее
Решение
7
Регрессионное тестирование
Зачем нужно регрессионное
тестирование?
Первый пример
9
Второй пример
10
До внесения правок
После внесения правок правок
Что такое регрессионное
тестирование?
Регрессионное тестирование
12
Вид тестирования направленный на проверку того факта, что
существующая ранее функциональность работает как и прежде.
Что используется у нас на
проекте?
Тестирование на lenta.ru
14
Unit тестирование компонентов
Тестирование на lenta.ru
15
Тестирование компонентов верстки
Как это выглядит на нашем
проекте?
Нашли место с ошибкой
17
.b-footer__orphus-label

.b-footer__orphus-strong Нашли опечатку? <br/

| Orphus: Ctrl+Enter
Исправили ошибку и сделали push
18
.b-footer__orphus-label

.b-footer__orphus-strong Нашли опечатку? <br/>

| Orphus: Ctrl+Enter
В slack упало уведомление
19
Скриншоты из уведомления
20
До внесения правок
После внесения правок
Результат теста
В slack упало уведомление
21
Как это реализовано на нашем
проекте?
Список билдов в pipelines
Схема тестирования верстки
Build frontend-regression #17661
Схема тестирования верстки
Build frontend-regression #17661
Схема тестирования верстки
Production версия
Build frontend-regression #17661
Схема тестирования верстки
Production версия Development версия
Build frontend-regression #17661
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
Процесс сборки скриншотов с сайта
Процесс сборки скриншотов с сайта
Процесс сборки скриншотов с сайта
Процесс сборки скриншотов с сайта
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
Схема тестирования верстки
Production версия Development версия
Build frontend-regression #17661
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
7. Сравнение скриншотов и поиск отличий
Сравнение блоков
До внесения правок
После внесения правок
Результат теста
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
7. Сравнение скриншотов и поиск отличий
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
7. Сравнение скриншотов и поиск отличий
8. Отправка отчета с картинками в slack
Как выглядит отчет в slack
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
7. Сравнение скриншотов и поиск отличий
8. Отправка отчета с картинками в slack
Схема тестирования верстки
Production версия
На нашем проекте это ветка master
Development версия
Ваш последний коммит
Build frontend-regression #17661
$ git checkout master --force
1. Получение актуальной версии master
2. Сборка и запуск проекта
$ npm run build && rails -s
3. Сборка скриншотов с сайта
$ git checkout 07e2422ce4e23b --force
4. Получение конкретного коммита
5. Сборка и запуск проекта
$ npm run build && rails -s
6. Сборка скриншотов с сайта
7. Сравнение скриншотов и поиск отличий
8. Отправка отчета с картинками в slack
На этапе доработки
Проблемы внедрения
Проблема #1 - BackstopJS из коробки не для команды
53
Как предлагают сделать создатели BackstopJS
Проблема #1 - BackstopJS из коробки не для команды
54
Как предлагают сделать создатели BackstopJS
1. Вы делаете эталонные скриншоты на своей машине.
Проблема #1 - BackstopJS из коробки не для команды
55
Как предлагают сделать создатели BackstopJS
2. Делаете commit и отправляете их в репозитарий.
1. Вы делаете эталонные скриншоты на своей машине.
Проблема #1 - BackstopJS из коробки не для команды
56
Как предлагают сделать создатели BackstopJS
Как есть на самом деле
2. Делаете commit и отправляете их в репозитарий.
1. Вы делаете эталонные скриншоты на своей машине.
Проблема #1 - BackstopJS из коробки не для команды
57
Как предлагают сделать создатели BackstopJS
Как есть на самом деле
2. Делаете commit и отправляете их в репозитарий.
1. Вы делаете эталонные скриншоты на своей машине.
3. Другой разработчик сливает себе скриншоты.
4. Запускает тесты и они падают, так как у него windows,
а у вас unix и сайт рисуется по-разному.
Проблема #1 - BackstopJS из коробки не для команды
58
Как предлагают сделать создатели BackstopJS
Как есть на самом деле
2. Делаете commit и отправляете их в репозитарий.
1. Вы делаете эталонные скриншоты на своей машине.
3. Другой разработчик сливает себе скриншоты.
59
Как предлагают сделать создатели BackstopJS
Как есть на самом деле
Проблема #2 - Автоматизация тестирования
60
Помните этот слайд?
Проблема #2 - Автоматизация тестирования
61
Помните этот слайд?
Вот это все без скрипта - вручную
Проблема #3 - Удобство для команды
62
Проблема #3 - Удобство для команды
63
1. Сообщение должно быть сжатым и информативным.
Проблема #3 - Удобство для команды
64
2. Нужно облако для картинок или доступ к серверу через web.
1. Сообщение должно быть сжатым и информативным.
Минусы и плюсы
Минусы
66
Минусы
67
1. Потратил много времени - две или три недели.
Минусы
68
2. Несколько раз переписывал функционал.
1. Потратил много времени - две или три недели.
Минусы
69
3. Реальная польза только на ранее реализованном функционале.
2. Несколько раз переписывал функционал.
1. Потратил много времени - две или три недели.
Минусы
70
3. Реальная польза только на ранее реализованном функционале.
2. Несколько раз переписывал функционал.
1. Потратил много времени - две или три недели.
Все минусы - на этапе внедрения.
Плюсы
71
Плюсы
72
1. Уже выявили несколько косяков до релиза.
Плюсы
73
2. Появилась возможность проверить за собой без QA.
1. Уже выявили несколько косяков до релиза.
Плюсы
74
3. Все делается в автоматическом режиме, не нужно следить.
2. Появилась возможность проверить за собой без QA.
1. Уже выявили несколько косяков до релиза.
Плюсы
75
3. Все делается в автоматическом режиме, не нужно следить.
2. Появилась возможность проверить за собой без QA.
1. Уже выявили несколько косяков до релиза.
4. Повысилось качество работы разработчиков.
Плюсы
76
3. Все делается в автоматическом режиме, не нужно следить.
2. Появилась возможность проверить за собой без QA.
1. Уже выявили несколько косяков до релиза.
4. Повысилось качество работы разработчиков.
Все плюсы - после внедрения.
Резюме
Регрессионное тестирование
78
Starter kit
Регрессионное тестирование
79
1. Установить BackstopJS и зависимости.
+
Регрессионное тестирование
80
2. Указать url страниц.
Регрессионное тестирование
81
3. Указать селекторы блоков для тестирования.
Регрессионное тестирование
82
Готово!
T H I S I S T H E E N D
Материалы из презентации и контакты
84
Контакты, ссылки по теме
и сама презентация
Адрес для любых вопросов
и предложений
Профиль linkedin https://ru.linkedin.com/in/kondratenkopa
iam@kondratenko.me
http://goo.gl/UNeQV2

Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, MoscowJs 33