Тестирование производительности клиентсайда: приквел

67
Тестирование клиентской производительности Алексей Баранцев, Software-Testing.Ru

description

Презентация доклада Алексея Баранцева на конференции SQADays-14, Львов 8-9 ноября 2013

Transcript of Тестирование производительности клиентсайда: приквел

Page 1: Тестирование производительности клиентсайда: приквел

Тестирование клиентской производительности

Алексей Баранцев, Software-Testing.Ru

Page 2: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Кто здесь?

Алексей Баранцев

Software-Testing.Ru

[email protected]

skype: barancev

g+ AlexeiBarantsev

Page 3: Тестирование производительности клиентсайда: приквел
Page 4: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 5: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что такое «браузер»?

Page 6: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что такое «браузер»?

Это просто HTTP-клиент

Page 7: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Это. Просто. HTTP. Клиент.

Page 8: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Согласны?

Page 9: Тестирование производительности клиентсайда: приквел
Page 10: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Как устроен браузер?

Page 11: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Как устроен браузер?

http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/

Page 12: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что тут тестировать?

Page 13: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Загрузка «страницы»

Page 14: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Инструменты

• Браузеры (Dev Tools - F12)

• YSlow

• PageSpeed

• http://gtmetrix.com/

• http://www.webpagetest.org/

Page 15: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 16: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 17: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 18: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 19: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 20: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 21: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Загрузка «страницы»

Page 22: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Объём данных

jQuery 2.0.3

• 242,142 - original

• 83,612 - minified

• 71,726 - gzipped

• 29,246 - minified & gzipped

Page 23: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 24: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 25: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 26: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Количество запросов

Page 27: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что делать?

Page 28: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Кэш браузера

Page 29: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Кэш браузера

Page 30: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 31: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 32: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 33: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Кэш браузера

Это как вообще?

Page 34: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 35: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 36: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Количество запросов

Page 37: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что делать?

Page 38: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что делать?

• Параллельные запросы!но не слишком много на один домен!

• На разные домены!

Page 39: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Количество запросов

Page 40: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что делать?

• Параллельные запросы!но не слишком много на один домен

• На разные домены!увеличивается DNS resolution

не используется Keep-alive

• Надо найти баланс…

Page 41: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 42: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 43: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 44: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 45: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 46: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 47: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Резюме 1: сеть

• Объём передаваемых данныхсклеивание, сжатие и минификация

кешируемость и ETag

• Количество запросовна один домен или на разные

кешируемость и спрайты

Page 48: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что тут тестировать?

Page 49: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

DOM tree<html><head><title>Hello, World!</title>

</head><body><div><p>Превед, медвед!</p>

</div><div><img src="…"></div>

</body></html>

html

bodyhead

title div

p#text

#text

div

img

Page 50: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

• небоскрёб

Page 51: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Большой DOM: что делать?

• Пересмотреть дизайноно вам таки надо?

• «Покрошить» страницы

• Подгружать постепеннопо клику

по скроллу

Page 52: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 53: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 54: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 55: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 56: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

CSS Selectors

div#header

.content p

.content *

.menu ul li

#menu > li

#header

.content

.content

.menu-item

.menu-item

Page 57: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

«Место для фото»

Page 58: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Резюме 2: рендеринг

• DOMплохо, если большой и глубокий

• Стилиселекторы должны быть точными

• Картинкиуказывайте размеры заранее

Page 59: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Что тут тестировать?

Page 60: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

«Скрипт не отвечает»

Page 61: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Инструменты

• Браузеры (Dev Tools - F12)

• ySlow

• PageSpeed

• dynaTraceCompuware AJAX Edition

Page 62: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Демо!

Page 63: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 64: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Reflow• Обновления DOM• Изменение стилей

Page 65: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Page 66: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Общие правила

• Минификация

• Стили в head

• JavaScript в конце

• Эффективные локаторы

• Долой «велосипеды»!

Page 67: Тестирование производительности клиентсайда: приквел

Алексей Баранцев Software-Testing.Ru Selenium2.Ru Confetqa.Ru [email protected] skype:barancev g+ AlexeiBarantsev

Вопросы?

Алексей Баранцев

Software-Testing.Ru

[email protected]

skype: barancev

g+ AlexeiBarantsev