Автоматизация тестирования: отбрасываем лишнее и...

62
QA Automation: отбрасываем лишнее и тестируем суть Игорь Хрол http://www.wargaming.net http://www.khroliz.com

Upload: sqalab

Post on 16-Nov-2014

928 views

Category:

Education


3 download

DESCRIPTION

Доклад Игоря Хрола на SQA Days-15. 18-19 апреля, 2014, Москва. www.sqadays.com

TRANSCRIPT

Page 1: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

QA Automation: отбрасываем лишнее и тестируем суть

Игорь Хролhttp://www.wargaming.net

http://www.khroliz.com

Page 2: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

О себе• Игорь Хрол• QA Automation Team Lead в

Wargaming• Восемь лет в отрасли• Десятки проектов• Инженер, тренер, консультант,

менеджер, докладчик• Мой блог: http://ru.khroliz.com

Page 3: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Всё плохо

Page 4: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Замкнутый круг

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

Неопытные люди

Сложную работу некому

делать

Работа несложная

Платят меньше, чем в

разработке

Page 5: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

В результате...

• Если в тестирование попадают талантивые люди, то случайно

http://artkoshelev.github.io/posts/random-tester/

• Но после этого всё равно уходят в разработку

• Тестирование считается простой и неинтересной IT-профессией

• Качество тестирования оставляет желать лучшего

Page 6: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 7: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Вспомним, кто мы…

Page 8: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

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

Неопытные люди

Сложную работу некому

делать

Платят меньше, чем в

разработке

Работа несложная

Page 9: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Как корабль назовёшь...

Page 10: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Как корабль назовёшь...

• «Если бы я спросил людей, чего они хотят, они бы попросили более быструю лошадь.» Генри Форд

• Доклад от @adzynia: http://goo.gl/W2tCj6

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

• Автоматическое тестирование

• Эффективное автоматическое тестирование

Page 11: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Модель задачи по тестированию

5 8 2 1 10

5×8×2×1×10=800

Page 12: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Модель задачи по тестированию

𝑉 1 𝑉 2 𝑉 3 𝑉 4 𝑉 5

𝑉 1×𝑉 2×𝑉 3×𝑉 4×𝑉 5

Page 13: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Сложность тестирования

𝑉 1×𝑉 2×…×𝑉𝑛

𝑉 𝑛

Page 15: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Чёрный ящик = Экспонента

Page 16: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Автоматизация тестирования - борьба с экспонентой

• Параллельные запуски не помогают– – количество потоков– Сложность:

Page 17: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 18: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Разделяй и властвуй

Page 19: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Модель задачи по тестированию

5 8 2 1 10

5×8×2×1×10=8005+8+2+1+10=2626+4+1=31

Page 20: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Модель задачи по тестированию

5 8 2 1 10

800 vs 31

Page 21: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Модель задачи по тестированию

𝑉 1 𝑉 2 𝑉 3 𝑉 4 𝑉 5

𝑉 1+𝑉 2+𝑉 3+𝑉 4+𝑉 5+5

Page 22: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Сложность тестирования

𝑉 1 𝑉 2 𝑉 3 … 𝑉 𝑛

∑𝑖=1

𝑛

𝑉 𝑖+𝑛≈𝑉 ×𝑛+𝑛

Сложность:

Page 23: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Сложность тестирования

𝑉 1 𝑉 2 𝑉 3 … 𝑉 𝑛

vs

Page 24: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 25: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Срезаем углы

1 1 1 1 10

1×1×1×1×10=101+1+1+1+10=1414+4+1=19

Page 26: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Срезаем углы

1 1 1 1 10

10 vs 19

Page 27: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Срезаем углы

Тестов не только меньше, но они и проще

1 1 1 1 10

10 vs 19

Page 28: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Что-то там говорили о «пирамиде»

UI

API

Unit Tests

Главное – декомпозиция задачи

Page 29: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 30: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Проект из жизни

Page 31: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Проект из жизни

Page 32: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Начало...

Page 33: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 34: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Ограничение UI-тестов• Долгие• Нестабильные• Задача: оптимизировать предусловия,

которые делаются часами

Page 35: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 36: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 37: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 38: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Отказ от браузера

• Плюсы– Тесты работают быстрее– Нет проблем с синхронизацией– Надёжны– Легко запускаются параллельно

• Минусы– Не видно, как работают– Нет доверия– Выше порог вхождения

Page 39: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Не видно как работаютНет доверия

Page 40: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Структура решения

• Технологии– Java– TestNG– Maven– HttpClient

Page 41: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 42: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Возврат к браузеру

Page 43: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Браузер

• Запускается только тогда, когда реально нужен (около 3% сценариев)

• Реиспользуется headless-сессия с безбраузерного взаимодействия

Page 45: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

API всё равно лучше!

Page 46: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

База данных

Page 47: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

База данных

• Самый быстрый способ работы с системой• Лучше туда напрямую не писать– Cпециально выверенные stored procedures

• Хорошо подходит для проверок

Page 48: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Web-сервисы

Page 49: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Web-сервисы

• Взаимодействие с другими системами– Эмуляция внешних запросов– Проверки исходящей инфорации

Page 50: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 51: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Application server

Page 52: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Web-server vs App-server• Web:– Вёрстка– Отсылка ответов

• App:– Логика приложения

Page 53: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Siebel Java Data Bean

http://docs.oracle.com/cd/E14004_01/books/OIRef/Customizing_Siebel_Object_Interfaces12.html

Полный програмный интерфейс для создания логики приложения из Java

Page 54: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Правильные оракулы

Задача: протестировать правила

Проблема: ожидаемая вычисленная дата• зависит от календаря• зависит от текущего времени

Page 55: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Правильные оракулы

• Создаём заявку под правило• Отправляем на Siebel дельту и дату• Берём из Siebel’a вычисленную нам дату• Сравниваем с датой на созданной заявке

Page 56: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Тесты производительности

Page 57: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Тесты производительности

• Традиционный подход:– Нужно переписывать скрипты для каждого

билда– Отдельные скрипты

• Jmeter-based:– Реиспользование кода функциональных тестов– Тесты поддерживаются для новых версий

вместе с функциональными тестами

Page 58: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 59: Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Page 60: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Итоговые результаты

• Быстрые тесты• Предсказуемые результаты• Легко масштабируются• Возможность взаимодействия с Siebel на

любом уровне

Page 61: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Взгляд на тестирование со стороны реализации системы позволяет

• Уменьшить сложность самой задачи тестирования

• Уменьшить сложность и длину сценариев• Увеличить скорость и стабильность работы• Найти новые области применения

автотестов

Page 62: Автоматизация тестирования: отбрасываем лишнее и проверяем суть

Спасибо!Вопросы?

Игорь Хрол[email protected] / [email protected]://ru.khroliz.com