63
Software quality assurance days 18 Международная конференция по вопросам качества ПО sqadays.com Москва. 27–28 ноября 2015 Лайшев Тимур ООО «Аплана». Москва, Россия Шаблоны проектирования нагрузочных скриптов

Шаблоны проектирования нагрузочных скриптов

  • Upload
    sqalab

  • View
    449

  • Download
    0

Embed Size (px)

Citation preview

Software quality assurance days18 Международная конференция по вопросам качества ПОsqadays.com

Москва. 27–28 ноября 2015

Лайшев ТимурООО «Аплана». Москва, Россия

Шаблоны проектирования нагрузочных скриптов

Шаблоны проектирования нагрузочных скриптов

О докладчике

Лайшев Тимур

Главный инженер-тестировщик

ООО «Аплана»

Нагрузочное тестирование

SAP ERP, HCM, BAIBM ESB, MDM, ISIM/ISAM, PortalExperian Transact SMСПУТНИК…

Шаблоны проектирования нагрузочных скриптов

Шаблоны проектирования нагрузочных скриптов

Шаблоны проектирования нагрузочных скриптов

Использование кастомных решений

Шаблоны проектирования нагрузочных скриптов

Гибкость решения

Шаблоны проектирования нагрузочных скриптов

Срыв сроков проекта

Шаблоны проектирования нагрузочных скриптов

Перенос тестовых данныхв СУБД

Шаблоны проектирования нагрузочных скриптов

Понижение производительности при работе с большими объемами

Шаблоны проектирования нагрузочных скриптов

Очистка файлов от уже использованных данных

Шаблоны проектирования нагрузочных скриптов

Отсутствие контроля над связностью данных

Шаблоны проектирования нагрузочных скриптов

Неравномерное использование записей внутри набора

Шаблоны проектирования нагрузочных скриптов

Объекты БД как источники тестовых данных

Шаблоны проектирования нагрузочных скриптов

Таблицы

хранение большого объема связных данных

организация справочников

логирование для последующего использования

Шаблоны проектирования нагрузочных скриптов

Последовательности

Генерация уникальных ID и их производных

Организация получения тестовых данных

15Шаблоны проектирования нагрузочных скриптов

ID Client Data …

1 71 795613 …

2 68 311005 …

3 59 817532 …

… … …

ID Client Data … STATUS

1 71 795613 … 0

2 68 311005 … 0

3 59 817532 … 0

… … … 0

16Шаблоны проектирования нагрузочных скриптов

Поле статуса + блокировка записи

17

SELECT FOR UPDATE #1

Шаблоны проектирования нагрузочных скриптов

ID Client Data … STATUS

1 71 795613 … 1

2 68 311005 … 0

3 59 817532 … 0

… … … 0

18Шаблоны проектирования нагрузочных скриптов

SELECT FOR UPDATE #2

ID Client Data … STATUS

1 71 795613 … 1

2 68 311005 … 1

3 59 817532 … 0

… … … 0

ID Client Data …

1 71 795613 …

2 68 311005 …

3 59 817532 …

… … …

Выбор записи посоответствующемуидентификатору

Получение значенияувеличивающейсяпоследовательности

Использование вспомогательной последовательности

1 2 3

19Шаблоны проектирования нагрузочных скриптов

ID Client Data …

1 71 795613 …

2 68 311005 …

3 59 817532 …

… … …

Выбор записи посоответствующемуидентификатору

Получение значенияувеличивающейсяпоследовательности

Использование вспомогательной последовательности

1 2 3

20Шаблоны проектирования нагрузочных скриптов

ID Client Data …

1 71 795613 …

2 68 311005 …

3 59 817532 …

… … …

Выбор записи посоответствующемуидентификатору

Получение значенияувеличивающейсяпоследовательности

Использование вспомогательной последовательности

1 2 3

21Шаблоны проектирования нагрузочных скриптов

Шаблоны проектирования нагрузочных скриптов

Ускоряемся: создание индексов

Шаблоны проектирования нагрузочных скриптов

Создание интерфейса

Использование хранимых процедур

Объединение выборок в курсоры

Шаблоны проектирования нагрузочных скриптов

Преимущества решения

Объем «быстрых» данных ограничен только дисковым пространством

Контроль над связностью, уникальностью и равномерностью

Работа в автоматизированном режиме

Единое хранилище данных с удаленным доступом

Простота переноса

Нет явной привязки к средству НТ

Шаблоны проектирования нагрузочных скриптов

Расширение набора данных по ходу теста

Шаблоны проектирования нагрузочных скриптов

Использование собственного промежуточного контроллера запросов

Шаблоны проектирования нагрузочных скриптов

Сложные сценарии нагрузки

Шаблоны проектирования нагрузочных скриптов

Проблемы стандартного решения

Время построения сценария пропорционально количеству скриптов

Построение ступенек – настоящая пытка

Чем больше скриптов – тем больше вероятность ошибки

Шаблоны проектирования нагрузочных скриптов

Что такое контроллер?

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Собственный промежуточный контроллер

Шаблоны проектирования нагрузочных скриптов

Как составить последовательность?

??????????

Интенсивности операций:

Зеленая – 0,1 оп/cКрасная – 0,3 оп/cГолубая – 0,5 оп/c

Шаблоны проектирования нагрузочных скриптов

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

Интенсивности операций:

Зеленая – 0,1 оп/cКрасная – 0,3 оп/cГолубая – 0,5 оп/c

Шаблоны проектирования нагрузочных скриптов

1

2

3

4

5

6

7

8

9

10

Периоды выполнения операций

Интенсивности операций:

Зеленая – 0,1Красная – 0,3Голубая – 0,5

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

Если номер секунды кратен периоду – операция должна выполняться в эту секунду.

1

2

3

4

5

6

7

8

9

10

Построение последовательности. Шаг №1

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

3

4

5

6

7

8

9

10

Построение последовательности. Шаг №2

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

4

5

6

7

8

9

10

3

Построение последовательности. Шаг №3

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

10

3

4

Построение последовательности. Шаг №4

5

6

7

8

9

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

10

3

4

5

Построение последовательности. Шаг №5

6

7

8

9

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

7

8

9

10

3

4

5

6

Построение последовательности. Шаг №6

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

8

9

10

3

4

5

6

7

Построение последовательности. Шаг №7

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

1

2

9

10

3

4

5

6

7

8

Построение последовательности. Шаг №8

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

10

8

9

Построение последовательности. Шаг №91

2

3

4

5

6

7 Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

10

9

Построение последовательности. Шаг №10

8

1

2

3

4

5

6

7 Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

Формирование окончательного списка

Период: Зеленая – 10 сКрасная – 3 с Голубая – 2 с

Шаблоны проектирования нагрузочных скриптов

Увеличение уровня нагрузки

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Увеличение уровня нагрузки

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Увеличение уровня нагрузки

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Увеличение уровня нагрузки

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Увеличение уровня нагрузки

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Увеличение уровня нагрузки

Тестируемая система

Шаблоны проектирования нагрузочных скриптов

Преимущества решения

Простота построения нагрузочных сценариев

Автоматизированный механизм контроля профиля

Устойчивость к корректировке

Шаблоны проектирования нагрузочных скриптов

Использование наследования при создании нагрузочных скриптов

Шаблоны проектирования нагрузочных скриптов

Когда много однотипных скриптов

Шаблоны проектирования нагрузочных скриптов

В чем суть наследования?

Шаблоны проектирования нагрузочных скриптов

Создание родительского класса

Переменные

Методы

Шаблоны проектирования нагрузочных скриптов

Переменные родительского класса

Соединения (*.Connection)

Параметры запросов (URL, String, Integer, Date, …)

Параметры ответов (String, Integer, Date, …)

Вспомогательные параметры

Шаблоны проектирования нагрузочных скриптов

Методы родительского класса

Конструктор (инициализация)

Получение выборки тестовых данных

Параметризация запроса

Отправка запроса

Анализ ответа

Логирование

Шаблоны проектирования нагрузочных скриптов

Создание дочернего класса

Переменные: параметры запроса

Методы: анализ ответа

Шаблоны проектирования нагрузочных скриптов

Преимущества решения

Неограниченные возможности по функциональному расширению нагрузочных скриптов

Значительное снижение трудозатрат при доработке (отладке) всего функционала

Высокая скорость разработки тестов при расширении нагрузочного покрытия

Простота переносимости между инструментами НТ

Шаблоны проектирования нагрузочных скриптов

Использование шаблонов не всегда оптимально

Шаблоны проектирования нагрузочных скриптов

В ряде случаев оно упрощает жизнь

Шаблоны проектирования нагрузочных скриптов

А иногда это единственный способ выполнить задачу

Шаблоны проектирования нагрузочных скриптов

Спасибо за внимание

[email protected]

vk.com/rosencranz

linkedin.com/in/tlayshev