Катерина Симонова Разработчик отдела тестирования Microsoft SQL Server Redmond, WA, USA.

Презентация:



Advertisements
Похожие презентации
SQL Server 2012 Deep Dive Денис Резник Database Architect at The Frayman Group.
Advertisements

Дипломная работа Выполнил: Чернилевский Денис, 518 гр. Научный руководитель: к.ф.-м.н. Луковников Иван Васильевич.
Тестирование Обеспечение качества. Тема 7 тестирование2 Аттестация и верификация Обзоры Инспекционные проверки Сквозной контроль.
Автоматизация тестирования. План 1.Применение автоматизированного тестирования 2.Выбор инструментария 3.Процесс автоматизации (IBM Rational) GUI тестирование.
Автоматизация тестирования Web-приложений 2007 г. Липский Павел Николаевич.
Team System - фреймворк для автоматизации тестирования от Microsoft Футорняк Елена Apriorit Сообщество Тестировщиков Днепропетровска 29/09/2011.
Калугин Александр, PhD, PMP Mercury Development Project Director.
Жизненный цикл программного обеспечения Подготовил студент 1 курса Лось Павел.
Александр Федоров software-testing.ru. Что нас ждет Особенности тест-дизайн при итерационной разработке Польза и спорная эффективность автоматизации тестирования.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
Организация процесса тестирования ПО Петренко Ольга QA Team Leader.
Администрирование информационных систем Лекция 4. Система управления базами данных.
Разработка программного обеспечения (Software Engineering) Часть 1. Введение.
Количественное Управление Надежность плана Выполнение процесса Завершенность поставок Сроки поставки Неисправленные дефекты ( на момент поставки Заказчику)
SQL 2012 И ГИБКИЕ МЕТОДЫ КОМАНДНОЙ РАЗРАБОТКИ C TFS Добро пожаловать в команду! Alexander Yakovlev
Расширение технологии UniTESK средствами генерации структурных тестов Дмитрий Воробьев
Анализ данных и интеграция информационных систем Станислав Чистяков Старший Консультант 5 апреля 2011 года, гостиница «Золотое кольцо»
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 8. Управление качеством.
PRC303 Службы и приложения Инфраструктура Развёртывание Hyper-V на серверы без ОС Hyper-V, VMware, Citrix XenServer Управление сетевыми устройствами.
Транксрипт:

Катерина Симонова Разработчик отдела тестирования Microsoft SQL Server Redmond, WA, USA

Содержание Немного о продукте Microsoft SQL Server Структура организации Microsoft SQL Server Процесс тестирования Инновации в процессе тестирования Разработка тестов Исполнение тестов

MS SQL Server Высокопроизводительная СУБД Преимущества MS SQL Server Легкость в настройке и сопровождении Отказоустойчивость и надежность Основные конкуренты Oracle IBM DB2 MySQL 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 resultsDBCCAuto File SchemaData 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. Будь готов! 2. Всегда готов! 3. Commit

Использование XEvents для проверки устойчивости к сбоям Участник 1 Участник 2 Менеджер транзакций 1. Будь готов 3. Rollback 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 года Проанализировано ~ проблем; создано ~ багов; сэкономлено ~ человеко-часов ~ 50 % багов при функциональном тестировании создано автоматически ~ 90 % багов при стресс-тестировании создано автоматически Патент

SQL Dumper Вызывается в случае ошибки сегментации (Access Violation) или assert и создает файл дампа памяти (*.mdmp) Собирает информацию об объектах из оперативной памяти, необходимую для offline- отладки С клиентских машин информация о сбоях автоматически отправляется в Microsoft программой Watson (при согласии клиента)

Заключение Тестирование – серьезная дисциплина, которой должно уделяться должное внимание ещё на этапе проектирования программного продукта Автоматизация тестирования сокращает затраты организации на разработку ПО Множество интересных задач Динамическая генерация тестов Повышение эффективности работы отдела тестирования Поддержание существующего кода Разработка нового кода Эффективное исполнение тестов

Спасибо! О докладчике Образование СУНЦ УрГУ УГТУ-УПИ, РТФ, инженер University of Vermont, MS in Computer Science C 2007 года – Microsoft, SDET SQL Server