Поиск багов в поиске Я.Субботник, Санкт-Петербург, 26-12 2011

Содержание

Слайд 2

Поиск Яндекса

150 000 000 запросов в день
5 400 000 сайтов в индексе
800

Поиск Яндекса 150 000 000 запросов в день 5 400 000 сайтов
000 пользователей в день
62 терабайта информации
сотни разработчиков

Слайд 3

Как рождается поиск

Как рождается поиск

Слайд 5

Результат работы программ

Как рождается поиск

Результат работы программ Как рождается поиск

Слайд 6

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

Как рождается поиск

Результат взаимодействия Как рождается поиск

Слайд 7

через конечную функциональность
по-компонентно

Как тестировать?

через конечную функциональность по-компонентно Как тестировать?

Слайд 8

Тестирование через конечную функциональность

Тестирование через конечную функциональность

Слайд 9

Требования

Инструмент тестирования

Требования Инструмент тестирования

Слайд 10

Selenium

Инструмент тестирования

работает с реальным браузером
клиентская часть реализована на нескольких языках
работает с несколькими

Selenium Инструмент тестирования работает с реальным браузером клиентская часть реализована на нескольких
браузерами
открытый код

Слайд 11

Главное правильно задать запрос

Главное правильно задать запрос

Слайд 12

проектируем свои
берем пользовательские

Как задаем запросы?

проектируем свои берем пользовательские Как задаем запросы?

Слайд 13

Пользовательские запросы

Как задаем запросы?

Пользовательские запросы Как задаем запросы?

Слайд 14

оцениваем масштаб проблемы
проверяем показ элемента в выдаче

Ожидаемый результат

Пользовательские запросы

оцениваем масштаб проблемы проверяем показ элемента в выдаче Ожидаемый результат Пользовательские запросы

Слайд 15

скорость выполнения тестов
экспортные данные
множество ссылок
тестирование верстки

Сложности

скорость выполнения тестов экспортные данные множество ссылок тестирование верстки Сложности

Слайд 16

скорость выполнения тестов
экспортные данные
множество ссылок
тестирование верстки

Сложности

скорость выполнения тестов экспортные данные множество ссылок тестирование верстки Сложности

Слайд 17

запускать меньше тестов
выполнять тесты быстрее

Как уменьшить время

Скорость выполнения тестов

запускать меньше тестов выполнять тесты быстрее Как уменьшить время Скорость выполнения тестов

Слайд 18

запускать меньше тестов
выполнять тесты быстрее

Как уменьшить время

Скорость выполнения тестов

запускать меньше тестов выполнять тесты быстрее Как уменьшить время Скорость выполнения тестов

Слайд 19

Самая длинная цепь

Запускать меньше тестов

Выдача поиска

Самая длинная цепь Запускать меньше тестов Выдача поиска

Слайд 20

Группировка тестов

Запускать меньше тестов

Группировка тестов Запускать меньше тестов

Слайд 21

запускать меньше тестов
выполнять тесты быстрее

Как уменьшить время

Скорость выполнения тестов

запускать меньше тестов выполнять тесты быстрее Как уменьшить время Скорость выполнения тестов

Слайд 22

Рост количества данных

Выполнять тесты быстрее

Рост количества данных Выполнять тесты быстрее

Слайд 23

Каким инструментом

Выполнять тесты быстрее

Selenium?

Каким инструментом Выполнять тесты быстрее Selenium?

Слайд 24

эмулирует работу браузера
поддерживает jScript
быстрее в разы

Инструмент HtmlUnit

Выполнять тесты быстрее

эмулирует работу браузера поддерживает jScript быстрее в разы Инструмент HtmlUnit Выполнять тесты быстрее

Слайд 25

Разные интерфейсы

Выполнять тесты быстрее

Разные интерфейсы Выполнять тесты быстрее

Слайд 26

HtmlUnit to Selenium

Выполнять тесты быстрее

HtmlUnit to Selenium Выполнять тесты быстрее

Слайд 27

HtmlUnit to? Selenium

Выполнять тесты быстрее

HtmlUnit to? Selenium Выполнять тесты быстрее

Слайд 28

уникальные тесты на Selenium
тесты на большом количестве запросов на HtmlUnit

Перевести все тесты

уникальные тесты на Selenium тесты на большом количестве запросов на HtmlUnit Перевести
на HtmlUnit

Выполнять тесты быстрее

Слайд 29

скорость выполнения тестов
экспортные данные
множество ссылок
тестирование верстки

Сложности

скорость выполнения тестов экспортные данные множество ссылок тестирование верстки Сложности

Слайд 30

приходят со сторонних сервисов
имеют разные форматы

Экспортные данные

приходят со сторонних сервисов имеют разные форматы Экспортные данные

Слайд 31

Форматы

Экспортные данные

Форматы Экспортные данные

Слайд 32

Преобразования

Экспортные данные

Преобразования Экспортные данные

Слайд 33

скорость выполнения тестов
экспортные данные
множество ссылок
тестирование верстки

Сложности

скорость выполнения тестов экспортные данные множество ссылок тестирование верстки Сложности

Слайд 34

Прокликать все

Множество ссылок

ссылки генерируются
данные приходят со сторонних сервисов
сторонние сервисы живут своей жизню

Прокликать все Множество ссылок ссылки генерируются данные приходят со сторонних сервисов сторонние сервисы живут своей жизню

Слайд 35

Переход на погоду

Множество ссылок

pogoda.yandex.ru/saint-petersburg

pogoda.yandex.ru/26063

Переход на погоду Множество ссылок pogoda.yandex.ru/saint-petersburg pogoda.yandex.ru/26063

Слайд 36

Инструмент noname

Множество ссылок

умеет обходить страницы “вширь”
умеет “пинговать” ресурс (link, image)
умеет проверять корректность

Инструмент noname Множество ссылок умеет обходить страницы “вширь” умеет “пинговать” ресурс (link,
страницы (css, js, favicon)
proxy, cookie

Слайд 37

Noname улучшизмы

Множество ссылок

проверка работы JavaScript
“склеивание” ссылок

Noname улучшизмы Множество ссылок проверка работы JavaScript “склеивание” ссылок

Слайд 38

скорость выполнения тестов
экспортные данные
множество ссылок
тестирование верстки

Сложности

скорость выполнения тестов экспортные данные множество ссылок тестирование верстки Сложности

Слайд 39

Проблема поколений

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

Проблема поколений Тестирование верстки

Слайд 40

Руками и глазами

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

Руками и глазами Тестирование верстки

Слайд 41

Нагрузка растет

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

сотни сценариев
разные браузеры

Нагрузка растет Тестирование верстки сотни сценариев разные браузеры

Слайд 42

А/Б тестирование

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

А/Б тестирование Тестирование верстки

Слайд 43

Нерешенная проблема

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

Как автоматизировать?

Нерешенная проблема Тестирование верстки Как автоматизировать?

Слайд 44

Компонентное тестирование

Компонентное тестирование

Слайд 45

Раннее тестирование производительности
Стресс-тесты и тестирование стабильности компонент
Функциональные тесты под нагрузкой

Надежность и производительность

Компонентное

Раннее тестирование производительности Стресс-тесты и тестирование стабильности компонент Функциональные тесты под нагрузкой
тестирование

Слайд 46

Подготовка тестовой среды
Выбор входных данных
Проведение теста
Анализ выходных данных

Этапы тестирования

Компонентное тестирование

Подготовка тестовой среды Выбор входных данных Проведение теста Анализ выходных данных Этапы тестирования Компонентное тестирование

Слайд 47

Отдельно выделенный сервер, с аналогичной продакшен конфигурацией
Окружение создается каждый раз перед тестированием
Эмуляция

Отдельно выделенный сервер, с аналогичной продакшен конфигурацией Окружение создается каждый раз перед
принимающих выходной поток компонент + возможность использовать тестовые кластеры

Тестовая среда

Компонентное тестирование

Слайд 48

Живой поток с продакшен
Фиксированный поток
Сгенерированный поток

План обстрела

Компонентное тестирование

Живой поток с продакшен Фиксированный поток Сгенерированный поток План обстрела Компонентное тестирование

Слайд 49

Обеспечивает доставку запроса пользователя к поисковому кластеру и ответа к пользователю
Распределяет запросы

Обеспечивает доставку запроса пользователя к поисковому кластеру и ответа к пользователю Распределяет
между поисковыми кластерами кратно их производительности

Функции

Пример Балансер

Слайд 50

Пример Балансер

HTTP-Балансер

IP-Балансер

HTTP-Балансер

HTTP-Балансер

HTTP-Балансер

Поисковый кластер

Верхний поиск

Пример Балансер HTTP-Балансер IP-Балансер HTTP-Балансер HTTP-Балансер HTTP-Балансер Поисковый кластер Верхний поиск

Слайд 51

Скорость отдачи страницы с результатом выдачи снизилась
Балансер перестал отдавать результат выдачи (белая

Скорость отдачи страницы с результатом выдачи снизилась Балансер перестал отдавать результат выдачи
страница)
Данные портятся при прохождении через балансер

Ошибки

Пример Балансер

Слайд 52

Тесты под нагрузкой

Пример Балансер

Пусть будут 10 заглушек эмулирующих бэкэнды с различной производительностью

Тесты под нагрузкой Пример Балансер Пусть будут 10 заглушек эмулирующих бэкэнды с различной производительностью

Слайд 53

Среднее количество запросов по группе одинаковых бэкэндов

Пример Балансер

Среднее количество запросов по группе одинаковых бэкэндов Пример Балансер

Слайд 54

Распределение времени ответов с бэкэндов

Пример Балансер

Распределение времени ответов с бэкэндов Пример Балансер

Слайд 55

Количество обработанных запросов на бэкэндах

Пример Балансер

Количество обработанных запросов на бэкэндах Пример Балансер

Слайд 56

Распределение времени ответов за балансером

Пример Балансер

Распределение времени ответов за балансером Пример Балансер

Слайд 57

Скорость отдачи страницы с результатом выдачи снизилась
Балансер перестал отдавать результат выдачи (белая

Скорость отдачи страницы с результатом выдачи снизилась Балансер перестал отдавать результат выдачи
страница)
Данные портятся при прохождении через балансер

Ошибки

Пример Балансер

Слайд 58

Сверяем трафик до балансера и после
Пропускаем через балансер преднамеренно испорченные запросы (fuzzing)
Искусственно

Сверяем трафик до балансера и после Пропускаем через балансер преднамеренно испорченные запросы
создаем таймауты и потерю соединения

Функциональные тесты под нагрузкой

Пример Балансер

Слайд 59

Учитывает все особенности сборки компонент
Интегрирован инструментарий для обстрела и профилирования поисковых компонент
Есть

Учитывает все особенности сборки компонент Интегрирован инструментарий для обстрела и профилирования поисковых
надежная доставка компонент на многочисленные машины поискового кластера
Автоматическая сборка и тестирование по расписанию или по коммиту

SandBox

Компонентное тестирование

Слайд 60

Тестирование всех компонент на производительность
Расширение покрытия функциональными тестами

Горизонты

Компонентное тестирование

Тестирование всех компонент на производительность Расширение покрытия функциональными тестами Горизонты Компонентное тестирование

Слайд 61

Покоммитное тестирование компонент
Тестирование версии под нагрузкой
Версия попадает в приемку качества
После приемки качества

Покоммитное тестирование компонент Тестирование версии под нагрузкой Версия попадает в приемку качества
попадает в тестирование через конечную функциональность
В продакшен следим через мониторинги

Путь тестирования

Имя файла: Поиск-багов-в-поиске-Я.Субботник,-Санкт-Петербург,-26-12-2011.pptx
Количество просмотров: 510
Количество скачиваний: 0