simonova sql server-enginetesting
TRANSCRIPT
![Page 1: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/1.jpg)
Катерина СимоноваРазработчик отдела тестирования
Microsoft SQL ServerRedmond, WA, USA
![Page 2: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/2.jpg)
СодержаниеНемного о продукте Microsoft SQL
ServerСтруктура организации Microsoft SQL
ServerПроцесс тестированияИнновации в процессе тестирования
Разработка тестовИсполнение тестов
![Page 3: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/3.jpg)
MS SQL ServerВысокопроизводительная СУБДПреимущества MS SQL Server
Легкость в настройке и сопровожденииОтказоустойчивость и надежность
Основные конкурентыOracleIBM DB2MySQLhttp://www.microsoft.com/sqlserver/en/us/product-
info/competitor-compare.aspx
![Page 4: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/4.jpg)
Организация MS SQL Server~1200 человекОсновные группы:
SQL Engine (~250 человек)Data Programmability & ManageabilityBusiness IntelligenceData WarehousingГруппа поддержки и сопровождения
(Central Services)
![Page 5: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/5.jpg)
Кадровый составОсновные позиции
SDET – Software Development Engineer
in TestPM – Program ManagerSDE – Software Development Engineer
Соотношение количества SDE к SDET ~ 1:1
![Page 6: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/6.jpg)
SQL Server engineLanguage Processing
(Parse/Bind, Statement/Batch Execution)Query
Optimization(Plan Generation,
Statistics, Costing)
Query Execution(Query Operators, Memory Grants,
Parallelism)Storage Engine
(Access Methods, Database Page Cache, Locking, Transactions, …)
SQLOS (Schedulers, Buffer Pool, Memory
Management, Synchronization Primitives)
Utilitie
s (DB
CC
, B
ack
up
/Resto
re, B
CP
, …)
![Page 7: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/7.jpg)
Карьера SDETКарьерный рост
Формальная лестница уровней и ранговLead vs. Individual ContributorSenior SDET (Test architect, консультант)
МотивацияРазвитие и ростИнтересные проектыБюджет на тренинги (~5% времени ~ 1 неделя в год)
Оценка по результатамСвободный графикPerformance reviewsPeer reviews
ЦенностиМногообразие опыта и идей - diversity
![Page 8: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/8.jpg)
Важность тестирования
Почему тестирование для нас так важно?
Почему мы можем делиться опытом?
![Page 9: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/9.jpg)
Задачи SDETПоддержка существующих версий продукта:
Тестирование Service Packs \ Cumulative UpdatesРабота над новыми версиями:
Участие в Virtual TeamТестирование новой функциональности
Планирование Разработка тестовых спецификаций, участие в
дизайне и создании функциональных спецификаций Формулирование требований к тестируемости
Разработка тестов Прогон тестов Принятие решения о готовности проекта Сопровождение тестов
![Page 10: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/10.jpg)
Типы тестированияФункциональное тестирование
(Functional)Нагрузочное тестирование (Stress)Тестирование производительности и
масштабируемости (Performance and scalability)
![Page 11: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/11.jpg)
Идеология тестированияТесты создаются из многократно
используемых компонентовГотовые сценарии запускаются и
проверяются автоматически
![Page 12: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/12.jpg)
Инновации в тестированииРазработка тестов
Разделение тестового кода на компонентыАвтоматическая генерация тестов“Умная” проверкаОснащение продукта необходимыми средствами
эффективного тестирования
Создание инструментов для эффективного исполнения и проверки тестов SQL Dumper AutoVerify
![Page 13: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/13.jpg)
Разработка тестовСтатические тесты
НедостаткиСложность сопровожденияНеполное покрытие кода
Динамические тесты Тестирование на основе моделиСоздание библиотеки общих
компонентов
![Page 14: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/14.jpg)
Пример статического тестаСоздание индекса1. CREATE TABLE table …2. INSERT INTO table …3. CREATE CLUSTERED INDEX index ON
table …4. Проверка мета-данных 5. DBCC CHECKDB …6. DROP INDEX index7. Повторная проверка мета-данных8. DROP TABLE table
![Page 15: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/15.jpg)
Динамический тест: pipeline
Create Index
Проверка мета-данных
Insert Create Table
Diff results DBCCAuto File
Schema
Data GenCluster \ Non-cluster, Column
![Page 16: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/16.jpg)
Библиотека компонентовКаждый компонент
Узко специализированРазрабатывается экспертом на основе
глубоких знаний о работе подсистемы сервераУдовлетворяет требованиям, предъявляемым
к коду продуктаСоответствие принятым стандартам
разработки кодаСоответствие принятым процессам в
организацииBranches \ Builds
![Page 17: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/17.jpg)
ВерификацияПроверка на основе контрольной суммы
Изменение в коде приводит к массивным ошибкам в тестах
“Умная” проверкаИспользовать “свидетеля” для сравнения
результатовПроверять только то, что точно определено
и фиксировано
![Page 18: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/18.jpg)
Тестирование на основе моделиМодель
Описывает возможные действия по отношению к системе Transaction operations: begin tran, commit, rollback, savepoint
etc. DDL DML
Описывается как граф переходов из одного состояния в другое с использованием аннотаций для описания pre-conditions
Конфигурируема и принимает параметры Число потоков Типы нагрузки и команд ...
Движок модели случайным образом проходит по графу
![Page 19: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/19.jpg)
Статические и динамические тестыСтатические тесты
+ Легки в создании+ Гарантируют выполнение определенных
сценариев- Сложны в поддержке и понимании-Предоставляют ограниченное покрытие кода
(code coverage)Динамические тесты
+ Существенно расширяют покрытие кода- Не гарантируют покрытия кода- Требуют начальное время на изучение
(learning curve)- Сложны для анализа проблем
![Page 20: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/20.jpg)
Инструментарий (Supportability)Стандартные инструменты мониторинга
внутреннего состояния сервера, доступные клиентамDMVs Catalog Views \ System Tables \ stored
proceduresServer log (ERRORLOG)Memory dumpsWindows Event logXEvents \ SQL Trace events
![Page 21: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/21.jpg)
Инструментирование продукта для тестированияНе все критические сценарии можно
гарантировано достичь без контроля над исполнением кода
Инструментирование продукта (testability hooks) позволяет контролировать выполнение определенной последовательности операций
![Page 22: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/22.jpg)
Изменяют поведение продукта требуемым образомВключают \ выключают определенный
функционалОбеспечивают замедленное выполнение
определенных методов \ добавляют паузу Имитируют server crash Включают расширенную диагностику
Типы trace flagsДокументированные – для клиентовНедокументированные – для внутреннего
тестирования / CSSТолько для тестирования
Trace flags
![Page 23: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/23.jpg)
XEvents• SQL Extended Events – события, генерируемые
сервером при исполнении определенного кода Появились в SQL Server 2008
Обработка событий пользователем Записывать события в файл Назначить Synchronous Target
Sleep Abort thread Abort transaction Kill server Associate callback function
![Page 24: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/24.jpg)
XEvents• Особенности XEvents
Не изменяют функциональность Легковесны – не влияют на
производительность Пользователь может привязать
определенное действие к любому Xevent -встроенное или тестовое
![Page 25: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/25.jpg)
Использование XEvents для проверки устойчивости к сбоям2-phase commit
Участник 1
Участник 2
Менеджер транзакций
1. Будь готов!
1. Будь готов!
2. Всегда готов!2. Всегда готов!
3. Commit
3. Commit
![Page 26: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/26.jpg)
Использование XEvents для проверки устойчивости к сбоям
Участник 1
Участник 2
Менеджер транзакци
й
1. Будь готов
1. Будь готов
3. Rollback
3. Rollback
2. Всегда готов2. Всегда готов
XEvent -> Kill Server
![Page 27: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/27.jpg)
Инструменты для тестированияStackhasher
Проверяет обработку исключений на сервереВызывает определенные действия в каждом
возможном stack trace Simulated exceptions Out-of-resource errors Interrupts (control-C)
FuzzingПроверяет работу сервера с некорректными и
случайными входными данными Programming interfaces SQL statements File formats Network protocols
![Page 28: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/28.jpg)
Автоматизация тестированияВсе тесты автоматизированыТысячи машин различной архитектуры для
разного типа тестирования Отдельная группа (Central services),
ответственная за обеспечение работоспособности всей инфраструктуры
![Page 29: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/29.jpg)
Цикл исполнения тестовЗапустить тесты
Система запуска тестов:• OS \ Архитектура • SQL Version: Branch \ Build • Test storeСистема исполнения тестов:• Выбор машины• Установка ОС \ SQL Server• Запуск тестов
Health monitor
AutoVerify:Анализ сбоев и обработка результатов
![Page 30: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/30.jpg)
Автоматизация тестированияСистема мониторинга
Управляет запуском тестов и следит за ходом их выполнения
При обнаружении сбоев создает отчет о всех обнаруженных сбоях и ошибках
![Page 31: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/31.jpg)
AutoVerifyАвтоматически создает отчет об ошибках
(file bug)Анализирует проблему по Call StackПросматривает базу существующих проблем,
выясняя известна ли текущая проблемаНазначает новый баг соответствующему
разработчикуСобирает достаточно отладочной
информации для оффлайн-анализа проблемы
![Page 32: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/32.jpg)
AutoVerifyРасширяемая архитектура
Изначально использовался только для asserts \ AVsСейчас используется при обнаружении повреждения
данных, ошибках в стресс-тестах, функциональных ошибках
За последние 3 годаПроанализировано ~267 000 проблем;
создано ~16 000 багов; сэкономлено ~30 000 человеко-часов
~50% багов при функциональном тестировании создано автоматически
~90% багов при стресс-тестировании создано автоматически
Патент
![Page 33: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/33.jpg)
SQL DumperВызывается в случае ошибки сегментации
(Access Violation) или assert и создает файл дампа памяти (*.mdmp)
Собирает информацию об объектах из оперативной памяти, необходимую для offline-отладки
С клиентских машин информация о сбоях автоматически отправляется в Microsoft программой Watson (при согласии клиента)
![Page 34: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/34.jpg)
ЗаключениеТестирование – серьезная дисциплина,
которой должно уделяться должное внимание ещё на этапе проектирования программного продукта
Автоматизация тестирования сокращает затраты организации на разработку ПО
Множество интересных задачДинамическая генерация тестовПовышение эффективности работы отдела
тестирования Поддержание существующего кода Разработка нового кода Эффективное исполнение тестов
![Page 35: Simonova sql server-enginetesting](https://reader035.vdocuments.mx/reader035/viewer/2022062319/555e1cf9d8b42a6a4c8b46ef/html5/thumbnails/35.jpg)
Спасибо!О докладчике
Образование СУНЦ УрГУ УГТУ-УПИ, РТФ, инженер University of Vermont, MS in Computer Science
C 2007 года – Microsoft, SDET SQL Serveremail: [email protected]