SlideShare a Scribd company logo
1 of 64
Download to read offline
Software quality assurance days
22 Международная конференция
по вопросам качества ПО
sqadays.com
Санкт-Петербург. 17–18 ноября 2017
Смирнов Вячеслав Александрович
Перфоманс Лаб. Москва, Россия
Apache.JMeter для .NET-проектов
Проект «Атлас» 2
Microsoft Silverlight на клиенте
Протокол: SOAP/MSBin1 (HTTP)
Windows Communication Foundation на сервере
HP LoadRunner - Silverlight протокол?
Apache.JMeter для .NET-проектов
Нужны лицензии для LoadRunner 3
Microsoft Silverlight на клиенте
Протокол: SOAP/MSBin1 (HTTP)
Windows Communication Foundation на сервере
Малая нагрузка, 50 демо-пользователей
Apache.JMeter для .NET-проектов
Не знал, что LoadRunner знает .NET 4
Microsoft Silverlight на клиенте
Протокол: SOAP/MSBin1 (HTTP)
Windows Communication Foundation на сервере
Можно было использовать, но я тогда этого не знал
HP LoadRunner
.NET-протокол
Apache.JMeter для .NET-проектов
Коллеги знают Apache.JMeter 5
Microsoft Silverlight на клиенте
Протокол: SOAP/MSBin1 (HTTP)
Windows Communication Foundation на сервере
Но Apache.JMeter не знает SOAP/MSBin1 (HTTP)
Apache.JMeter для .NET-проектов
Протоколы IPC от Microsoft 6
Название Транспорт Рекомендован в
DCOM Microsoft RPC 1997
COM+ Microsoft RPC 2000
.NET Remoting SOAP/XML (HTTP)
SOAP/XML (TCP)
SOAP/MSBin1 (HTTP)
NET.TCP (TCP)
2002
WCF SOAP/XML (HTTP)
SOAP/MSBin1 (HTTP)
NET.TCP (TCP)
Настоящее время
REST JSON (HTTP) Будущее
Apache.JMeter для .NET-проектов
Протоколы IPC, известные JMeter 7
Название Транспорт Рекомендован в
DCOM Microsoft RPC 1997
COM+ Microsoft RPC 2000
.NET Remoting SOAP/XML (HTTP)
SOAP/XML (TCP)
SOAP/MSBin1 (HTTP)
NET.TCP (TCP)
2002
WCF SOAP/XML (HTTP)
SOAP/MSBin1 (HTTP)
NET.TCP (TCP)
Настоящее время
REST JSON (HTTP) Будущее
Apache.JMeter для .NET-проектов
Коллеги не знают Visual Studio 8
Microsoft Silverlight на клиенте
Протокол: SOAP/MSBin1 (HTTP)
Windows Communication Foundation на сервере
Visual Studio знает .NET: WCF – SOAP/MsBin1 (HTTP)
Apache.JMeter для .NET-проектов
Что выбрать? 9
Apache.JMeter для .NET-проектов
Выбрал Apache.JMeter 10
Подключить к Apache.JMeter все возможности .NET
Apache.JMeter для .NET-проектов
Польза проекта 11
Единая кодовая база: .NET на клиенте и на сервере
Выполнение нагрузочного тестирования
Бесплатность: Apache.JMeter
Apache.JMeter для .NET-проектов
Основа решения - jni4net 12
Использовать jni4net
Объединить Java и .NET Framework
Apache.JMeter для .NET-проектов
Прокачанный Apache.JMeter 13
Получим
Apache.JMeter знающий WCF, COM/DCOM, CryptoAPI, …
Apache.JMeter для .NET-проектов
Дела давно минувших дней 14
Apache.JMeter для .NET-проектов
Сейчас: отлажен механизм 15
Отлажено и проверено под высокой нагрузкой
Apache.JMeter для .NET-проектов
Сейчас: из HP в Apache.JMeter 16
Обеспечен единый код тестов для
Apache.JMeter и HP LoadRunner
Apache.JMeter для .NET-проектов
Сейчас: из Apache.JMeter в VTS 17
Создано API для Apache.JMeter на C#,
для работы с HP LoadRunner Virtual Table Server
Apache.JMeter для .NET-проектов
Сейчас: сделан демо-проект 18
https://github.com/pflb/wcfLoadTest
Apache.JMeter для .NET-проектов
Расскажу былину
Дело было так … 19
Apache.JMeter для .NET-проектов
Нужно нагрузочное тестирование
с очень большой нагрузкой
Новый проект 20
Apache.JMeter для .NET-проектов
Для серверов на основе технологий Microsoft:
COM+/DCOM, WCF (net.tcp) - .NET Framework
Тестирование WCF+DCOM 21
Apache.JMeter для .NET-проектов
Для серверов на основе технологий Microsoft:
COM+/DCOM, WCF (net.tcp) – С#, но не Java, …
Появляются ограничения 22
Apache.JMeter для .NET-проектов
И сделать, желательно, быстро
Небольшой бюджет проекта 23
Apache.JMeter для .NET-проектов
Реализация должна быть проста в изучении и
поддержке
Передача проекта заказчику 24
Apache.JMeter для .NET-проектов
Желаемый инструмент реализации – HP LoadRunner,
точнее HP Performance Center
Инструмент – HP LoadRunner 25
Apache.JMeter для .NET-проектов
Нагрузка нужна очень большая
Нужна высокая интенсивность 26
Apache.JMeter для .NET-проектов
Нагрузка нужна очень большая.
Демо-ограничение HP LoadRunner – 50 пользователей
Демо-ограничение HP LoadRunner 27
Apache.JMeter для .NET-проектов
Что делать, когда не хватает возможностей
демонстрационной версии?
Задача 28
Apache.JMeter для .NET-проектов
Можно попросить нужную сумму или
подумать, изучить, поискать готовое решение
Решение 29
Apache.JMeter для .NET-проектов
Можно попросить нужную сумму или
изобрести что-то новое
Запасной вариант 30
Apache.JMeter для .NET-проектов
С начала посчитаем деньги 31
Apache.JMeter для .NET-проектов
Считаем финансы на 417 (500) VU 32
Apache JMeter Visual Studio
Enterprise
HP LoadRunner
Бесплатно 250 VU на 90 дней –
демо
50 VU бесплатно,
скидки
Бесплатно $2500 - $5999 $150 за VU LR,
$212 за VU PC
(скидка 50%)
Бесплатно* $2500* 500 x $100 =
$50000*
Стоимость округлена: 0 – 150 000 – 2 900 000 рублей
* Плюс: Windows, оборудование, электричество, зарплата
Apache.JMeter для .NET-проектов
Apache JMeter Visual Studio
Enterprise
HP LoadRunner
Бесплатно $2 500 $50 000
Считаем финансы на 417 (500) VU 33
Apache.JMeter для .NET-проектов
Пока покупаются лицензии, можно успеть
переписать тест, протестировать и написать отчёт
Ждать – долго и дорого 34
Apache.JMeter для .NET-проектов
Первый скрипт и отчёт был сделан за неделю
Сделать прототип - быстро 35
Apache.JMeter для .NET-проектов
Будем кодить 36
Apache.JMeter для .NET-проектов
Расскажу просто и подробно 37
Apache.JMeter для .NET-проектов
Apache.JMeter может запустить «внешний» .NET-код в
отдельном потоке и отдельном процессе
Библиотека или приложение 38
• Вызвать .NET из Java
• Имперсонализация
потоков
-
• Меньше ресурсов,
высокая нагрузка+
• Нужно много CPU
и памяти для
работы-
• Простота
разработки+
Apache.JMeter для .NET-проектов
.NET-метод возвращает в Java массив со статистикой
выполнения методов.
Способ реализации: Библиотека 39
JMeter
• Создаёт потоки в Ultimate Thread Group
• Ограничивает интенсивность выполнения операций
JSR-223
Sampler
• Вызывает Java-метод, вызывающий .NET-метод
• Метод возвращает массив со статистикой выполнения
JSR-223 Post
Processor
• Получает массив со статистикой выполнения
• Через JMeter API формирует статистику JMeter
Apache.JMeter для .NET-проектов
Вызвать метод библиотеки в JMeter почти также просто.
Но библиотека должна быть на Java
JSR-223 Sampler 40
Apache.JMeter для .NET-проектов
Test Plan – основные параметры и загрузка библиотек
Настройки и параметры 41
Apache.JMeter для .NET-проектов
setUp Thread Group/JSR223 Sampler –
инициализация jni4net
Инициализация 42
Apache.JMeter для .NET-проектов
jp@gc - Ultimate Thread Group/JSR223 Sampler –
передача параметров и запуск сценариев
Запуск .NET-сценария 43
Apache.JMeter для .NET-проектов
JSR223 PostProcessor – обработка результатов
Приём результатов работы 44
Apache.JMeter для .NET-проектов
Нужна имперсонализация потоков
для Windows-аутентификации, что не всегда работает
для COM+/DCOM сервисов.
Ограничение 45
Apache.JMeter для .NET-проектов
Библиотека требует меньше ресурсов,
и этот способ работает
Библиотека – оптимальный выбор 46
Apache.JMeter для .NET-проектов
● Обращаться к WCF-сервису будем из .NET-клиента
● Сценарий теста реализуется и выполняется на .NET
● Инструменты jni4net создадут Java-класс поверх .NET
● Apache JMeter будет вызывать Java-методы через
● JSR-223 Sampler
● Из .NET в Java передаются финальные результаты –
нет накладных расходов при выполнении сценария
DCOM и WCF из Apache JMeter 47
Apache.JMeter для .NET-проектов
Enterprise приложения имеют хорошо
документированные клиентские библиотеки для
работы с серверной частью
Модульные приложения 48
Apache.JMeter для .NET-проектов
jni4net: java native interface for .net 49
Запуск java-
обёрток над .NET
кодом: jni4net
Нужны простые
публичные методы
.NET-класса
Без events, out
параметров,
шаблонов, params
Свойства должны
иметь методы get и
set
Apache.JMeter для .NET-проектов
.NET-класс, сценарий работы 50
Apache.JMeter для .NET-проектов
.NET-класс, сценарий работы 51
Apache.JMeter для .NET-проектов
Java-класс обёртка (jni4net) 52
Apache.JMeter для .NET-проектов
Java-класс обёртка (jni4net) 53
Apache.JMeter для .NET-проектов
Текст скрипта можно вставить в проект HP LoadRunner
.NET, и проект заработает без ошибок.
Структура кода из HP LoadRunner 54
Apache.JMeter для .NET-проектов
Работа с транзакциями:
● start(string transactionLabel)
● end()
● start_transaction(string transactionLabel)
● end_transaction(string transactionLabel, int code)
● exit(int exitCode, int continueCode)
Работа с логированием:
● log_message(string message)
● error_message(string message)
Работа с user data point:
● user_data_point(string dataPointName, int value)
● user_data_point(string dataPointName, double value)
Реализация методов LR API 55
Apache.JMeter для .NET-проектов
Работа с транзакциями:
● start(string transactionLabel)
● end()
● start_transaction(string transactionLabel)
● end_transaction(string transactionLabel, int code)
● exit(int exitCode, int continueCode)
Работа с логированием:
● log_message(string message)
● error_message(string message)
Работа с user data point:
● user_data_point(string dataPointName, int value)
● user_data_point(string dataPointName, double value)
Реализация методов LR API 56
Apache.JMeter для .NET-проектов
Работа с транзакциями:
● start(string transactionLabel)
● end()
● start_transaction(string transactionLabel)
● end_transaction(string transactionLabel, int code)
● exit(int exitCode, int continueCode)
Работа с логированием:
● log_message(string message)
● error_message(string message)
Работа с user data point:
● user_data_point(string dataPointName, int value)
● user_data_point(string dataPointName, double value)
Реализация методов LR API 57
Apache.JMeter для .NET-проектов
Работа с транзакциями:
● start(string transactionLabel)
● end()
● start_transaction(string transactionLabel)
● end_transaction(string transactionLabel, int code)
● exit(int exitCode, int continueCode)
Работа с логированием:
● log_message(string message)
● error_message(string message)
Работа с user data point:
● user_data_point(string dataPointName, int value)
● user_data_point(string dataPointName, double value)
Реализация методов LR API 58
Apache.JMeter для .NET-проектов
Подключение:
● connect(string servername, int portnum,
ConnectionOptions options)
Получение значения без удаления:
● rotate_message(string columnName, SendRow sendFlag)
Отключение:
● disconnect()
https://github.com/pflb/LoadRunner.VTS.Client
Реализация методов VTS API (C#) 59
Apache.JMeter для .NET-проектов
Скрипт пишется, как для HP LoadRunner .NET, пишется в
Visual Studio Community, а исполняется в Apache JMeter
Три богатыря 60
Apache.JMeter для .NET-проектов
Нагрузить .NET недорого
Три богатыря 61
Apache.JMeter для .NET-проектов
Демо-проект 62
https://github.com/pflb/wcfLoadTest
Apache.JMeter для .NET-проектов
Спасибо 63
Apache.JMeter для .NET-проектов
Вопросы/ответы 64
Apache.JMeter для .NET-проектов
Расширение списка
поддерживаемых протоколов и
библиотек в JMeter с помощью
.NET Framework
Смирнов Вячеслав Александрович
Перфоманс Лаб
v.smirnov@pflb.ru
https://github.com/pflb

More Related Content

What's hot

TestLink
TestLinkTestLink
TestLink
ISsoft
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
CEE-SEC(R)
 

What's hot (20)

Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирога
 
Enter: testing
Enter: testingEnter: testing
Enter: testing
 
Mva stf module 1 - rus
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rus
 
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
 
Test link introduction
Test link introductionTest link introduction
Test link introduction
 
TestLink
TestLinkTestLink
TestLink
 
Report Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизацииReport Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизации
 
Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований
 
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьОшибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
Петр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRMПетр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRM
 
10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам
 
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
 
DevOps для Legacy-продуктов
DevOps для Legacy-продуктовDevOps для Legacy-продуктов
DevOps для Legacy-продуктов
 
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDDЭволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
 
Контроль качества с использованием продуктов Ibm rational
Контроль качества с использованием продуктов Ibm rationalКонтроль качества с использованием продуктов Ibm rational
Контроль качества с использованием продуктов Ibm rational
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation Tool
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Новый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проекте
 
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
 

Similar to Apache.JMeter для .NET-проектов

развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
rit2010
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиковInternet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
Roman Kalita
 
NPAPI
NPAPINPAPI
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
Ontico
 
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
it-people
 

Similar to Apache.JMeter для .NET-проектов (20)

Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
Middleware
MiddlewareMiddleware
Middleware
 
Машинное обучение с MATLAB
Машинное обучение с MATLABМашинное обучение с MATLAB
Машинное обучение с MATLAB
 
Экспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложенийЭкспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложений
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Internet explorer 9 для разработчиков
Internet explorer 9 для разработчиковInternet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
 
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Load Testing
Load TestingLoad Testing
Load Testing
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
NPAPI
NPAPINPAPI
NPAPI
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
 
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
 

More from SQALab

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 
Истинная сила тестировщика - информация
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
 
Автоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПО
 
Правильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестированияПравильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестирования
 
Sustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within TeamSustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within Team
 
Test Data Preparation: Tips and Tricks
Test Data Preparation: Tips and TricksTest Data Preparation: Tips and Tricks
Test Data Preparation: Tips and Tricks
 

Apache.JMeter для .NET-проектов

  • 1. Software quality assurance days 22 Международная конференция по вопросам качества ПО sqadays.com Санкт-Петербург. 17–18 ноября 2017 Смирнов Вячеслав Александрович Перфоманс Лаб. Москва, Россия Apache.JMeter для .NET-проектов
  • 2. Проект «Атлас» 2 Microsoft Silverlight на клиенте Протокол: SOAP/MSBin1 (HTTP) Windows Communication Foundation на сервере HP LoadRunner - Silverlight протокол? Apache.JMeter для .NET-проектов
  • 3. Нужны лицензии для LoadRunner 3 Microsoft Silverlight на клиенте Протокол: SOAP/MSBin1 (HTTP) Windows Communication Foundation на сервере Малая нагрузка, 50 демо-пользователей Apache.JMeter для .NET-проектов
  • 4. Не знал, что LoadRunner знает .NET 4 Microsoft Silverlight на клиенте Протокол: SOAP/MSBin1 (HTTP) Windows Communication Foundation на сервере Можно было использовать, но я тогда этого не знал HP LoadRunner .NET-протокол Apache.JMeter для .NET-проектов
  • 5. Коллеги знают Apache.JMeter 5 Microsoft Silverlight на клиенте Протокол: SOAP/MSBin1 (HTTP) Windows Communication Foundation на сервере Но Apache.JMeter не знает SOAP/MSBin1 (HTTP) Apache.JMeter для .NET-проектов
  • 6. Протоколы IPC от Microsoft 6 Название Транспорт Рекомендован в DCOM Microsoft RPC 1997 COM+ Microsoft RPC 2000 .NET Remoting SOAP/XML (HTTP) SOAP/XML (TCP) SOAP/MSBin1 (HTTP) NET.TCP (TCP) 2002 WCF SOAP/XML (HTTP) SOAP/MSBin1 (HTTP) NET.TCP (TCP) Настоящее время REST JSON (HTTP) Будущее Apache.JMeter для .NET-проектов
  • 7. Протоколы IPC, известные JMeter 7 Название Транспорт Рекомендован в DCOM Microsoft RPC 1997 COM+ Microsoft RPC 2000 .NET Remoting SOAP/XML (HTTP) SOAP/XML (TCP) SOAP/MSBin1 (HTTP) NET.TCP (TCP) 2002 WCF SOAP/XML (HTTP) SOAP/MSBin1 (HTTP) NET.TCP (TCP) Настоящее время REST JSON (HTTP) Будущее Apache.JMeter для .NET-проектов
  • 8. Коллеги не знают Visual Studio 8 Microsoft Silverlight на клиенте Протокол: SOAP/MSBin1 (HTTP) Windows Communication Foundation на сервере Visual Studio знает .NET: WCF – SOAP/MsBin1 (HTTP) Apache.JMeter для .NET-проектов
  • 9. Что выбрать? 9 Apache.JMeter для .NET-проектов
  • 10. Выбрал Apache.JMeter 10 Подключить к Apache.JMeter все возможности .NET Apache.JMeter для .NET-проектов
  • 11. Польза проекта 11 Единая кодовая база: .NET на клиенте и на сервере Выполнение нагрузочного тестирования Бесплатность: Apache.JMeter Apache.JMeter для .NET-проектов
  • 12. Основа решения - jni4net 12 Использовать jni4net Объединить Java и .NET Framework Apache.JMeter для .NET-проектов
  • 13. Прокачанный Apache.JMeter 13 Получим Apache.JMeter знающий WCF, COM/DCOM, CryptoAPI, … Apache.JMeter для .NET-проектов
  • 14. Дела давно минувших дней 14 Apache.JMeter для .NET-проектов
  • 15. Сейчас: отлажен механизм 15 Отлажено и проверено под высокой нагрузкой Apache.JMeter для .NET-проектов
  • 16. Сейчас: из HP в Apache.JMeter 16 Обеспечен единый код тестов для Apache.JMeter и HP LoadRunner Apache.JMeter для .NET-проектов
  • 17. Сейчас: из Apache.JMeter в VTS 17 Создано API для Apache.JMeter на C#, для работы с HP LoadRunner Virtual Table Server Apache.JMeter для .NET-проектов
  • 18. Сейчас: сделан демо-проект 18 https://github.com/pflb/wcfLoadTest Apache.JMeter для .NET-проектов
  • 19. Расскажу былину Дело было так … 19 Apache.JMeter для .NET-проектов
  • 20. Нужно нагрузочное тестирование с очень большой нагрузкой Новый проект 20 Apache.JMeter для .NET-проектов
  • 21. Для серверов на основе технологий Microsoft: COM+/DCOM, WCF (net.tcp) - .NET Framework Тестирование WCF+DCOM 21 Apache.JMeter для .NET-проектов
  • 22. Для серверов на основе технологий Microsoft: COM+/DCOM, WCF (net.tcp) – С#, но не Java, … Появляются ограничения 22 Apache.JMeter для .NET-проектов
  • 23. И сделать, желательно, быстро Небольшой бюджет проекта 23 Apache.JMeter для .NET-проектов
  • 24. Реализация должна быть проста в изучении и поддержке Передача проекта заказчику 24 Apache.JMeter для .NET-проектов
  • 25. Желаемый инструмент реализации – HP LoadRunner, точнее HP Performance Center Инструмент – HP LoadRunner 25 Apache.JMeter для .NET-проектов
  • 26. Нагрузка нужна очень большая Нужна высокая интенсивность 26 Apache.JMeter для .NET-проектов
  • 27. Нагрузка нужна очень большая. Демо-ограничение HP LoadRunner – 50 пользователей Демо-ограничение HP LoadRunner 27 Apache.JMeter для .NET-проектов
  • 28. Что делать, когда не хватает возможностей демонстрационной версии? Задача 28 Apache.JMeter для .NET-проектов
  • 29. Можно попросить нужную сумму или подумать, изучить, поискать готовое решение Решение 29 Apache.JMeter для .NET-проектов
  • 30. Можно попросить нужную сумму или изобрести что-то новое Запасной вариант 30 Apache.JMeter для .NET-проектов
  • 31. С начала посчитаем деньги 31 Apache.JMeter для .NET-проектов
  • 32. Считаем финансы на 417 (500) VU 32 Apache JMeter Visual Studio Enterprise HP LoadRunner Бесплатно 250 VU на 90 дней – демо 50 VU бесплатно, скидки Бесплатно $2500 - $5999 $150 за VU LR, $212 за VU PC (скидка 50%) Бесплатно* $2500* 500 x $100 = $50000* Стоимость округлена: 0 – 150 000 – 2 900 000 рублей * Плюс: Windows, оборудование, электричество, зарплата Apache.JMeter для .NET-проектов
  • 33. Apache JMeter Visual Studio Enterprise HP LoadRunner Бесплатно $2 500 $50 000 Считаем финансы на 417 (500) VU 33 Apache.JMeter для .NET-проектов
  • 34. Пока покупаются лицензии, можно успеть переписать тест, протестировать и написать отчёт Ждать – долго и дорого 34 Apache.JMeter для .NET-проектов
  • 35. Первый скрипт и отчёт был сделан за неделю Сделать прототип - быстро 35 Apache.JMeter для .NET-проектов
  • 36. Будем кодить 36 Apache.JMeter для .NET-проектов
  • 37. Расскажу просто и подробно 37 Apache.JMeter для .NET-проектов
  • 38. Apache.JMeter может запустить «внешний» .NET-код в отдельном потоке и отдельном процессе Библиотека или приложение 38 • Вызвать .NET из Java • Имперсонализация потоков - • Меньше ресурсов, высокая нагрузка+ • Нужно много CPU и памяти для работы- • Простота разработки+ Apache.JMeter для .NET-проектов
  • 39. .NET-метод возвращает в Java массив со статистикой выполнения методов. Способ реализации: Библиотека 39 JMeter • Создаёт потоки в Ultimate Thread Group • Ограничивает интенсивность выполнения операций JSR-223 Sampler • Вызывает Java-метод, вызывающий .NET-метод • Метод возвращает массив со статистикой выполнения JSR-223 Post Processor • Получает массив со статистикой выполнения • Через JMeter API формирует статистику JMeter Apache.JMeter для .NET-проектов
  • 40. Вызвать метод библиотеки в JMeter почти также просто. Но библиотека должна быть на Java JSR-223 Sampler 40 Apache.JMeter для .NET-проектов
  • 41. Test Plan – основные параметры и загрузка библиотек Настройки и параметры 41 Apache.JMeter для .NET-проектов
  • 42. setUp Thread Group/JSR223 Sampler – инициализация jni4net Инициализация 42 Apache.JMeter для .NET-проектов
  • 43. jp@gc - Ultimate Thread Group/JSR223 Sampler – передача параметров и запуск сценариев Запуск .NET-сценария 43 Apache.JMeter для .NET-проектов
  • 44. JSR223 PostProcessor – обработка результатов Приём результатов работы 44 Apache.JMeter для .NET-проектов
  • 45. Нужна имперсонализация потоков для Windows-аутентификации, что не всегда работает для COM+/DCOM сервисов. Ограничение 45 Apache.JMeter для .NET-проектов
  • 46. Библиотека требует меньше ресурсов, и этот способ работает Библиотека – оптимальный выбор 46 Apache.JMeter для .NET-проектов
  • 47. ● Обращаться к WCF-сервису будем из .NET-клиента ● Сценарий теста реализуется и выполняется на .NET ● Инструменты jni4net создадут Java-класс поверх .NET ● Apache JMeter будет вызывать Java-методы через ● JSR-223 Sampler ● Из .NET в Java передаются финальные результаты – нет накладных расходов при выполнении сценария DCOM и WCF из Apache JMeter 47 Apache.JMeter для .NET-проектов
  • 48. Enterprise приложения имеют хорошо документированные клиентские библиотеки для работы с серверной частью Модульные приложения 48 Apache.JMeter для .NET-проектов
  • 49. jni4net: java native interface for .net 49 Запуск java- обёрток над .NET кодом: jni4net Нужны простые публичные методы .NET-класса Без events, out параметров, шаблонов, params Свойства должны иметь методы get и set Apache.JMeter для .NET-проектов
  • 50. .NET-класс, сценарий работы 50 Apache.JMeter для .NET-проектов
  • 51. .NET-класс, сценарий работы 51 Apache.JMeter для .NET-проектов
  • 52. Java-класс обёртка (jni4net) 52 Apache.JMeter для .NET-проектов
  • 53. Java-класс обёртка (jni4net) 53 Apache.JMeter для .NET-проектов
  • 54. Текст скрипта можно вставить в проект HP LoadRunner .NET, и проект заработает без ошибок. Структура кода из HP LoadRunner 54 Apache.JMeter для .NET-проектов
  • 55. Работа с транзакциями: ● start(string transactionLabel) ● end() ● start_transaction(string transactionLabel) ● end_transaction(string transactionLabel, int code) ● exit(int exitCode, int continueCode) Работа с логированием: ● log_message(string message) ● error_message(string message) Работа с user data point: ● user_data_point(string dataPointName, int value) ● user_data_point(string dataPointName, double value) Реализация методов LR API 55 Apache.JMeter для .NET-проектов
  • 56. Работа с транзакциями: ● start(string transactionLabel) ● end() ● start_transaction(string transactionLabel) ● end_transaction(string transactionLabel, int code) ● exit(int exitCode, int continueCode) Работа с логированием: ● log_message(string message) ● error_message(string message) Работа с user data point: ● user_data_point(string dataPointName, int value) ● user_data_point(string dataPointName, double value) Реализация методов LR API 56 Apache.JMeter для .NET-проектов
  • 57. Работа с транзакциями: ● start(string transactionLabel) ● end() ● start_transaction(string transactionLabel) ● end_transaction(string transactionLabel, int code) ● exit(int exitCode, int continueCode) Работа с логированием: ● log_message(string message) ● error_message(string message) Работа с user data point: ● user_data_point(string dataPointName, int value) ● user_data_point(string dataPointName, double value) Реализация методов LR API 57 Apache.JMeter для .NET-проектов
  • 58. Работа с транзакциями: ● start(string transactionLabel) ● end() ● start_transaction(string transactionLabel) ● end_transaction(string transactionLabel, int code) ● exit(int exitCode, int continueCode) Работа с логированием: ● log_message(string message) ● error_message(string message) Работа с user data point: ● user_data_point(string dataPointName, int value) ● user_data_point(string dataPointName, double value) Реализация методов LR API 58 Apache.JMeter для .NET-проектов
  • 59. Подключение: ● connect(string servername, int portnum, ConnectionOptions options) Получение значения без удаления: ● rotate_message(string columnName, SendRow sendFlag) Отключение: ● disconnect() https://github.com/pflb/LoadRunner.VTS.Client Реализация методов VTS API (C#) 59 Apache.JMeter для .NET-проектов
  • 60. Скрипт пишется, как для HP LoadRunner .NET, пишется в Visual Studio Community, а исполняется в Apache JMeter Три богатыря 60 Apache.JMeter для .NET-проектов
  • 61. Нагрузить .NET недорого Три богатыря 61 Apache.JMeter для .NET-проектов
  • 63. Спасибо 63 Apache.JMeter для .NET-проектов
  • 64. Вопросы/ответы 64 Apache.JMeter для .NET-проектов Расширение списка поддерживаемых протоколов и библиотек в JMeter с помощью .NET Framework Смирнов Вячеслав Александрович Перфоманс Лаб v.smirnov@pflb.ru https://github.com/pflb