SlideShare une entreprise Scribd logo
1  sur  43
Автоматизация тестирования
Уровни тестирования
• Запуск кода программистом(Smoke test)
• Статический анализ кода (code review)
• Автоматизированное регрессионное тестирование
• Ручное тестирование (nf, imprv, bug)
• Анализ дизайна
Код ревью ?
Код ревью
Получаем
задачу
Создаем
ветку
Кодим
Создаем
ПР
Получаем
фидбек
Исправления
Ручное
тестирование
Автотесты
Назначение
ревьюеров
Польза ?
• Улучшается качество кода
• Находятся глупые ошибки(опечатки) в реализации
• Повышается степень совместного владения кодом
• Код приводится к единому стилю написания
• Хорошо подходит для обучения “новичков”, быстро
набирается навык
• Распространение знаний
• Обеспечение обмена опытом внутри команды.
Стоимость качества
Из статьи B. Boehm and V. Basili «Software Defect Reduction Top 10 List» (IEEE Computer, IEEE Computer Society,
Vol. 34, No.1, January 2001, pp. 135-137.)
Или так
Если стоимость усилий, необходимых для обнаружения и устранения ошибки на стадии
написания кода, принять за единицу
Дефекты которые могут быть найдены в рамках
код ревью :
• Обращение к переменной которой не существует или не присвоено
значение
• Переменные которые не используются или не корректно объявлены
• Не выполняемые ветки кода
• Пропущенная или неверная логика (бесконечные циклы)
• Излишне сложные конструкции
• Отклонение от стандартов программирования
• Уязвимости в безопасности
• Нарушение синтаксиса в код
Преимущества внедрения код ревью
• Ранее исправление дефектов до проведения
тестирования
• Уменьшение времени и стоимости тестирования
• Сокращение итераций между процессами регистраций и
починки багов
Причины внедрения
1. Ручное тестирование требует длительного времени.
2. Сокращение подверженных ошибкам задач тестирования
3. Освобождение времени для выполнения лучшей работы
4. Страховочная сетка
5. Быстрое получение отклика
6. Тесты являются самой актуальной документацией
7. Возврат инвестиций
1. Ручное тестирование требует
длительного времени
Пример с платными услугами
- По мере роста приложения время на тестирования
возрастает иногда экспоненциально
- Необходимость вводить данные в UI
- Подготовка данных для множества различных
сценариев
Пример
Действие Ручное Автоматизированное
Ввод данных ~10*5 секунд = 50 секунд ~10*0,1 = 1 секунда
Нажатие кнопки “Подать” 1 секунда 0,5 секунд
Промодерировать объявление в
админке
секунд 30 5 секунд
Поиск параметров с данными на
странице объявления
~10*5 секунд = 50 ~10*0.5= 5 секунд
Сравнение данных 10*2 секунды = 20 секунд ~10*0.5=5 секунд
Итого ~ 150 секунд ~16,5 секунд
2. Ручной процесс подвержен ошибкам
2. Ручной процесс подвержен ошибкам
- Написанные сценарии очень быстро надоедают
- Пропуск простейших дефектов
- Соблазн срезать углы при жестких временных
рамках
В результате серьезные проблемы остаются
незамеченным
3. Автоматизация освобождает людей для
выполнения лучшей работы
• Возможность больше уделять времени для
исследовательского тестирования
• Больше энергии для творческой работы
• Обдумывание разных сложных сценариев
В результате не тратим уйму времени на утомительные
ручные сценарии
4. Автоматизированные тесты
предоставляют “Страховочную сетку”
Замечательное чувство уверенности
- Мгновенная обратная связь
- Если нет тестов то страховочной сеткой служат
тестировщики
Пример: рефакторинг какого либо важного функционала
4. Автоматизированные тесты
предоставляют “Страховочную сетку”
5. Автоматизированные тесты
обеспечивают ранний и частый отклик
• Быстрое выявление ошибок
• Дешевые исправления дефектов
6. Тесты означают замечательную документ
- Живая спецификация
- Всегда актуальная, так как тесты поддерживаются и
запускаются при каждом пуше
7. Возврат инвестиций и окупаемость
• Освобождает дополнительное время
- Возможность исправления допущенных ошибок до
фиксации в системе управления версиями
- Помогает разрабатывать надежный код
7. Возврат инвестиций и окупаемость
Препятствия?
- Это работа тестировщиков
- Боль перемен
- Начальные инвестиции
- Постоянно меняющийся код
- Страх
- Старые привычки
Автоматизация - не серебряная пуля!
- Все же есть тесты, которые требуют человеческих глаз,
ушей и разума.
- Не стоить писать автотесты на одноразовые сценарии
- Теперь команде надо постоянно поддерживать десятки
или даже сотни тестовых сценариев
Пирамида тестирования
Unit tests/Component
Tests
Functional
tests
GUI
Tests
Manual
tests
Codeception
- Фреймворк для тестирования PHP приложений
- Комплексное тестирование
- Модульное тестирование
- Создан на основе фреймворка PHPUnit.
Уровни автоматизации
• Unit тесты
• Functional тесты
• Acceptance (приемочные) тесты
Все в едином стиле
Приемочные тесты
- Требует реального запуска браузера (Chrome, Firefox)
- Можно проверить элементы на видимость на странице
- Можно проверить выполнения JavaScript
- Медленные
- Требует запуска Selenium WebDriver
Схема взаимодействия
Codeception
Selenium
Server
Web Driver Chrome
Функциональные тесты
- Не требуют реального запуска браузера (Chrome, Firefox)
- Нельзя проверить элементы на видимость на странице
- Нельзя проверить выполнение JavaScript
- Быстрые
- Не требуют запуска Selenium WebDriver
- Использует PHP Browser
- Может отправлять Get, Post, Ajax запросы
Статистика
~ 1000 тестов на 3 проектах
Время прохождения тестов:
Колёса ~ 8 минуты
Крыша ~ 7 минуты
Маркет ~ 4 минуты
Проблемы роста
- Сложность поддержки тестов при росте их количества
- Нестабильность (Selenium, инфраструктура)
- Рост времени прохождения тестов
Оптимизация
- Переписываем приемочные тесты в функциональные
(если можно)
- Включаем SingleMode/LongMode
- Пересматриваем тест сценарии
- Служебные методы для генерации тестовых данных
Цели
- Увеличивать количество тестов
- Поддерживать стабильность тестов
- Контролировать время прохождения тестов
- Постоянный рефакторинг тестов
1 блок аксептанс теста
2 блок аксептанс теста
3 блок аксептанс теста
1 блок функционального теста
2 блок функционального теста
3 блок функционального теста
Спасибо за внимание!
Внимание...

Contenu connexe

Tendances

Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьIgor Khrol
 
Фокус тест
Фокус тестФокус тест
Фокус тестSQALab
 
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?Oksana Avchinnikova
 
Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Andrei Solntsev
 
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуSQALab
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийSQALab
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...Igor Khrol
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Igor Khrol
 
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграцииIgor Khrol
 
Free Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingFree Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingAlexandr Zinovyev
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовSQALab
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиSQALab
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web apiIgor Lyubin
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'аПричины и способы имитации back-end'а
Причины и способы имитации back-end'аOksana Avchinnikova
 
Повышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScriptПовышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScriptIgor Khrol
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Igor Khrol
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьSQALab
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Ontico
 

Tendances (20)

Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем суть
 
Фокус тест
Фокус тестФокус тест
Фокус тест
 
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?Как улучшить тесты на Selenium с помощью "визуального тестирования"?
Как улучшить тесты на Selenium с помощью "визуального тестирования"?
 
Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)
 
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качеству
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
 
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграции
 
Free Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testingFree Desktop QA Engineers: implement automation testing
Free Desktop QA Engineers: implement automation testing
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
Причины и способы имитации back-end'а
Причины и способы имитации back-end'аПричины и способы имитации back-end'а
Причины и способы имитации back-end'а
 
Повышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScriptПовышаем надёжность тестов через JavaScript
Повышаем надёжность тестов через JavaScript
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизировать
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 

Similaire à Автоматизация тестирования

Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
Автоматизация тестирования: почему умирают проекты?
Автоматизация тестирования: почему умирают проекты?Автоматизация тестирования: почему умирают проекты?
Автоматизация тестирования: почему умирают проекты?SQALab
 
Автоматизация Тестирования - Почему умирают проекты?
Автоматизация Тестирования - Почему умирают проекты?Автоматизация Тестирования - Почему умирают проекты?
Автоматизация Тестирования - Почему умирают проекты?Igor Khrol
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Sergey Ryabenko
 
зуева татьяна - опыт автоматизации тестирования в Agile проекте
зуева татьяна -  опыт автоматизации тестирования в Agile проектезуева татьяна -  опыт автоматизации тестирования в Agile проекте
зуева татьяна - опыт автоматизации тестирования в Agile проектеMagneta AI
 
Автоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производстваАвтоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производстваSQALab
 
О тестировании в EDI
О тестировании в EDIО тестировании в EDI
О тестировании в EDIMaxim Zakharov
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU
 
Automation Overview
Automation OverviewAutomation Overview
Automation OverviewKiraKeiss
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьGoIT
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Sigma Software
 

Similaire à Автоматизация тестирования (20)

Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Автоматизация тестирования: почему умирают проекты?
Автоматизация тестирования: почему умирают проекты?Автоматизация тестирования: почему умирают проекты?
Автоматизация тестирования: почему умирают проекты?
 
Автоматизация Тестирования - Почему умирают проекты?
Автоматизация Тестирования - Почему умирают проекты?Автоматизация Тестирования - Почему умирают проекты?
Автоматизация Тестирования - Почему умирают проекты?
 
Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.Юнит тестирование в Web. Как получать пользу и удовольствие.
Юнит тестирование в Web. Как получать пользу и удовольствие.
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
зуева татьяна - опыт автоматизации тестирования в Agile проекте
зуева татьяна -  опыт автоматизации тестирования в Agile проектезуева татьяна -  опыт автоматизации тестирования в Agile проекте
зуева татьяна - опыт автоматизации тестирования в Agile проекте
 
Автоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производстваАвтоматизация сборки и тестирования в разрезе эффективного производства
Автоматизация сборки и тестирования в разрезе эффективного производства
 
О тестировании в EDI
О тестировании в EDIО тестировании в EDI
О тестировании в EDI
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Automation Overview
Automation OverviewAutomation Overview
Automation Overview
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спростить
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Enter: testing
Enter: testingEnter: testing
Enter: testing
 
Project under control
Project under controlProject under control
Project under control
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
 

Plus de Колёса Крыша Маркет

Plus de Колёса Крыша Маркет (6)

Введение в gRPC
Введение в gRPCВведение в gRPC
Введение в gRPC
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Интеграция и управление системами с помощью ESB
Интеграция и управление системами с помощью ESBИнтеграция и управление системами с помощью ESB
Интеграция и управление системами с помощью ESB
 
Переход на Php 7 и итоги
Переход на Php 7 и итогиПереход на Php 7 и итоги
Переход на Php 7 и итоги
 
Крыша 2.0
Крыша 2.0Крыша 2.0
Крыша 2.0
 
Жизнь и приключения картинки
Жизнь и приключения картинкиЖизнь и приключения картинки
Жизнь и приключения картинки
 

Автоматизация тестирования

Notes de l'éditeur

  1. Всем привет! Меня зовут Абылхаир, я работаю в компании чуть более 2 лет, занимался ручным тестированием, сейчас больше времени занимаюсь автоматизацией тестирования. Сегодня вы с Вами поговорим о процессе тестирования в нашей компании, точнее рассмотрим некоторые уровни тестирования. Для начало думаю будет правильно вспомнить что такое тестирование и для чего оно нужно?
  2. Теперь давайте рассмотрим уровни тестирования в нашей компании. Уровни тестирования: Запуск кода программистом (Smoke test) Статический анализ кода (код ревью) Автоматизированное регрессионное тестирование Ручное тестирование (new feature, improvement, bug) Анализ дизайна (авторский надзор) Мы с Вами рассмотрим подробно 2 пункта Статический анализ кода и Автоматизированное тестирование.
  3. Что такое статический анализ кода и что это дает ? Код ревью это инженерная практика когда программист предоставляет свой код другим программистам для чтения и комментирования перед тем как вылить этот код в продакшен. То есть это анализ кода с целью выявить ошибки, недочеты, расхождения в стиле написания кода,
  4. Кроме этого благодаря процессу код ревью можно на ранних стадиях разработки ПО найти и исправить важные баги, которые сложно воспроизвести при динамичном тестировании. А как мы знаем чем баг находится ранее тем он обходится дешевле. То есть исправление ошибок на уровне код ревью абсолютно ничего не стоит. (надо найти график стоимости ошибок взять с презентации культура есть еще фотки в загрузках), привести пример тойоту, в 2009 году из бага в ПО (не механического )компании пришлось отозвать 9 миллионов тачек по всему миру, что повлекло за собой убытки в размере 3 млрд долларов и самое печальное что 4 человека которые сидели в салоне погибли.
  5. В итоге хочется сказать что код ревью не только полезный но и необходимый этап разработки. Ежедневное ревью кода - это хорошая практика обмена опытом и обнаружения ошибок, особенно, если дело касается новых технологий и проектов со сложной бизнес логикой. Просматривая ревью коллег, можно как обнаружить новые способы решения той или иной задачи, так и поделиться опытом, как сделать лучше и правильнее. Как результат, команда прогрессирует быстрее, технический уровень разработчиков выравнивается, улучшается понимание целей, качество проекта возрастает, всевозможные конфликты в команде, на почве "кривого кода", решаются на самых ранних стадиях. А для заказчика это приносит денежные результаты, качественный код легче, быстрее и дешевле сопровождать. Единственный недостаток ревью является Если вы и ваши коллеги не уделяете время тому, чтобы CR был сделан, причем сделан быстро, тогда CR может стать причиной недовольства людей в коллективе
  6. А теперь давайте поговорим об автоматизации тестирования в нашей компаний. Возможно есть люди которые знают про автоматизацию, о ее преимуществах, возможно и нет, поэтому думаю будет правильно если мы для начала поймем что это, для чего нужно и какие есть причины внедрения автоматизации в проект. Серьезные команды сосредоточены на том, чтобы постоянно иметь работающее программное обеспечение, что позволяет им выдавать выпуск с нужной частотой. Достижение этой цели требует постоянного полного тестирования, в свою очередь полное тестирование ПО становится практически нереальным без автоматизации. Грубо говоря автоматизация тестирования - это комплекс мер и действий направленные на автоматизацию сценариев использования того или иного продукта. И есть несколько причин для внедрения автоматизации в проект. Автоматизация тестов - основная практика гибкой методологий(канбан, скрум). Гибкие проекты зависят от автоматизации. Достаточно хорошая автоматизация позволяет команде часто выдавать высококачественный код. Современную разработку программного обеспечения тяжело представить без автоматического тестирования — по сути это единственный способ защитить продукт от разрушительных изменений. Автоматизация - ключ к успешной гибкой разработке. Какие есть причины внедрения автоматизации.
  7. Самая главная причина по которой команды стремятся к автоматизации, состоит в том, что ручное тестирование просто отнимает очень много времени. Хочу рассмотреть 1 пример. Давайте представим что нам надо проверить на регрессию форму подачи объявления. К примеру возьмем категорию “Продажа квартир”. Чтобы подать объяву в эту категорию нам надо к примеру заполнить 10 обязательных полей. Потом промодерировать объяву и проверить те ли данные отображаются на странице объявления которые мы указывали ? Рассмотрим первый случай ручного тестирования: Ввод данных, ~10*5 секунд = 50 секунд Нажатие кнопки “Подать” = 1 секунда Промодерировать объявление в админке ~ секунд 30, если это уже опытный тестировщик Поиск параметров с данными на странице объявления ~10*5 секунд = 50 секунд. Сравнение данных, 10*2 секунды = 20 секунд. Итого: ~ 150 секунд. Рассмотрим автоматизированный вариант: Ввод данных, ~10*0,1 = 1 секунда Нажатие на кнопку “ПОдать” 0,5 секунд Промодерировать объявления в админке 5 секунд Поиск параметров на странице объявления ~10*0.5= 5 секунд Сравнение данных ~10*0.5=5 секунд Итого: 16,5 секунд По мере роста приложения время на полное его тестирования также возрастает, иногда экспоненциально. Главная цель гибких команд это иметь каждый день рабочий продукт. Выполнение регрессивных тестов вручную отнимает все больше и больше времени. Чтобы тестирование не отставало от кодирования, либо программистам придется помогать в проведении ручных тестов, либо команде придется нанимать дополнительных ручных тестировщиков. Ручное тестирование множество разнообразных сценариев может занять уйму времени особенно, если приходится вручную вводить данные в пользовательском интерфейсе. ПОдготовка данных для множества различных сценариев может стать неподъемной задачей. В результате может быть протестировано лишь ограниченное количество сценариев, и важные дефекты останутся незамеченными. К примеру порефакторили код на стороне апи касательно платных услуг. Вот теперь представьте процесс ручного тестирования 8 платных услуг 3 проектов на 12 платформах.
  8. Повторяющиеся ручное тестирование, особенно по написанным сценариям, очень быстро надоедает. Это прямой путь к ошибкам и пропуску даже простейших дефектов. Люди, выполняющие ручное тестирование пропускают шаги, а то и целые тесты. Если перед командой стоят жесткие сроки, возникает соблазн “Срезать углы”, в результате чего серьезные проблемы остаются незамеченными.
  9. Запуск всех модульных и регрессивных тестов в рамках непрерывной сборки означает, что больше времени можно уделить исследовательскому тестированию. Поскольку вы не тратите время на выполнение утомительных ручных сценариев, ваша энергия сохраняется для более сложной и творческой работы, обдумывание разных сценариев и изучения работы приложения.
  10. Знание о том что код имеет хорошее покрытие автоматизированными регрессивными тестами, дает замечательное чувство уверенности. Конечно, любые изменения могут дать неожиданный эффект, но мы узнаем об этом в течении каких-то минут. Не имея “Страховочной сетки” в виде автоматизированного комплекса тестов, программисты могут начать воспринимать в качестве такой сетки самих тестировщиков.
  11. Быстрое выявление ошибок означает что их дешевле исправлять, ежели в продакшне.
  12. Когда автоматизированы тесты, иллюстрирующие примеры желаемого поведения, она становится “Живой” документацией, описывающей работу систему. Так же они всегда являются актуальной, так как запускается при каждом пуше.
  13. Автоматизация высвобождает дополнительное время для тестировщиков и членов команды, чтобы сконцентрироваться на своевременном выводе на рынок правильного продукта. Важный компонент окупаемости тестирования заключается в способе исправления дефектов. Команды, полагающиеся на ручные тесты, часто находят ошибки по истечению значительного времени после написания кода, содержащего эти ошибки. Они работают в режиме исправления “Ошибки дня” вместо того, чтобы выявлять первоначальную причину ошибки с соответствующим изменением кода. Когда программисты запускают комплекты автоматизированных тестов в своих песочницах, то эти регрессивные тесты позволяют выявлять ошибки еще до фиксации кода в системе управления версиями. Это обеспечивает замечательную окупаемость, сокращает технический долг и позволяет разрабатывать надежный код.
  14. Также кроме причин внедрения, есть и препятствия. Причины: Позиция программистов - это работа тестировщиков. Боль перемен Начальные инвестиции Постоянные меняющийся код Страх Старые привычки Но у нас в команде с препятствиями нет проблем, может и были, но я не застал этот период. Некоторые виды тестов требуют человеческих глаз, ушей разума. В эту категорию попадают тестирование удобства и исследовательское тестирование. Другие тесты, которые могут не стоить вложений в автоматизацию - это одноразовые тесты и тесты которые никогда не дают сбоев. В таких случаях автоматизация может помочь только в подготовке сценариев для последующей оценки удобства.
  15. В общем автоматизация не серебряная пуля, которая разом решает все задачи тестирования, теперь команде приходится поддерживать десятки или даже сотни тестовых сценариев. В общем, автоматизированное тестирование не имеет смысла для маленьких, и краткосрочных проектов, поскольку первоначальные расходы слишком высоки. Кроме того, если вы тестируете вещи, которые требуют человеческого понимания (human touch), такие как юзабилити (usability), то тестировщик-человек будет гораздо лучше.
  16. Какое соотношение видов автоматизированных тестов должно быть ? Здесь привести пример с картинкой пирамиды. Процентный разброс может различаться. Вся суть в том, что у вас должно быть намного больше низкоуровневых юнит-тестов, чем высокоуровневых тестов через GU
  17. В нашей компании было принято решение использовать фреймворк Codeception. Обычно, новые возможности веб приложений тестируются путем открытия соответствующей страницы в браузере, на которой возможно нужно заполнить некоторые поля и отправить форму, после чего разработчики, тестеры могут увидеть, каким получится результат. Codeception это многофункциональный фреймворк для тестирования PHP-приложений. Он может выполнять комплексное тестирование, а также тестирование отдельных элементов веб-приложений. Codeception позволяет тестировать различные варианты поведения посетителя сайта. Таким образом, можно сэмулировать поведение реального посетителя, который взаимодействует с элементами интерфейса чтобы убедиться в правильной работе приложения в различных случаях.
  18. Существует 3 уровня автоматизации тестирования: Уровень модульного тестирования Уровень функционального тестирования Уровень тестирования через пользовательский интерфейс (GUI) (Приемочное тестирование) Уровень модульного тестирования (Unit Test layer) Под автоматизированными тестами на этом уровне понимаются Компонентные или Модульные тесты написанные разработчиками. Тестировщикам никто не запрещает писать такие тесты, которые будут проверять код, конечно же, если их квалификация позволяет это. Наличие подобных тестов на ранних стадиях проекта, а также постоянное их пополнение новыми тестами, проверяющими «баг фиксы», убережет проект от многих серьезных проблем. Уровень функционального тестирование (Functional Test Layer non-ui) Как правило не всю бизнес логику приложения можно протестировать через GUI слой. Это может быть особенностью реализации, которая прячет бизнес логику от пользователей. Именно по этой причине по договоренности с разработчиками, для команды тестирования может быть реализован доступ напрямую к функциональному слою, дающий возможность тестировать непосредственно бизнес логику приложения, минуя пользовательский интерфейс. Уровень тестирования через пользовательский интерфейс (GUI Test Layer) На данном уровне есть возможность тестировать не только интерфейс пользователя, но также и функциональность, выполняя операции вызывающую бизнес логику приложения. С нашей точки зрения, такого рода сквозные тесты дают больший эффект нежели просто тестирование функционального слоя, так как мы тестируем функциональность, эмулируя действия конечного пользователя, через графический интерфейс.
  19. Самым популярным является “Модульное тестирование”(Юнит тестинг). В случае веб приложений, тестирование моделей и контроллеров в изоляции друг от друга не гарантирует работоспособность всего приложения. Для полной проверки приложения Вы должны написать функциональные и приемочные тесты. В Codeception мы получаем возможность писать модульные, функциональные и приемочные тесты в едином стиле. Но в реалиях кодесепшн понятие функциональное и приемочное немного видоизменяется. Давайте рассмотрим уровни тестирования в рамках кодсепшн: Приемочные тесты : Требует реального запуска браузера (Chrome, Firefox) Можно проверить элементы на видимость на странице Можно проверить выполнения JavaScript-a Медленные Требует запуска Selenium WebDriver-a
  20. Как работатет? Грубая схема примерно такая : Codeception -> SeleniumServer-> WebDriver-> Chrome.
  21. Функциональные тесты: Не требует запуска реального браузера Нельзя проверить элементы на видимость на странице Нельзя проверить выполнение JavaScript Быстрые Не требуют запуска Selenium WebDriver Использует PhpBrowser Может отправлять Get Post Ajax запросы
  22. Хотел привести немного статистики: 1000 тестов на 3 проектах Время прохождения тестов: Колеса ~ 8 минут Крыша ~ 7 минут Маркет ~ 4 минуты
  23. Какие есть прКакие есть проблемы ? Проблемы роста Сложность поддержки при росте их количества Нестабильность Рост времени прохождения тестовоблемы?
  24. Оптимизация: Переписываем приемочные тесты в функциональные (если можно) Включаем LongModeTests Пересматриваем тест сценарии Запуск тестов потоками
  25. Цели: Увеличивать количество тестов Поддерживать стабильность тестов Контролировать время прохождения тестов Постоянный рефакторинг тестов Предлагаю рассмотреть 2 примера реализации одной и той же сценарии в разных реализациях: Аксептанс и функционал. Если че потом рассказать в конце краткое резюме, что автоматизировать, как автоматизировать, что тесты это 3 д (дорого долго добро)!