Top Banner
Как тестировать приложение, тестирующее другие приложения? Тимур Шевляков Senior R&D Engineer Borland (A Micro Focus Company)
49

Тимур Шевляков

Apr 12, 2017

Download

Software

CodeFest
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Тимур Шевляков

Как тестировать приложение, тестирующее другие приложения?

ТимурШевляков

Senior R&D Engineer Borland (A Micro Focus Company)

Page 2: Тимур Шевляков

О себе

• Senior R&D Engineer на проекте Silk Performer• Разработка кода для сбора и анализа метрик• C++, C#

Timur Shevlyakov

tshevlyakov

@cracketus

cracketus.blogspot.co.at

Page 3: Тимур Шевляков

План

• Что тестируем?• Как тестировать?• Особенности тестирования

- инструмента для тестирования в общем- инструмента для нагрузочного тестирования

• Резюме• Вопросы и ответы

Page 4: Тимур Шевляков

Что тестируем?

Page 5: Тимур Шевляков

Silk Performer

Все приложенияИнструменты для

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

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

http://www.borland.com/en-GB/Products/Software-Testing/Performance-Testing/Silk-Performer

Page 6: Тимур Шевляков

Как тестировать?

Page 7: Тимур Шевляков

Особенности тестирования

Подходы к тестированию

Опыт в тестировании

Подходы к тестированию инструментов для тестирования

Подходы к тестированию модуля нагрузочного тестирования

Page 8: Тимур Шевляков

Особенности тестирования инструмента для тестирования в

общем

Page 9: Тимур Шевляков

Тип входных параметров

App Tool

Данные Действия

...

...Приложения

Page 10: Тимур Шевляков

Новый набор входных параметров

Конечное приложение

App 1.0Набор А

App 2.0Набор Б

Page 11: Тимур Шевляков

Новый набор входных параметров

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

Tool 1.0Набор А

Tool 1.0Набор Б

App 1.0 App 2.0

Page 12: Тимур Шевляков

Оракул

• Что такое оракул?

• Что считать верным результатом?

картинка с http://allpainters.ru/

Page 13: Тимур Шевляков

Особенности тестирования инструмента для нагрузочного

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

Page 14: Тимур Шевляков

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

Page 15: Тимур Шевляков

Виды нагрузочного тестирования

• Тестирование производительности (Performance test)

• Нагрузочное тестирование (Load test)

Page 16: Тимур Шевляков

Виды нагрузочного тестирования

• Стресс-тестирование (Stress test)

• Тестирование емкости (Capacity test)

Page 17: Тимур Шевляков

Особый вид тестирования

Page 18: Тимур Шевляков

Из-за решаемых задач

• Измерение производительности

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

нагрузках

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

нагрузках

Page 19: Тимур Шевляков

Тестирование, мотивированное экономическими причинами

Еще инфографика есть на http://www.borland.com/infographics/black-friday/

Page 20: Тимур Шевляков

Из-за реализации

• Невозможно реализовать с помощью ручного тестирования

Page 21: Тимур Шевляков

Инструмент для нагрузочного тестирования

Page 22: Тимур Шевляков

Основные модули

• Генератор нагрузки

• Измерение метрик

• Сбор и анализ данных

Page 23: Тимур Шевляков

Генератор нагрузки

Тестируемый объект

Запросы

Запросы

Запросы

Запросы вручную

Определение мощностинагрузки

Page 24: Тимур Шевляков

Генератор нагрузки. Свойства и требования

• Быстродействие: только нагрузка и измерения, ничего лишнего

• Ограниченность в ресурсах

• Облачные агенты

Page 25: Тимур Шевляков

Генератор нагрузкиКак определить допустимую нагрузку

Page 26: Тимур Шевляков

Сбор данных. Метрики производительности

• Нагрузка на CPU

• Потребление памяти

• Дисковые операции I/O

• Сетевые ресурсы

Page 27: Тимур Шевляков

Сбор данных. Метрики приложения

• Время выполнения транзакции

• Количество и время на обработку запросов и ответов

• Другие метрики, которые зависят от типа тестируемого

приложения

Page 28: Тимур Шевляков

Анализ собранных данных

• Отчеты

• Комбинированные графики

• Предсказание

Page 29: Тимур Шевляков

Как тестировать?

Page 30: Тимур Шевляков

Концепция

• Отсутствие тестировщиков

• Использование собственных

продуктов

• Максимальная автоматизация

• Использование реальных

данных

Page 31: Тимур Шевляков

Многообразие входных параметров

Универсальность кода

Реальные данные

Количество тестов → max

картинка с http://www.antiquestradegazette.com/

Page 32: Тимур Шевляков

Оракул

Сторонний

• Все в порядке

Свой

• Описать методологию в документации

• Запустить инструмент на большом наборе эталонов-примеров

и сформировать baseline

Page 33: Тимур Шевляков

На уровне протокола

• Проверка с помощью системных и сторонних средств

(Performance Monitor, iperf, WireShark)

Генератор нагрузки

Page 34: Тимур Шевляков

Генератор нагрузки. Распределенная система

• Система состоит из 1 контроллера и N агентов

• Нужно определить ∃ x : ∀ N > x система из N агентов

работает как общий случай

Page 35: Тимур Шевляков

Генератор нагрузки. Распределенная система

• Тестирование агента, изолированного от системы

• Тестирование по отдельности систем из N ∈ [1, x] агентов

• Smoke Test с большим числом агентов

Page 36: Тимур Шевляков

Измерение метрик

• Выбор эталонов

• Сравнение с эталонами

• Создание "нулевых линий" - baseline

Page 37: Тимур Шевляков

Сбора и анализ данных• Инвариант - входные данные, совпадающие с результатом

работы инструмента.• Удобный формат входных данных

.csv Tool

Set Transaction Time

Конвертировать и сравнить

Page 38: Тимур Шевляков

Тестирование на макроуровне

Page 39: Тимур Шевляков

Архитектура на уровне CI

• Обнаружение явных и потенциальных ошибок, как можно

раньше

• Структурированная информация о тестах

• Быстрый доступ к информации о тестах

Page 40: Тимур Шевляков

Архитектура на уровне CI

code

SVN

c/r Phabricator

Jenkins

build Unit Tests

Dashboard

Page 41: Тимур Шевляков

Архитектура системы тестирования

• Маскимизация числа автоматизированных тестов• Минимизация времени на настройку / запуск / поддерживание

работы системы тестирования• Краткие, понятные и своевременные отчеты• Сбор подробных сведений об упавших тестах и сохранение их

максимально долгое время• Сохранение статистики тестов для релизов каждой итерации

Page 42: Тимур Шевляков

Архитектура системы тестирования

JUnitCppUnitNUnit

Core

GUI

SVN

Silk CentralTest Manager

Silk TestAgent

.dmp

dmpster

Long Lasting Tests

Page 43: Тимур Шевляков

Инструментарий

Page 46: Тимур Шевляков

dmpsterToolСтарт

Crash .dmp

https://github.com/alexanderfloh/dmpster

Page 47: Тимур Шевляков

РезюмеВ общем случае● Подходы к тестированию конечных приложений и

инструментов для тестирования отличаются● Модули, которые тестируются абсолютно, и, требующие

сравнительного анализа● Архитектура, позволяющая быстро обнаруживать ошибки● Быстрое исправление обнаруженной ошибки● Непрерывная связь с клиентами● Использование реальных данных● Автоматизированное тестирование не заменит ручное

Page 48: Тимур Шевляков

РезюмеПри отсутствии тестировщиков:

● Максимальная автоматизация

● Удобный вспомогательный инструментарий

● Каждый разработчик ответствечает за стабильность тестов и

поддержку определенных модулей приложения

● Краткие, понятные и своевременные отчеты о тестах

Page 49: Тимур Шевляков

@cracketus

Тимур Шевляков

Senior R&D Engineer Borland(A Micro Focus Company)

Вопросы?

tshevlyakov

cracketus.blogspot.co.at