Microsoft sql server
Download
1 / 35

Тестирование в Microsoft SQL Server - PowerPoint PPT Presentation


  • 286 Views
  • Uploaded on

Тестирование в Microsoft SQL Server. Катерина Симонова Разработчик отдела тестирования Microsoft SQL Server Redmond, WA, USA. Содержание. Немного о продукте Microsoft SQL Server Структура организации Microsoft SQL Server Процесс тестирования Инновации в процессе тестирования

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Тестирование в Microsoft SQL Server' - pippa


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Microsoft sql server

Тестирование вMicrosoftSQL Server

Катерина Симонова

Разработчик отдела тестированияMicrosoft SQL Server

Redmond, WA, USA


Содержание

  • Немного о продукте Microsoft SQL Server

  • Структура организации Microsoft SQL Server

  • Процесс тестирования

  • Инновации в процессе тестирования

    • Разработка тестов

    • Исполнение тестов


Ms 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 server1
Организация 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
SQL Server engine

Language Processing

(Parse/Bind, Statement/Batch Execution)

Utilities (DBCC, Backup/Restore, BCP, …)

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)


Карьера 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


Разработка тестов

  • Статические тесты

    Недостатки

    • Сложность сопровождения

    • Неполное покрытие кода

  • Динамические тесты

    • Тестирование на основе модели

    • Создание библиотеки общих компонентов


Пример статического тестаСоздание индекса

  • CREATE TABLE table …

  • INSERT INTO table …

  • CREATECLUSTERED INDEX index ON table …

  • Проверка мета-данных

  • DBCC CHECKDB …

  • DROP INDEX index

  • Повторная проверка мета-данных

  • DROP TABLE table


Pipeline
Динамический тест:pipeline

Cluster \ Non-cluster, Column

Schema

Data Gen

Create Table

Insert

Create Index

Проверка мета-данных

Auto File

Diff results

DBCC


Библиотека компонентов

Каждый компонент

  • Узко специализирован

  • Разрабатывается экспертом на основе глубоких знаний о работе подсистемы сервера

  • Удовлетворяет требованиям, предъявляемым к коду продукта

    • Соответствие принятым стандартам разработкикода

    • Соответствие принятым процессам в организации

      • Branches \ Builds


Верификация

  • Проверка на основе контрольной суммы

    • Изменение в коде приводит к массивным ошибкам в тестах

  • “Умная” проверка

    • Использовать “свидетеля” для сравнения результатов

    • Проверять только то, что точно определено и фиксировано


Тестирование на основе модели

  • Модель

    • Описывает возможные действия по отношению к системе

      • Transaction operations: begin tran, commit, rollback, savepoint etc.

      • DDL

      • DML

    • Описывается как граф переходов из одного состояния в другое

      • с использованием аннотаций для описания pre-conditions

    • Конфигурируема и принимает параметры

      • Число потоков

      • Типы нагрузки и команд

      • ...

    • Движок модели случайным образом проходит по графу


Статические и динамические тесты

  • Статические тесты

    + Легки в создании

    + Гарантируют выполнение определенных сценариев

    - Сложны в поддержке и понимании

    -Предоставляют ограниченное покрытие кода (code coverage)

  • Динамические тесты

    + Существенно расширяют покрытие кода

    - Не гарантируют покрытия кода

    - Требуютначальное время на изучение (learning curve)

    - Сложны для анализа проблем


Supportability
Инструментарий ( тестыSupportability)

  • Стандартные инструменты мониторинга внутреннего состояния сервера, доступные клиентам

    • DMVs

    • Catalog Views \ System Tables \ stored procedures

    • Server log (ERRORLOG)

    • Memory dumps

    • Windows Event log

    • XEvents \ SQL Trace events


Инструментирование продукта для тестирования

  • Не все критические сценарии можно гарантировано достичь без контроля над исполнением кода

  • Инструментирование продукта (testability hooks) позволяет контролировать выполнение определенной последовательности операций


Trace flags
Trace flags тестирования

  • Изменяют поведение продукта требуемым образом

    • Включают \ выключают определенный функционал

    • Обеспечивают замедленное выполнение определенных методов \ добавляют паузу

    • Имитируют server crash

    • Включают расширенную диагностику

  • Типы trace flags

    • Документированные –для клиентов

    • Недокументированные – для внутреннего тестирования / CSS

    • Только для тестирования


Xevents
XEvents тестирования

  • SQL Extended Events – события, генерируемые сервером при исполнении определенного кода

    • Появились в SQL Server 2008

  • Обработка событий пользователем

    • Записывать события в файл

    • Назначить Synchronous Target

      • Sleep

      • Abort thread

      • Abort transaction

      • Kill server

      • Associate callback function


  • Xevents1
    XEvents тестирования

    • Особенности XEvents

      • Не изменяют функциональность

      • Легковесны – не влияют на производительность

      • Пользователь может привязать определенное действие к любому Xevent -встроенное или тестовое


    Xevents2
    Использование тестированияXEventsдля проверки устойчивости к сбоям

    • 2-phase commit

    1. Будь готов!

    Участник 1

    Менеджер транзакций

    3. Commit

    2. Всегда готов!

    1. Будь готов!

    2. Всегда готов!

    Участник 2

    3. Commit


    Xevents3
    Использование тестированияXEventsдля проверки устойчивости к сбоям

    XEvent -> Kill Server

    1. Будь готов

    Участник 1

    Менеджер транзакций

    3. Rollback

    2. Всегда готов

    1. Будь готов

    2. Всегда готов

    Участник 2

    3. Rollback


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

    • 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
    AutoVerify тестирования

    • Автоматически создает отчет об ошибках (file bug)

    • Анализирует проблему по Call Stack

    • Просматривает базу существующих проблем,выясняя известна ли текущая проблема

    • Назначает новый баг соответствующему разработчику

    • Собирает достаточно отладочной информации для оффлайн-анализа проблемы


    Autoverify1
    AutoVerify тестирования

    • Расширяемая архитектура

      • Изначально использовался только для asserts \ AVs

      • Сейчас используется при обнаружении повреждения данных, ошибках в стресс-тестах, функциональных ошибках

    • За последние 3 года

      • Проанализировано ~267000 проблем; создано ~16000 багов;сэкономлено ~30000 человеко-часов

      • ~50% багов при функциональном тестировании создано автоматически

      • ~90% багов при стресс-тестировании создано автоматически

    • Патент


    Sql dumper
    SQL Dumper тестирования

    • Вызывается в случае ошибки сегментации (Access Violation) или assert и создает файл дампа памяти (*.mdmp)

    • Собирает информацию об объектах из оперативной памяти, необходимую для offline-отладки

    • С клиентских машин информация о сбоях автоматически отправляется в Microsoft программой Watson (при согласии клиента)


    Заключение тестирования

    • Тестирование – серьезная дисциплина, которой должно уделяться должное внимание ещё на этапе проектирования программного продукта

    • Автоматизация тестирования сокращает затраты организации на разработку ПО

    • Множество интересных задач

      • Динамическая генерация тестов

      • Повышение эффективности работы отдела тестирования

        • Поддержание существующего кода

        • Разработка нового кода

        • Эффективное исполнение тестов


    Спасибо! тестирования

    • О докладчике

      • Образование

        • СУНЦ УрГУ

        • УГТУ-УПИ, РТФ, инженер

        • University of Vermont, MS in Computer Science

    • C 2007 года – Microsoft, SDET SQL Server

    • email: [email protected]


    ad