Сергей Семашко "End to end test: cheap and effective"

40
Excellence in Software Engineering Альтернативный подход к тестированию web-приложений End to end тесты - дешево и сердито Confidential

description

 

Transcript of Сергей Семашко "End to end test: cheap and effective"

Page 1: Сергей Семашко "End to end test: cheap and effective"

Excellence inSoftware Engineering

Альтернативный подход к тестированию web-приложений

End to end тесты - дешево и сердито

Confidential

Page 2: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 2

UNIT-ТЕСТЫ

Page 3: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

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

Немного о Unit-тестах

Confidential

Page 4: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

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

• Цель - изолировать отдельные части программы и показать, что по отдельности эти части работоспособны

Немного о Unit-тестах

Confidential

Page 5: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

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

• Цель - изолировать отдельные части программы и показать, что по отдельности эти части работоспособны

• Служат своеобразной документацией к модулю

Немного о Unit-тестах

Confidential

Page 6: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Экстремальное программирование

(Test driven development)

Где используются Unit-тесты

Confidential

Page 7: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Экстремальное программирование

(Test driven development)

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

(Continuous integration)

Где используются Unit-тесты

Confidential

Page 8: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Экстремальное программирование

(Test driven development)

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

(Continuous integration)

• Полезны при рефакторинге

Где используются Unit-тесты

Confidential

Page 9: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 9

• Jenkins

• CruiseControl

Утилиты автоматической сборки проектов

Page 10: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Повышают надежность кода

Особенности Unit-тестов

Confidential

Page 11: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Повышают надежность кода

• Поощряют программистов к изменениям кода

Особенности Unit-тестов

Confidential

Page 12: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Повышают надежность кода

• Поощряют программистов к изменениям кода

• Упрощают интеграцию модулей

Особенности Unit-тестов

Confidential

Page 13: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Повышают надежность кода

• Поощряют программистов к изменениям кода

• Упрощают интеграцию модулей

• Тестируют внутреннюю логику модулей

Особенности Unit-тестов

Confidential

Page 14: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Временные затраты часто >= реализации самого модуля

Проблемы Unit-тестов

Confidential

Page 15: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Временные затраты часто >= реализации самого модуля

• Поддержка уже написанных тестов

Проблемы Unit-тестов

Confidential

Page 16: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Временные затраты часто >= реализации самого модуля

• Поддержка уже написанных тестов

• Необходима модульная архитектура

Проблемы Unit-тестов

Confidential

Page 17: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Временные затраты часто >= реализации самого модуля

• Поддержка уже написанных тестов

• Необходима модульная архитектура

• Для ощутимого результата необходимо достаточное покрытие тестами (Code Coverage)

Проблемы Unit-тестов

Confidential

Page 18: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

А что если у нас нет таких ресурсов, но нам нужно тестировать продукт?

Confidential

Page 19: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 19

END TO END ТЕСТЫ

Page 20: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 20

• Тестирование сценариев (User test-cases)

Что такое End to end тесты?

Page 21: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 21

• Тестирование сценариев (User test-cases)

• Относятся к методам тестирования серого ящика, т.е. когда мы имеем некое представление о внутреннем устройстве системы

Что такое End to end тесты?

Page 22: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 22

• Тестирование сценариев (User test-cases)

• Относятся к методам тестирования серого ящика, т.е. когда мы имеем некое представление о внутреннем устройстве системы

• Цель - определение системы зависимостей и подтверждения того, чтобы нужная информация передается между различными компонентами системы

Что такое End to end тесты?

Page 23: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 23

• Тестирование сценариев (User test-cases)

• Относятся к методам тестирования серого ящика, т.е. когда мы имеем некое представление о внутреннем устройстве системы

• Цель - определение системы зависимостей и подтверждения того, чтобы нужная информация передается между различными компонентами системы

• Если не работает хоть один под-компонент, то не работает вся система(страница)

Что такое End to end тесты?

Page 24: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 24

• Проверяют доступность страниц

End to end тесты на GameTrailers.com

Page 25: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 25

• Проверяют доступность страниц

• Проверяют выходные данные

End to end тесты на GameTrailers.com

Page 26: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 26

• Проверяют доступность страниц

• Проверяют выходные данные

• Могут отлавливать серверные ошибки

End to end тесты на GameTrailers.com

Page 27: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 27

• Проверяют доступность страниц

• Проверяют выходные данные

• Могут отлавливать серверные ошибки

• Система тестов проста в реализации

End to end тесты на GameTrailers.com

Page 28: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 28

• Проверяют доступность страниц

• Проверяют выходные данные

• Могут отлавливать серверные ошибки

• Система тестов проста в реализации

• Добавить новый тест в систему может любой разработчик в команде

End to end тесты на GameTrailers.com

Page 29: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 29

Page 30: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 30

End to end тесты на GameTrailers.com

Старт теста

Выкачиваем страницу по определенному адресу

Проверяем серверные ошибки

Проверяем наличие параметров для теста в

выходных данных

Page 31: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 31

End to end тесты на GameTrailers.com

Параметры end to end теста

Адрес проверяемой страницы или

фрагмента

Набор проверяемых данных

(для проверки их наличия на странице)

Page 32: Сергей Семашко "End to end test: cheap and effective"

Пример:

• Ожидаемая строка: collection-player

• URL страницы: http://www.example.com/page1

End to end тесты на GameTrailers.com

Page 33: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 33

С помощью End to end тестов удалось решить следующие

задачи

Page 34: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 34

С помощью End to end тестов удалось решить следующие задачи

– покрытие тестами всех страниц

Особенность End to end тестов на GT.com

Page 35: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 35

С помощью End to end тестов удалось решить следующие задачи

– покрытие тестами всех страниц

– мониторинг серверных ресурсов (Profiling)

Особенность End to end тестов на GT.com

Page 36: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering Confidential 36

Особенность End to end тестов на GT.com

Система тестирования

Unit-тесты для жизненно важных модулей

End to end тесты для проверки доступности системы в целом

Page 37: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

• Не тестирует JavaScript

• Нет пользовательских Test-cases

Минусы данного подхода

Confidential 37

Page 38: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

Selenium позволяет это реализовать

Минусы данного подхода

Confidential 38

Page 39: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

Any questions?

Confidential 39

Page 40: Сергей Семашко "End to end test: cheap and effective"

Excellence in Software Engineering

Спасибо за внимание

Confidential 40