SlideShare a Scribd company logo
Катерина Симонова
Разработчик отдела тестирования
Microsoft SQL Server
Redmond, WA, USA
Содержание
 Немного о продукте Microsoft SQL Server
 Структура организации Microsoft SQL Server
 Процесс тестирования
 Инновации в процессе тестирования
 Разработка тестов
 Исполнение тестов
MS SQL Server
 Высокопроизводительная СУБД
 Преимущества MS SQL Server
 Легкость в настройке и сопровождении
 Отказоустойчивость и надежность
 Основные конкуренты
 Oracle
 IBM DB2
 MySQL
 http://www.microsoft.com/sqlserver/en/us/product-
info/competitor-compare.aspx
Организация MS SQL Server
 ~1200 человек
 Основные группы:
 SQL Engine (~250 человек)
 Data Programmability & Manageability
 Business Intelligence
 Data Warehousing
 Группа поддержки и сопровождения (Central
Services)
Кадровый состав
 Основные позиции
 SDET – Software Development Engineer
in Test
 PM – Program Manager
 SDE – Software Development Engineer
 Соотношение количества SDE к SDET ~ 1:1
SQL Server engine
Language 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)
Utilities(DBCC,
Backup/Restore,BCP,…)
Карьера SDET
 Карьерный рост
 Формальная лестница уровней и рангов
 Lead vs. Individual Contributor
 Senior SDET (Test architect, консультант)
 Мотивация
 Развитие и рост
 Интересные проекты
 Бюджет на тренинги (~5% времени ~ 1 неделя в год)
 Оценка по результатам
 Свободный график
 Performance reviews
 Peer reviews
 Ценности
 Многообразие опыта и идей - diversity
Важность тестирования
 Почему тестирование для нас так важно?
 Почему мы можем делиться опытом?
Задачи SDET
 Поддержка существующих версий продукта:
 Тестирование Service Packs  Cumulative Updates
 Работа над новыми версиями:
 Участие в Virtual Team
 Тестирование новой функциональности
 Планирование
 Разработка тестовых спецификаций, участие в дизайне и
создании функциональных спецификаций
 Формулирование требований к тестируемости
 Разработка тестов
 Прогон тестов
 Принятие решения о готовности проекта
 Сопровождение тестов
Типы тестирования
 Функциональное тестирование (Functional)
 Нагрузочное тестирование (Stress)
 Тестирование производительности и
масштабируемости (Performance and
scalability)
Идеология тестирования
 Тесты создаются из многократно
используемых компонентов
 Готовые сценарии запускаются и проверяются
автоматически
Инновации в тестировании
 Разработка тестов
 Разделение тестового кода на компоненты
 Автоматическая генерация тестов
 “Умная” проверка
 Оснащение продукта необходимыми средствами
эффективного тестирования
 Создание инструментов для эффективного
исполнения и проверки тестов
 SQL Dumper
 AutoVerify
Разработка тестов
 Статические тесты
Недостатки
 Сложность сопровождения
 Неполное покрытие кода
 Динамические тесты
 Тестирование на основе модели
 Создание библиотеки общих компонентов
Пример статического теста
Создание индекса
1. CREATE TABLE table …
2. INSERT INTO table …
3. CREATE CLUSTERED INDEX index ON table …
4. Проверка мета-данных
5. DBCC CHECKDB …
6. DROP INDEX index
7. Повторная проверка мета-данных
8. DROP TABLE table
Динамический тест: pipeline
Create Index
Проверка мета-данных
InsertCreate Table
Diff results DBCCAuto File
Schema Data Gen
Cluster  Non-cluster,
Column
Библиотека компонентов
Каждый компонент
 Узко специализирован
 Разрабатывается экспертом на основе глубоких
знаний о работе подсистемы сервера
 Удовлетворяет требованиям, предъявляемым к коду
продукта
 Соответствие принятым стандартам разработки
кода
 Соответствие принятым процессам в организации
 Branches  Builds
Верификация
 Проверка на основе контрольной суммы
 Изменение в коде приводит к массивным ошибкам в
тестах
 “Умная” проверка
 Использовать “свидетеля” для сравнения
результатов
 Проверять только то, что точно определено и
фиксировано
Тестирование на основе модели
 Модель
 Описывает возможные действия по отношению к системе
 Transaction operations: begin tran, commit, rollback, savepoint etc.
 DDL
 DML
 Описывается как граф переходов из одного состояния в
другое
 с использованием аннотаций для описания pre-conditions
 Конфигурируема и принимает параметры
 Число потоков
 Типы нагрузки и команд
 ...
 Движок модели случайным образом проходит по графу
Статические и динамические тесты
 Статические тесты
+ Легки в создании
+ Гарантируют выполнение определенных сценариев
- Сложны в поддержке и понимании
-Предоставляют ограниченное покрытие кода (code
coverage)
 Динамические тесты
+ Существенно расширяют покрытие кода
- Не гарантируют покрытия кода
- Требуют начальное время на изучение (learning
curve)
- Сложны для анализа проблем
Инструментарий (Supportability)
 Стандартные инструменты мониторинга
внутреннего состояния сервера, доступные
клиентам
 DMVs
 Catalog Views  System Tables  stored
procedures
 Server log (ERRORLOG)
 Memory dumps
 Windows Event log
 XEvents  SQL Trace events
Инструментирование продукта
для тестирования
 Не все критические сценарии можно
гарантировано достичь без контроля над
исполнением кода
 Инструментирование продукта (testability
hooks) позволяет контролировать выполнение
определенной последовательности операций
 Изменяют поведение продукта требуемым образом
 Включают  выключают определенный функционал
 Обеспечивают замедленное выполнение
определенных методов  добавляют паузу
 Имитируют server crash
 Включают расширенную диагностику
 Типы trace flags
 Документированные – для клиентов
 Недокументированные – для внутреннего
тестирования / CSS
 Только для тестирования
Trace flags
XEvents
• SQL Extended Events – события, генерируемые
сервером при исполнении определенного кода
 Появились в SQL Server 2008
 Обработка событий пользователем
 Записывать события в файл
 Назначить Synchronous Target
 Sleep
 Abort thread
 Abort transaction
 Kill server
 Associate callback function
XEvents
• Особенности XEvents
 Не изменяют функциональность
 Легковесны – не влияют на
производительность
 Пользователь может привязать
определенное действие к любому Xevent -
встроенное или тестовое
Использование XEvents для
проверки устойчивости к сбоям
 2-phase commit
Участник 1
Участник 2
Менеджер
транзакций
1. Будь готов!
1. Будь готов!
2. Всегда
готов!
2. Всегда
готов!
3. Commit
3. Commit
Использование XEvents для
проверки устойчивости к сбоям
Участник 1
Участник 2
Менеджер
транзакций
1. Будь готов
1. Будь готов
3. Rollback
3. Rollback
2. Всегда
готов
2. Всегда
готов
XEvent -> Kill Server
Инструменты для тестирования
 Stackhasher
 Проверяет обработку исключений на сервере
 Вызывает определенные действия в каждом возможном
stack trace
 Simulated exceptions
 Out-of-resource errors
 Interrupts (control-C)
 Fuzzing
 Проверяет работу сервера с некорректными и
случайными входными данными
 Programming interfaces
 SQL statements
 File formats
 Network protocols
Автоматизация тестирования
 Все тесты автоматизированы
 Тысячи машин различной архитектуры для
разного типа тестирования
 Отдельная группа (Central services), ответственная
за обеспечение работоспособности всей
инфраструктуры
Цикл исполнения тестов
Запустить
тесты Система запуска тестов:
• OS  Архитектура
• SQL Version: Branch  Build
• Test store
Система исполнения тестов:
• Выбор машины
• Установка ОС  SQL Server
• Запуск тестов
Health monitor
AutoVerify:
Анализ сбоев и обработка
результатов
Автоматизация тестирования
 Система мониторинга
 Управляет запуском тестов и следит за ходом их
выполнения
 При обнаружении сбоев создает отчет о всех
обнаруженных сбоях и ошибках
AutoVerify
 Автоматически создает отчет об ошибках (file bug)
 Анализирует проблему по Call Stack
 Просматривает базу существующих проблем,
выясняя известна ли текущая проблема
 Назначает новый баг соответствующему
разработчику
 Собирает достаточно отладочной информации для
оффлайн-анализа проблемы
AutoVerify
 Расширяемая архитектура
 Изначально использовался только для asserts  AVs
 Сейчас используется при обнаружении повреждения данных,
ошибках в стресс-тестах, функциональных ошибках
 За последние 3 года
 Проанализировано ~267 000 проблем;
создано ~16 000 багов;
сэкономлено ~30 000 человеко-часов
 ~50% багов при функциональном тестировании создано
автоматически
 ~90% багов при стресс-тестировании создано автоматически
 Патент
SQL Dumper
 Вызывается в случае ошибки сегментации (Access
Violation) или assert и создает файл дампа памяти
(*.mdmp)
 Собирает информацию об объектах из
оперативной памяти, необходимую для offline-
отладки
 С клиентских машин информация о сбоях
автоматически отправляется в Microsoft
программой Watson (при согласии клиента)
Заключение
 Тестирование – серьезная дисциплина, которой
должно уделяться должное внимание ещё на этапе
проектирования программного продукта
 Автоматизация тестирования сокращает затраты
организации на разработку ПО
 Множество интересных задач
 Динамическая генерация тестов
 Повышение эффективности работы отдела
тестирования
 Поддержание существующего кода
 Разработка нового кода
 Эффективное исполнение тестов
Спасибо!
 О докладчике
 Образование
 СУНЦ УрГУ
 УГТУ-УПИ, РТФ, инженер
 University of Vermont, MS in Computer Science
 C 2007 года – Microsoft, SDET SQL Server
 email: KateSi@microsoft.com

More Related Content

PPT
Simonova sql server-enginetesting
LiloSEA
 
PPT
Simonova sql server-enginetesting
Computer Science Club
 
PPT
Tfs Overview And Architecture (www.cmcons.com)
Alexander Novichkov
 
PDF
Организация процессов разработки на основе VSTS и TFS
Александр Шамрай
 
PPTX
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Positive Hack Days
 
PPSX
Тест-менеджмент в Jira. Анна Добрынина
qasib
 
PPTX
"Опыт создания системы управления сборкой и тестированием" (полная)
SPB SQA Group
 
PPT
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
solit
 
Simonova sql server-enginetesting
LiloSEA
 
Simonova sql server-enginetesting
Computer Science Club
 
Tfs Overview And Architecture (www.cmcons.com)
Alexander Novichkov
 
Организация процессов разработки на основе VSTS и TFS
Александр Шамрай
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Positive Hack Days
 
Тест-менеджмент в Jira. Анна Добрынина
qasib
 
"Опыт создания системы управления сборкой и тестированием" (полная)
SPB SQA Group
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
solit
 

What's hot (19)

PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
PPT
Jira as a test management tool
Return on Intelligence
 
PPTX
автоматизация тестирования с помощью Selenium
vyacheslavmaslov
 
PPTX
Automation testing desktop applications
Алексей Стягайло
 
PPTX
Автоматизация тестирования. Разбор конкретного примера - продукта XML2Selenium
jazzteam
 
PDF
Плюсы и минусы автоматизации, пример из жизни
z-tech
 
KEY
Testing RIA with Selenium
Sergey Shvets
 
PPTX
автоматизация тестирования с помощью Selenium
vyacheslavmaslov
 
PPTX
Описание и архитектура TFS 2008
Александр Шамрай
 
PDF
Как построить свой фреймворк для автотестов?
Dmitry Buzdin
 
PDF
JUnit, дай пять!
Dmitrii Tuchs
 
PPT
Embarcadero All-Access
Serghei Urban
 
PPSX
Сквозное обеспечение качества и расширяемость платформы TFS
Александр Шамрай
 
PDF
Azure DevOps Управление проектом и версионный контроль
Александр Шамрай
 
PPSX
Разработка БД с использованием инструментов MS VS 2010
Александр Шамрай
 
PDF
Azure DevOps сборка, развертывание и тестирование
Александр Шамрай
 
PDF
Azure DevOps Адаптация под собственные потребности
Александр Шамрай
 
PPT
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab
 
PPT
Open Source Testing Framework: real project example and best practices
Aliaksandr Ikhelis
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
IT61
 
Jira as a test management tool
Return on Intelligence
 
автоматизация тестирования с помощью Selenium
vyacheslavmaslov
 
Automation testing desktop applications
Алексей Стягайло
 
Автоматизация тестирования. Разбор конкретного примера - продукта XML2Selenium
jazzteam
 
Плюсы и минусы автоматизации, пример из жизни
z-tech
 
Testing RIA with Selenium
Sergey Shvets
 
автоматизация тестирования с помощью Selenium
vyacheslavmaslov
 
Описание и архитектура TFS 2008
Александр Шамрай
 
Как построить свой фреймворк для автотестов?
Dmitry Buzdin
 
JUnit, дай пять!
Dmitrii Tuchs
 
Embarcadero All-Access
Serghei Urban
 
Сквозное обеспечение качества и расширяемость платформы TFS
Александр Шамрай
 
Azure DevOps Управление проектом и версионный контроль
Александр Шамрай
 
Разработка БД с использованием инструментов MS VS 2010
Александр Шамрай
 
Azure DevOps сборка, развертывание и тестирование
Александр Шамрай
 
Azure DevOps Адаптация под собственные потребности
Александр Шамрай
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab
 
Open Source Testing Framework: real project example and best practices
Aliaksandr Ikhelis
 
Ad

Similar to Simonova CSEDays (20)

PPTX
03 load testing
vyacheslavmaslov
 
PDF
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU
 
PPT
Организация тестирования производительности по SWEAT
SQALab
 
PPT
Организация тестирования производительности по SWEAT
Return on Intelligence
 
PDF
Тестирование в BI проектах
SQALab
 
PDF
Поговорим про performance-тестирование
Andrey Akinshin
 
PPTX
Надежный тест-дизайн
SQALab
 
PPT
Jira as a test management tool
Return on Intelligence
 
PDF
9.1 resource analysis.templ
Natalia Odegova
 
PPTX
Test types
QA Guards
 
PPT
Организация тестирования производительности по Sweat
Return on Intelligence
 
PDF
доклад на SQADays 2011 в Казани
margo-qa
 
PPTX
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
PDF
Сложности performance-тестирования
Andrey Akinshin
 
PDF
Сложности performance-тестирования / Андрей Акиньшин (JetBrains)
Ontico
 
PPSX
MS TFS 2010 - Обзор и архитектура
Александр Шамрай
 
PDF
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
QADay
 
PPTX
Обзор и архитектура MS Visual Studio Team System 2008
Александр Шамрай
 
PDF
андрей дмитриев взгляд со стороны разработчика
Alexei Lupan
 
PPTX
Подход доктора Хауса в тестировании оптимизации запросов (5 серия)
SQALab
 
03 load testing
vyacheslavmaslov
 
Tech Talks @NSU: Организация тестирования в IT-компаниях Академгородка. Карье...
Tech Talks @NSU
 
Организация тестирования производительности по SWEAT
SQALab
 
Организация тестирования производительности по SWEAT
Return on Intelligence
 
Тестирование в BI проектах
SQALab
 
Поговорим про performance-тестирование
Andrey Akinshin
 
Надежный тест-дизайн
SQALab
 
Jira as a test management tool
Return on Intelligence
 
9.1 resource analysis.templ
Natalia Odegova
 
Test types
QA Guards
 
Организация тестирования производительности по Sweat
Return on Intelligence
 
доклад на SQADays 2011 в Казани
margo-qa
 
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Сложности performance-тестирования
Andrey Akinshin
 
Сложности performance-тестирования / Андрей Акиньшин (JetBrains)
Ontico
 
MS TFS 2010 - Обзор и архитектура
Александр Шамрай
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
QADay
 
Обзор и архитектура MS Visual Studio Team System 2008
Александр Шамрай
 
андрей дмитриев взгляд со стороны разработчика
Alexei Lupan
 
Подход доктора Хауса в тестировании оптимизации запросов (5 серия)
SQALab
 
Ad

More from LiloSEA (20)

PPT
CSEDays. Олег Ушмаев
LiloSEA
 
PPTX
CSEDays. Алексей Кадиев
LiloSEA
 
PPTX
CSEDays. Юрий Айдаров
LiloSEA
 
PDF
CSEDays. Александр Семенов
LiloSEA
 
PPT
Александра Торгашова
LiloSEA
 
PPT
Степан Петухов
LiloSEA
 
PPTX
Лукина Ольга. Безопасность в соц. сетях
LiloSEA
 
PPTX
Андрей Лабунец. Механизмы трассировки
LiloSEA
 
PPT
Андрей Гаража. Биоинформатика
LiloSEA
 
PDF
Александр Тиморин. Мошеннические атаки
LiloSEA
 
PDF
Михаил Рыбалкин. Перестановочные многочлены.
LiloSEA
 
PPT
Cse коновалова титов
LiloSEA
 
PPT
схемы разделения секрета
LiloSEA
 
PPT
почти пороговая схема разделения секрета
LiloSEA
 
PPT
Алексей Голдбергс. Криптография для бизнеса
LiloSEA
 
PPTX
Hash cse lecture3
LiloSEA
 
PPTX
Hash cse lecture1
LiloSEA
 
PPTX
Hash cse lecture2
LiloSEA
 
PDF
Nikolay Shilov. CSEDays 3
LiloSEA
 
PDF
Nikolay Shilov. CSEDays 2
LiloSEA
 
CSEDays. Олег Ушмаев
LiloSEA
 
CSEDays. Алексей Кадиев
LiloSEA
 
CSEDays. Юрий Айдаров
LiloSEA
 
CSEDays. Александр Семенов
LiloSEA
 
Александра Торгашова
LiloSEA
 
Степан Петухов
LiloSEA
 
Лукина Ольга. Безопасность в соц. сетях
LiloSEA
 
Андрей Лабунец. Механизмы трассировки
LiloSEA
 
Андрей Гаража. Биоинформатика
LiloSEA
 
Александр Тиморин. Мошеннические атаки
LiloSEA
 
Михаил Рыбалкин. Перестановочные многочлены.
LiloSEA
 
Cse коновалова титов
LiloSEA
 
схемы разделения секрета
LiloSEA
 
почти пороговая схема разделения секрета
LiloSEA
 
Алексей Голдбергс. Криптография для бизнеса
LiloSEA
 
Hash cse lecture3
LiloSEA
 
Hash cse lecture1
LiloSEA
 
Hash cse lecture2
LiloSEA
 
Nikolay Shilov. CSEDays 3
LiloSEA
 
Nikolay Shilov. CSEDays 2
LiloSEA
 

Simonova CSEDays

  • 1. Катерина Симонова Разработчик отдела тестирования Microsoft SQL Server Redmond, WA, USA
  • 2. Содержание  Немного о продукте Microsoft SQL Server  Структура организации Microsoft SQL Server  Процесс тестирования  Инновации в процессе тестирования  Разработка тестов  Исполнение тестов
  • 3. MS SQL Server  Высокопроизводительная СУБД  Преимущества MS SQL Server  Легкость в настройке и сопровождении  Отказоустойчивость и надежность  Основные конкуренты  Oracle  IBM DB2  MySQL  http://www.microsoft.com/sqlserver/en/us/product- info/competitor-compare.aspx
  • 4. Организация MS SQL Server  ~1200 человек  Основные группы:  SQL Engine (~250 человек)  Data Programmability & Manageability  Business Intelligence  Data Warehousing  Группа поддержки и сопровождения (Central Services)
  • 5. Кадровый состав  Основные позиции  SDET – Software Development Engineer in Test  PM – Program Manager  SDE – Software Development Engineer  Соотношение количества SDE к SDET ~ 1:1
  • 6. SQL Server engine Language 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) Utilities(DBCC, Backup/Restore,BCP,…)
  • 7. Карьера SDET  Карьерный рост  Формальная лестница уровней и рангов  Lead vs. Individual Contributor  Senior SDET (Test architect, консультант)  Мотивация  Развитие и рост  Интересные проекты  Бюджет на тренинги (~5% времени ~ 1 неделя в год)  Оценка по результатам  Свободный график  Performance reviews  Peer reviews  Ценности  Многообразие опыта и идей - diversity
  • 8. Важность тестирования  Почему тестирование для нас так важно?  Почему мы можем делиться опытом?
  • 9. Задачи SDET  Поддержка существующих версий продукта:  Тестирование Service Packs Cumulative Updates  Работа над новыми версиями:  Участие в Virtual Team  Тестирование новой функциональности  Планирование  Разработка тестовых спецификаций, участие в дизайне и создании функциональных спецификаций  Формулирование требований к тестируемости  Разработка тестов  Прогон тестов  Принятие решения о готовности проекта  Сопровождение тестов
  • 10. Типы тестирования  Функциональное тестирование (Functional)  Нагрузочное тестирование (Stress)  Тестирование производительности и масштабируемости (Performance and scalability)
  • 11. Идеология тестирования  Тесты создаются из многократно используемых компонентов  Готовые сценарии запускаются и проверяются автоматически
  • 12. Инновации в тестировании  Разработка тестов  Разделение тестового кода на компоненты  Автоматическая генерация тестов  “Умная” проверка  Оснащение продукта необходимыми средствами эффективного тестирования  Создание инструментов для эффективного исполнения и проверки тестов  SQL Dumper  AutoVerify
  • 13. Разработка тестов  Статические тесты Недостатки  Сложность сопровождения  Неполное покрытие кода  Динамические тесты  Тестирование на основе модели  Создание библиотеки общих компонентов
  • 14. Пример статического теста Создание индекса 1. CREATE TABLE table … 2. INSERT INTO table … 3. CREATE CLUSTERED INDEX index ON table … 4. Проверка мета-данных 5. DBCC CHECKDB … 6. DROP INDEX index 7. Повторная проверка мета-данных 8. DROP TABLE table
  • 15. Динамический тест: pipeline Create Index Проверка мета-данных InsertCreate Table Diff results DBCCAuto File Schema Data Gen Cluster Non-cluster, Column
  • 16. Библиотека компонентов Каждый компонент  Узко специализирован  Разрабатывается экспертом на основе глубоких знаний о работе подсистемы сервера  Удовлетворяет требованиям, предъявляемым к коду продукта  Соответствие принятым стандартам разработки кода  Соответствие принятым процессам в организации  Branches Builds
  • 17. Верификация  Проверка на основе контрольной суммы  Изменение в коде приводит к массивным ошибкам в тестах  “Умная” проверка  Использовать “свидетеля” для сравнения результатов  Проверять только то, что точно определено и фиксировано
  • 18. Тестирование на основе модели  Модель  Описывает возможные действия по отношению к системе  Transaction operations: begin tran, commit, rollback, savepoint etc.  DDL  DML  Описывается как граф переходов из одного состояния в другое  с использованием аннотаций для описания pre-conditions  Конфигурируема и принимает параметры  Число потоков  Типы нагрузки и команд  ...  Движок модели случайным образом проходит по графу
  • 19. Статические и динамические тесты  Статические тесты + Легки в создании + Гарантируют выполнение определенных сценариев - Сложны в поддержке и понимании -Предоставляют ограниченное покрытие кода (code coverage)  Динамические тесты + Существенно расширяют покрытие кода - Не гарантируют покрытия кода - Требуют начальное время на изучение (learning curve) - Сложны для анализа проблем
  • 20. Инструментарий (Supportability)  Стандартные инструменты мониторинга внутреннего состояния сервера, доступные клиентам  DMVs  Catalog Views System Tables stored procedures  Server log (ERRORLOG)  Memory dumps  Windows Event log  XEvents SQL Trace events
  • 21. Инструментирование продукта для тестирования  Не все критические сценарии можно гарантировано достичь без контроля над исполнением кода  Инструментирование продукта (testability hooks) позволяет контролировать выполнение определенной последовательности операций
  • 22.  Изменяют поведение продукта требуемым образом  Включают выключают определенный функционал  Обеспечивают замедленное выполнение определенных методов добавляют паузу  Имитируют server crash  Включают расширенную диагностику  Типы trace flags  Документированные – для клиентов  Недокументированные – для внутреннего тестирования / CSS  Только для тестирования Trace flags
  • 23. XEvents • SQL Extended Events – события, генерируемые сервером при исполнении определенного кода  Появились в SQL Server 2008  Обработка событий пользователем  Записывать события в файл  Назначить Synchronous Target  Sleep  Abort thread  Abort transaction  Kill server  Associate callback function
  • 24. XEvents • Особенности XEvents  Не изменяют функциональность  Легковесны – не влияют на производительность  Пользователь может привязать определенное действие к любому Xevent - встроенное или тестовое
  • 25. Использование XEvents для проверки устойчивости к сбоям  2-phase commit Участник 1 Участник 2 Менеджер транзакций 1. Будь готов! 1. Будь готов! 2. Всегда готов! 2. Всегда готов! 3. Commit 3. Commit
  • 26. Использование XEvents для проверки устойчивости к сбоям Участник 1 Участник 2 Менеджер транзакций 1. Будь готов 1. Будь готов 3. Rollback 3. Rollback 2. Всегда готов 2. Всегда готов XEvent -> Kill Server
  • 27. Инструменты для тестирования  Stackhasher  Проверяет обработку исключений на сервере  Вызывает определенные действия в каждом возможном stack trace  Simulated exceptions  Out-of-resource errors  Interrupts (control-C)  Fuzzing  Проверяет работу сервера с некорректными и случайными входными данными  Programming interfaces  SQL statements  File formats  Network protocols
  • 28. Автоматизация тестирования  Все тесты автоматизированы  Тысячи машин различной архитектуры для разного типа тестирования  Отдельная группа (Central services), ответственная за обеспечение работоспособности всей инфраструктуры
  • 29. Цикл исполнения тестов Запустить тесты Система запуска тестов: • OS Архитектура • SQL Version: Branch Build • Test store Система исполнения тестов: • Выбор машины • Установка ОС SQL Server • Запуск тестов Health monitor AutoVerify: Анализ сбоев и обработка результатов
  • 30. Автоматизация тестирования  Система мониторинга  Управляет запуском тестов и следит за ходом их выполнения  При обнаружении сбоев создает отчет о всех обнаруженных сбоях и ошибках
  • 31. AutoVerify  Автоматически создает отчет об ошибках (file bug)  Анализирует проблему по Call Stack  Просматривает базу существующих проблем, выясняя известна ли текущая проблема  Назначает новый баг соответствующему разработчику  Собирает достаточно отладочной информации для оффлайн-анализа проблемы
  • 32. AutoVerify  Расширяемая архитектура  Изначально использовался только для asserts AVs  Сейчас используется при обнаружении повреждения данных, ошибках в стресс-тестах, функциональных ошибках  За последние 3 года  Проанализировано ~267 000 проблем; создано ~16 000 багов; сэкономлено ~30 000 человеко-часов  ~50% багов при функциональном тестировании создано автоматически  ~90% багов при стресс-тестировании создано автоматически  Патент
  • 33. SQL Dumper  Вызывается в случае ошибки сегментации (Access Violation) или assert и создает файл дампа памяти (*.mdmp)  Собирает информацию об объектах из оперативной памяти, необходимую для offline- отладки  С клиентских машин информация о сбоях автоматически отправляется в Microsoft программой Watson (при согласии клиента)
  • 34. Заключение  Тестирование – серьезная дисциплина, которой должно уделяться должное внимание ещё на этапе проектирования программного продукта  Автоматизация тестирования сокращает затраты организации на разработку ПО  Множество интересных задач  Динамическая генерация тестов  Повышение эффективности работы отдела тестирования  Поддержание существующего кода  Разработка нового кода  Эффективное исполнение тестов
  • 35. Спасибо!  О докладчике  Образование  СУНЦ УрГУ  УГТУ-УПИ, РТФ, инженер  University of Vermont, MS in Computer Science  C 2007 года – Microsoft, SDET SQL Server  email: [email protected]

Editor's Notes

  • #4: Relational DB: what is it, small example on bank
  • #6: Позиция SDET, importance of SDET, карьерный рост: lead vs IC, culture: diversity, non-discremenation: age gender raceMotivation: interesting projects, training 5% time (1 week), оценка по результатам – свободный график, performance reviews, peer reviewsCareer growth opportunities: lead vs IC. Interested in senior Ics.
  • #10: Почему тестирование для нас так важно. Пример – leap year problemПочему мы можем говорить о тестированииVirtual Teams,
  • #30: Central services