Сергей Семашко "End to end test: cheap and effective"
-
Upload
miniq-epam-systems-inc -
Category
Documents
-
view
1.183 -
download
2
description
Transcript of Сергей Семашко "End to end test: cheap and effective"
Excellence inSoftware Engineering
Альтернативный подход к тестированию web-приложений
End to end тесты - дешево и сердито
Confidential
Excellence in Software Engineering Confidential 2
UNIT-ТЕСТЫ
Excellence in Software Engineering
• Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода
Немного о Unit-тестах
Confidential
Excellence in Software Engineering
• Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода
• Цель - изолировать отдельные части программы и показать, что по отдельности эти части работоспособны
Немного о Unit-тестах
Confidential
Excellence in Software Engineering
• Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода
• Цель - изолировать отдельные части программы и показать, что по отдельности эти части работоспособны
• Служат своеобразной документацией к модулю
Немного о Unit-тестах
Confidential
Excellence in Software Engineering
• Экстремальное программирование
(Test driven development)
Где используются Unit-тесты
Confidential
Excellence in Software Engineering
• Экстремальное программирование
(Test driven development)
• Автоматизированное тестирование
(Continuous integration)
Где используются Unit-тесты
Confidential
Excellence in Software Engineering
• Экстремальное программирование
(Test driven development)
• Автоматизированное тестирование
(Continuous integration)
• Полезны при рефакторинге
Где используются Unit-тесты
Confidential
Excellence in Software Engineering Confidential 9
• Jenkins
• CruiseControl
Утилиты автоматической сборки проектов
Excellence in Software Engineering
• Повышают надежность кода
Особенности Unit-тестов
Confidential
Excellence in Software Engineering
• Повышают надежность кода
• Поощряют программистов к изменениям кода
Особенности Unit-тестов
Confidential
Excellence in Software Engineering
• Повышают надежность кода
• Поощряют программистов к изменениям кода
• Упрощают интеграцию модулей
Особенности Unit-тестов
Confidential
Excellence in Software Engineering
• Повышают надежность кода
• Поощряют программистов к изменениям кода
• Упрощают интеграцию модулей
• Тестируют внутреннюю логику модулей
Особенности Unit-тестов
Confidential
Excellence in Software Engineering
• Временные затраты часто >= реализации самого модуля
Проблемы Unit-тестов
Confidential
Excellence in Software Engineering
• Временные затраты часто >= реализации самого модуля
• Поддержка уже написанных тестов
Проблемы Unit-тестов
Confidential
Excellence in Software Engineering
• Временные затраты часто >= реализации самого модуля
• Поддержка уже написанных тестов
• Необходима модульная архитектура
Проблемы Unit-тестов
Confidential
Excellence in Software Engineering
• Временные затраты часто >= реализации самого модуля
• Поддержка уже написанных тестов
• Необходима модульная архитектура
• Для ощутимого результата необходимо достаточное покрытие тестами (Code Coverage)
Проблемы Unit-тестов
Confidential
Excellence in Software Engineering
А что если у нас нет таких ресурсов, но нам нужно тестировать продукт?
Confidential
Excellence in Software Engineering Confidential 19
END TO END ТЕСТЫ
Excellence in Software Engineering Confidential 20
• Тестирование сценариев (User test-cases)
Что такое End to end тесты?
Excellence in Software Engineering Confidential 21
• Тестирование сценариев (User test-cases)
• Относятся к методам тестирования серого ящика, т.е. когда мы имеем некое представление о внутреннем устройстве системы
Что такое End to end тесты?
Excellence in Software Engineering Confidential 22
• Тестирование сценариев (User test-cases)
• Относятся к методам тестирования серого ящика, т.е. когда мы имеем некое представление о внутреннем устройстве системы
• Цель - определение системы зависимостей и подтверждения того, чтобы нужная информация передается между различными компонентами системы
Что такое End to end тесты?
Excellence in Software Engineering Confidential 23
• Тестирование сценариев (User test-cases)
• Относятся к методам тестирования серого ящика, т.е. когда мы имеем некое представление о внутреннем устройстве системы
• Цель - определение системы зависимостей и подтверждения того, чтобы нужная информация передается между различными компонентами системы
• Если не работает хоть один под-компонент, то не работает вся система(страница)
Что такое End to end тесты?
Excellence in Software Engineering Confidential 24
• Проверяют доступность страниц
End to end тесты на GameTrailers.com
Excellence in Software Engineering Confidential 25
• Проверяют доступность страниц
• Проверяют выходные данные
End to end тесты на GameTrailers.com
Excellence in Software Engineering Confidential 26
• Проверяют доступность страниц
• Проверяют выходные данные
• Могут отлавливать серверные ошибки
End to end тесты на GameTrailers.com
Excellence in Software Engineering Confidential 27
• Проверяют доступность страниц
• Проверяют выходные данные
• Могут отлавливать серверные ошибки
• Система тестов проста в реализации
End to end тесты на GameTrailers.com
Excellence in Software Engineering Confidential 28
• Проверяют доступность страниц
• Проверяют выходные данные
• Могут отлавливать серверные ошибки
• Система тестов проста в реализации
• Добавить новый тест в систему может любой разработчик в команде
End to end тесты на GameTrailers.com
Excellence in Software Engineering Confidential 29
Excellence in Software Engineering Confidential 30
End to end тесты на GameTrailers.com
Старт теста
Выкачиваем страницу по определенному адресу
Проверяем серверные ошибки
Проверяем наличие параметров для теста в
выходных данных
Excellence in Software Engineering Confidential 31
End to end тесты на GameTrailers.com
Параметры end to end теста
Адрес проверяемой страницы или
фрагмента
Набор проверяемых данных
(для проверки их наличия на странице)
Пример:
• Ожидаемая строка: collection-player
• URL страницы: http://www.example.com/page1
End to end тесты на GameTrailers.com
Excellence in Software Engineering Confidential 33
С помощью End to end тестов удалось решить следующие
задачи
Excellence in Software Engineering Confidential 34
С помощью End to end тестов удалось решить следующие задачи
– покрытие тестами всех страниц
Особенность End to end тестов на GT.com
Excellence in Software Engineering Confidential 35
С помощью End to end тестов удалось решить следующие задачи
– покрытие тестами всех страниц
– мониторинг серверных ресурсов (Profiling)
Особенность End to end тестов на GT.com
Excellence in Software Engineering Confidential 36
Особенность End to end тестов на GT.com
Система тестирования
Unit-тесты для жизненно важных модулей
End to end тесты для проверки доступности системы в целом
Excellence in Software Engineering
• Не тестирует JavaScript
• Нет пользовательских Test-cases
Минусы данного подхода
Confidential 37
Excellence in Software Engineering
Selenium позволяет это реализовать
Минусы данного подхода
Confidential 38
Excellence in Software Engineering
Any questions?
Confidential 39
Excellence in Software Engineering
Спасибо за внимание
Confidential 40