Артём Ерошенко, Станислав Селиверстов "Поиск багов...
DESCRIPTION
Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске" Первый Я.Субботник в Санкт-ПетербургеTRANSCRIPT
![Page 1: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/1.jpg)
Я.Субботник, Санкт-Петербург, 26.02.2011
инженер по тестированию Ерошенко Артем
Поиск багов в поиске
инженер по тестированию Селиверстов Станислав
![Page 2: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/2.jpg)
Поиск Яндекса
• 150 000 000 запросов в день
• 5 400 000 сайтов в индексе
• 800 000 пользователей в день
• 62 терабайта информации
• сотни разработчиков
1
![Page 3: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/3.jpg)
Как рождается поиск
2
![Page 4: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/4.jpg)
3
Может быть он свойресторан открыть хочет!
не желаете?
Нусс, посмотрим на карте:
Вы наверное имели ввиду
Любезные, а Вы случаем не знаетепоблизости
Друзья, это же
Знаете, Я хожу в
Очень рекомендую!
А если на вечер, я бы советовал
у меня даже адресочек есть
Тут ресторанов !!!
Уточните где...
![Page 5: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/5.jpg)
Результат работы программ Как рождается поиск
4
Колдунщик
Поисковые результаты
Здесь можетбыть вашареклама
Параллельныйпоиск по
картинкам
Исправление опечатки
![Page 6: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/6.jpg)
Результат взаимодействия Как рождается поиск
5
![Page 7: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/7.jpg)
• через конечную функциональность
• по-компонентно
Как тестировать?
6
![Page 8: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/8.jpg)
Тестирование через конечную функциональность
7
![Page 9: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/9.jpg)
Требования Инструмент тестирования
8
Test
something
verify
typeclickget
![Page 10: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/10.jpg)
Selenium Инструмент тестирования
• работает с реальным браузером
• клиентская часть реализована на нескольких языках
• работает с несколькими браузерами
• открытый код 9
![Page 11: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/11.jpg)
Главное правильно задать запрос
10
![Page 12: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/12.jpg)
• проектируем свои
• берем пользовательские
Как задаем запросы?
11
![Page 13: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/13.jpg)
Пользовательские запросы Как задаем запросы?
12
*.logTestCase
Generator
TestData
TestData
TestData
![Page 14: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/14.jpg)
• оцениваем масштаб проблемы
• проверяем показ элемента в выдаче
Ожидаемый результат Пользовательские запросы
13
![Page 15: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/15.jpg)
• скорость выполнения тестов
• экспортные данные
• множество ссылок
• тестирование верстки
Сложности
14
![Page 16: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/16.jpg)
• скорость выполнения тестов
• экспортные данные
• множество ссылок
• тестирование верстки
Сложности
15
![Page 17: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/17.jpg)
• запускать меньше тестов
• выполнять тесты быстрее
Как уменьшить время Скорость выполнения тестов
16
![Page 18: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/18.jpg)
• запускать меньше тестов
• выполнять тесты быстрее
Как уменьшить время Скорость выполнения тестов
17
![Page 19: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/19.jpg)
Самая длинная цепь Запускать меньше тестов
18
Компонент А Компонент Б Компонент В
Выдача поиска
![Page 20: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/20.jpg)
Группировка тестов Запускать меньше тестов
19
Chain 1 Chain 2 Chain N
Test 1
Test 2
Test 3
![Page 21: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/21.jpg)
• запускать меньше тестов
• выполнять тесты быстрее
Как уменьшить время Скорость выполнения тестов
20
![Page 22: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/22.jpg)
Рост количества данных Выполнять тесты быстрее
21
TestData
TestData
TestData
ru
Test
TestData
TestData
TestData
uа
![Page 23: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/23.jpg)
Каким инструментом Выполнять тесты быстрее
22
Selenium?
![Page 24: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/24.jpg)
• эмулирует работу браузера
• поддерживает jScript
• быстрее в разы
Инструмент HtmlUnit Выполнять тесты быстрее
23
![Page 25: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/25.jpg)
Разные интерфейсы Выполнять тесты быстрее
24
![Page 26: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/26.jpg)
HtmlUnit to Selenium Выполнять тесты быстрее
25
Test
Browser
Selenium
HtmlUnit
![Page 27: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/27.jpg)
HtmlUnit to? Selenium Выполнять тесты быстрее
26
Test
Browser
Selenium
HtmlUnit
![Page 28: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/28.jpg)
• уникальные тесты на Selenium
• тесты на большом количестве запросов на HtmlUnit
Перевести все тесты на HtmlUnit Выполнять тесты быстрее
27
![Page 29: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/29.jpg)
• скорость выполнения тестов
• экспортные данные
• множество ссылок
• тестирование верстки
Сложности
28
![Page 30: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/30.jpg)
• приходят со сторонних сервисов
• имеют разные форматы
Экспортные данные
29
![Page 31: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/31.jpg)
Форматы Экспортные данные
30
![Page 32: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/32.jpg)
Преобразования Экспортные данные
31
HtmlUnit <xml> jsonpjsonp
to
xml
jsonjson
to
xml
anything
to
xml
anything
![Page 33: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/33.jpg)
• скорость выполнения тестов
• экспортные данные
• множество ссылок
• тестирование верстки
Сложности
32
![Page 34: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/34.jpg)
Прокликать все Множество ссылок
• ссылки генерируются
• данные приходят со сторонних сервисов
• сторонние сервисы живут своей жизню
33
![Page 35: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/35.jpg)
Переход на погоду Множество ссылок
pogoda.yandex.ru/saint-petersburg pogoda.yandex.ru/26063
![Page 36: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/36.jpg)
Инструмент noname Множество ссылок
• умеет обходить страницы “вширь”
• умеет “пинговать” ресурс (link, image)
• умеет проверять корректность страницы (css, js, favicon)
• proxy, cookie
35
![Page 37: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/37.jpg)
Noname улучшизмы Множество ссылок
• проверка работы JavaScript
• “склеивание” ссылок
36
![Page 38: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/38.jpg)
• скорость выполнения тестов
• экспортные данные
• множество ссылок
• тестирование верстки
Сложности
37
![Page 39: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/39.jpg)
Проблема поколений Тестирование верстки
38
![Page 40: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/40.jpg)
Руками и глазами Тестирование верстки
39
![Page 41: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/41.jpg)
Нагрузка растет Тестирование верстки
• сотни сценариев
• разные браузеры
40
![Page 42: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/42.jpg)
А/Б тестирование Тестирование верстки
41
![Page 43: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/43.jpg)
Нерешенная проблема Тестирование верстки
42
Как автоматизировать?
![Page 44: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/44.jpg)
Компонентное тестирование
43
![Page 45: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/45.jpg)
• Раннее тестирование производительности
• Стресс-тесты и тестирование стабильности компонент
• Функциональные тесты под нагрузкой
Надежность и производительность Компонентное тестирование
44
![Page 46: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/46.jpg)
• Подготовка тестовой среды
• Выбор входных данных
• Проведение теста
• Анализ выходных данных
Этапы тестирования Компонентное тестирование
45
![Page 47: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/47.jpg)
• Отдельно выделенный сервер, с аналогичной продакшен конфигурацией
• Окружение создается каждый раз перед тестированием
• Эмуляция принимающих выходной поток компонент + возможность использовать тестовые кластеры
Тестовая среда Компонентное тестирование
46
![Page 48: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/48.jpg)
• Живой поток с продакшен
• Фиксированный поток
• Сгенерированный поток
План обстрела Компонентное тестирование
47
![Page 49: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/49.jpg)
• Обеспечивает доставку запроса пользователя к поисковому кластеру и ответа к пользователю
• Распределяет запросы между поисковыми кластерами кратно их производительности
Функции Пример Балансер
48
![Page 50: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/50.jpg)
Пример Балансер
49
HTTP-Балансер
IP-Балансер
HTTP-Балансер HTTP-Балансер HTTP-Балансер
Поисковый кластер
Верхний поиск
![Page 51: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/51.jpg)
• Скорость отдачи страницы с результатом выдачи снизилась
• Балансер перестал отдавать результат выдачи (белая страница)
• Данные портятся при прохождении через балансер
Ошибки Пример Балансер
50
![Page 52: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/52.jpg)
Тесты под нагрузкой Пример Балансер
Пусть будут 10 заглушек эмулирующих бэкэнды с различной производительностью
51
![Page 53: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/53.jpg)
Среднее количество запросов по группе одинаковых бэкэндов
Пример Балансер
52
![Page 54: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/54.jpg)
Распределение времени ответов с бэкэндов
Пример Балансер
53
![Page 55: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/55.jpg)
Количество обработанных запросов на бэкэндах
Пример Балансер
54
![Page 56: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/56.jpg)
Распределение времени ответов за балансером
Пример Балансер
55
![Page 57: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/57.jpg)
• Скорость отдачи страницы с результатом выдачи снизилась
• Балансер перестал отдавать результат выдачи (белая страница)
• Данные портятся при прохождении через балансер
Ошибки Пример Балансер
56
![Page 58: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/58.jpg)
• Сверяем трафик до балансера и после
• Пропускаем через балансер преднамеренно испорченные запросы (fuzzing)
• Искусственно создаем таймауты и потерю соединения
Функциональные тесты под нагрузкой
Пример Балансер
57
![Page 59: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/59.jpg)
• Учитывает все особенности сборки компонент
• Интегрирован инструментарий для обстрела и профилирования поисковых компонент
• Есть надежная доставка компонент на многочисленные машины поискового кластера
• Автоматическая сборка и тестирование по расписанию или по коммиту
SandBox Компонентное тестирование
58
![Page 60: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/60.jpg)
• Тестирование всех компонент на производительность
• Расширение покрытия функциональными тестами
Горизонты Компонентное тестирование
59
![Page 61: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/61.jpg)
• Покоммитное тестирование компонент
• Тестирование версии под нагрузкой
• Версия попадает в приемку качества
• После приемки качества попадает в тестирование через конечную функциональность
• В продакшен следим через мониторинги
Путь тестирования
60
![Page 62: Артём Ерошенко, Станислав Селиверстов "Поиск багов в поиске"](https://reader036.vdocuments.site/reader036/viewer/2022081401/557f23f2d8b42ad03e8b4ffd/html5/thumbnails/62.jpg)
Инженер по тестированию
+7 (812) 633-36-00 (8575) thistle@yandex-
team.ru
Селиверстов Станислав
Инженер по тестированию
+7 (812) 633-36-00
(8625)[email protected]
Ерошенко Артем
Вопросы?