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

SQALab
SQALabSQALab
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
1 of 64

Recommended

Как hh.ru дошли до 500 релизов в квартал без потери в качестве by
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
722 views63 slides
Оптимизация Selenium тестов и ускорение их поддержки by
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
1.2K views36 slides
Добиваемся эффективности каждого из 9000+ UI-тестов by
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
580 views41 slides
Делаем автоматизацию проектных KPIs by
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
361 views19 slides
WPF Automation – test injection approach to application testing by
WPF Automation – test injection approach to application testingWPF Automation – test injection approach to application testing
WPF Automation – test injection approach to application testingSQALab
1.2K views41 slides
Тестирование доступности ПО для людей с ограниченными возможностями by
Тестирование доступности ПО для людей с ограниченными возможностямиТестирование доступности ПО для людей с ограниченными возможностями
Тестирование доступности ПО для людей с ограниченными возможностямиSQALab
1.2K views20 slides

More Related Content

What's hot

Тестирование слоёного пирога by
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирогаSQALab
1.2K views27 slides
Enter: testing by
Enter: testingEnter: testing
Enter: testingKamil Samigullin
321 views29 slides
Mva stf module 1 - rus by
Mva stf module 1 - rusMva stf module 1 - rus
Mva stf module 1 - rusMaxim Shaptala
712 views25 slides
Андрей Лазарев “Архітектура тестування Enterprise Web додатків” by
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Dakiry
115 views12 slides
Test link introduction by
Test link introductionTest link introduction
Test link introductionKateryna Nesmyelova
1.6K views33 slides
TestLink by
TestLinkTestLink
TestLinkISsoft
5.6K views30 slides

What's hot(20)

Тестирование слоёного пирога by SQALab
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирога
SQALab1.2K views
Андрей Лазарев “Архітектура тестування Enterprise Web додатків” by Dakiry
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Андрей Лазарев “Архітектура тестування Enterprise Web додатків”
Dakiry115 views
TestLink by ISsoft
TestLinkTestLink
TestLink
ISsoft5.6K views
Report Portal - эффективность вашей автоматизации by SQALab
Report Portal - эффективность вашей автоматизацииReport Portal - эффективность вашей автоматизации
Report Portal - эффективность вашей автоматизации
SQALab4.7K views
Процесс тестирования в условиях неявных требований by COMAQA.BY
Процесс тестирования в условиях неявных требований Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований
COMAQA.BY 759 views
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать by SQALab
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежатьОшибки начинающего специалиста по нагрузочному тестированию и как их избежать
Ошибки начинающего специалиста по нагрузочному тестированию и как их избежать
SQALab1.4K views
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops by QAFest
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QAFest1.6K views
Петр Клименко. DevOps Трансформация для SIEBEL CRM by ScrumTrek
Петр Клименко. DevOps Трансформация для SIEBEL CRMПетр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRM
ScrumTrek475 views
10 принципов автоматизации, которые я не предам by SQALab
10 принципов автоматизации, которые я не предам10 принципов автоматизации, которые я не предам
10 принципов автоматизации, которые я не предам
SQALab3.4K views
Quality Assurance vs Quality Control - так в чем же заключается работа специа... by COMAQA.BY
Quality Assurance vs Quality Control - так в чем же заключается работа специа...Quality Assurance vs Quality Control - так в чем же заключается работа специа...
Quality Assurance vs Quality Control - так в чем же заключается работа специа...
COMAQA.BY 4K views
DevOps для Legacy-продуктов by ScrumTrek
DevOps для Legacy-продуктовDevOps для Legacy-продуктов
DevOps для Legacy-продуктов
ScrumTrek224 views
Эволюция нагрузочного тестирования – от простой автоматизации до BDD by CEE-SEC(R)
Эволюция нагрузочного тестирования – от простой автоматизации до BDDЭволюция нагрузочного тестирования – от простой автоматизации до BDD
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
CEE-SEC(R)1.6K views
Контроль качества с использованием продуктов Ibm rational by Alexander Novichkov
Контроль качества с использованием продуктов Ibm rationalКонтроль качества с использованием продуктов Ibm rational
Контроль качества с использованием продуктов Ibm rational
Jubula – TDD UI QA Automation Tool by COMAQA.BY
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation Tool
COMAQA.BY 726 views
Повышение качества тестов и автоматическая валидация REST API документации by CEE-SEC(R)
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
CEE-SEC(R)1.5K views
Новый процесс тестирования на "старом" проекте by SQALab
Новый процесс тестирования на "старом" проектеНовый процесс тестирования на "старом" проекте
Новый процесс тестирования на "старом" проекте
SQALab944 views
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров... by QAFest
QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...QA Fest 2016. Дмитрий Химион.  Векторы развития систем автоматизации тестиров...
QA Fest 2016. Дмитрий Химион. Векторы развития систем автоматизации тестиров...
QAFest1.1K views

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

Вячеслав Смирнов - Инструменты нагрузочного тестирования by
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияElias Fofanov
246 views42 slides
Middleware by
MiddlewareMiddleware
Middlewaremegakott
1.5K views34 slides
Машинное обучение с MATLAB by
Машинное обучение с MATLABМашинное обучение с MATLAB
Машинное обучение с MATLABMATLAB
204 views12 slides
Экспорт алгоритмов и создание независимых приложений by
Экспорт алгоритмов и создание независимых приложенийЭкспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложенийMATLAB
1.6K views12 slides
развертывание среды Rails (антон веснин, Locum Ru) by
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
2.6K views37 slides
антон веснин Rails Application Servers by
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
404 views37 slides

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

Вячеслав Смирнов - Инструменты нагрузочного тестирования by Elias Fofanov
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Elias Fofanov246 views
Middleware by megakott
MiddlewareMiddleware
Middleware
megakott1.5K views
Машинное обучение с MATLAB by MATLAB
Машинное обучение с MATLABМашинное обучение с MATLAB
Машинное обучение с MATLAB
MATLAB204 views
Экспорт алгоритмов и создание независимых приложений by MATLAB
Экспорт алгоритмов и создание независимых приложенийЭкспорт алгоритмов и создание независимых приложений
Экспорт алгоритмов и создание независимых приложений
MATLAB1.6K views
развертывание среды Rails (антон веснин, Locum Ru) by guest40e031
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
guest40e0312.6K views
антон веснин Rails Application Servers by rit2010
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
rit2010404 views
Open Source Testing Framework: real project example and best practices by Aliaksandr Ikhelis
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
Aliaksandr Ikhelis705 views
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов by SQALab
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
SQALab602 views
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож... by Ilya Kaznacheev
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Ilya Kaznacheev475 views
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework) by Pavel Tsukanov
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Pavel Tsukanov13.1K views
Internet explorer 9 для разработчиков by Roman Kalita
Internet explorer 9 для разработчиковInternet explorer 9 для разработчиков
Internet explorer 9 для разработчиков
Roman Kalita349 views
Отладка и оптимизация многопоточных OpenMP-программ by Tatyanazaxarova
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
Tatyanazaxarova362 views
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014 by Artsofte IT company
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
презентация Адеев Николай, Artsofte для Tеlecom&Clouds 2014
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср... by SQALab
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
SQALab1.1K views
Леонид Васильев "Python в инфраструктуре поиска" by Yandex
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
Yandex608 views
Андрей Завадский "Бессерверная архитектура" by Fwdays
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
Fwdays730 views
Компиляция скриптов PHP (Алексей Романенко) by Ontico
Компиляция скриптов PHP (Алексей Романенко)Компиляция скриптов PHP (Алексей Романенко)
Компиляция скриптов PHP (Алексей Романенко)
Ontico23.6K views
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2... by it-people
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
Нагрузочное тестирование с помощью Яндекс.Танк - Алексей Лавренюк, PyCon RU 2...
it-people1.3K views

More from SQALab

Готовим стажировку by
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
2.6K views18 slides
Куда приводят мечты? или Искусство развития тестировщика by
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
1.7K views16 slides
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования by
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
774 views21 slides
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J... by
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
800 views18 slides
Continuous performance testing by
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
645 views23 slides
Конфиги вместо костылей. Pytestconfig и зачем он нужен by
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
717 views94 slides

More from SQALab(20)

Готовим стажировку by SQALab
Готовим стажировкуГотовим стажировку
Готовим стажировку
SQALab2.6K views
Куда приводят мечты? или Искусство развития тестировщика by SQALab
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
SQALab1.7K views
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования by SQALab
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
SQALab774 views
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J... by SQALab
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
SQALab800 views
Continuous performance testing by SQALab
Continuous performance testingContinuous performance testing
Continuous performance testing
SQALab645 views
Конфиги вместо костылей. Pytestconfig и зачем он нужен by SQALab
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
SQALab717 views
Команда чемпионов в ИТ стихии by SQALab
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
SQALab727 views
API. Серебряная пуля в магазине советов by SQALab
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
SQALab539 views
Вредные привычки в тест-менеджменте by SQALab
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
SQALab655 views
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации by SQALab
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
SQALab453 views
Стили лидерства и тестирование by SQALab
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
SQALab463 views
"Давайте не будем про качество" by SQALab
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
SQALab543 views
Тестирование геолокационных систем by SQALab
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
SQALab340 views
Лидер или босс? Вот в чем вопрос by SQALab
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
SQALab600 views
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут... by SQALab
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
SQALab1.6K views
Истинная сила тестировщика - информация by SQALab
Истинная сила тестировщика - информацияИстинная сила тестировщика - информация
Истинная сила тестировщика - информация
SQALab1.7K views
Автоматизация тестирования встроенного ПО by SQALab
Автоматизация тестирования встроенного ПОАвтоматизация тестирования встроенного ПО
Автоматизация тестирования встроенного ПО
SQALab479 views
Правильный подход к составлению профиля нагрузочного тестирования by SQALab
Правильный подход к составлению профиля нагрузочного тестированияПравильный подход к составлению профиля нагрузочного тестирования
Правильный подход к составлению профиля нагрузочного тестирования
SQALab1.7K views
Sustainable Test Automation: Collaborate within Team by SQALab
Sustainable Test Automation: Collaborate within TeamSustainable Test Automation: Collaborate within Team
Sustainable Test Automation: Collaborate within Team
SQALab215 views
Test Data Preparation: Tips and Tricks by SQALab
Test Data Preparation: Tips and TricksTest Data Preparation: Tips and Tricks
Test Data Preparation: Tips and Tricks
SQALab368 views

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