Building Open Source Test Automation Frameworks. Watir based automation case ...Aliaksandr Ikhelis
Summary: Presentation on open source testing frameworks at SQA Days 2008 conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
Building Open Source Test Automation Frameworks. Watir based automation case ...Aliaksandr Ikhelis
Summary: Presentation on open source testing frameworks at SQA Days 2008 conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
Григорий Липин: Автоматизация нагрузочного тестированияYandex
Доклад посвящен нагрузочному тестированию. Мы поделимся своим опытом и расскажем, как автоматизировать нагрузочное тестирование с помощью инструмента Яндекс.Танк.
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
Так как я работаю в позиции SRE (site reliability engineer), то более подробно затрону вопросы того, как мы добились годового durability 99.9999999999% и доступности более 99.99%:
- Изоляция
-- Физическая
--- Хранение данных в разных стойках, датацентрах, с разными версиями оборудования и вендорами.
--- Бэкапы вне основной инфраструктуры.
-- Логическая
--- Слабая связанность компонентов.
--- Не давать падению одного мастера (в зукипере или базе) утащить за собой всю зону.
-- Операционная
--- Процесс релиза.
--- Инструменты деплоя, сборки, хелзчекинга и т.д.
--- Контроль доступа.
- Защита данных
-- Восстановление
--- Восстановление после опасных операций (удаление).
-- Охрана данных и валидация операций
----в том числе от операторов.
- Контроль
-- Все совершают ошибки, нужно уметь детектировать их.
-- Метрики, SRE, OnCall.
-- Различные системы детектирование проблем, не связанные между собой, на каждом уровне систем (хост, кластер, ячейка, дата центр, внешние).
-- Тестирование
--- Disaster recovery testing.
- Автоматизация
-- Быстрое восстановление.
-- Быстрая реакция на события (нет времени реагировать вручную).
-- (introduce autoremedeation systems).
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
«Одноклассники» состоят из тысяч серверов, большая часть которых участвует в онлайн-обработке запросов пользователей. Каждый из этих серверов владеет только частью данных или логики. Эти части в социальной сети изолировать друг от друга невозможно, поэтому между серверами происходит много сетевого взаимодействия — разнообразного и большого по объему. Таким образом, Одноклассники — это одна из самых больших, сложных и нагруженных распределенных систем в мире.
В этом докладе Олег расскажет об опыте построения отказоустойчивых распределенных систем на Java, основных ошибках и отказах, приемах их тестирования и диагностики. Также речь пойдет об авариях в распределенных системах и методах их предупреждения.
Field injection, type safe configuration, and more new goodies in Declarative...bjhargrave
In the recently published Release 6 specifications, OSGi provides a significant update to the already awesome Declarative Services (DS) specification. DS is _the_ way to write and use OSGi services since it handles the details and lets you, the developer, declare what you want. The DS 1.3 specification in Release 6 includes a number of new features to make using DS even better. This talk will go over the new features to help you better understand how to use them in your bundles.
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...mfrancis
OSGi Community Event 2016 Presentation by Neil Bartlett (Paremus)
REST microservices are a powerful tool for composing large-scale systems, and the standalone nature of a microservice helps to avoid it becoming part of a “big ball of mud” application. Given the power and success of microservices as inter-process modules, why stop there? OSGi has offered in-process microservices for nearly two decades, and uses them to great effect in modular applications.
The new OSGi JAX-RS whiteboard service allows dynamic OSGi services to be automatically exported as JAX-RS Resources, Filters or Applications. These “Microservice modules” can be easily shared or moved between frameworks, allowing you to benefit from a microservice structure that goes all the way down.
Background
Over the last decade there has been a significant shift in the way that many computer programs are written. The focus has changed from building larger, more monolithic applications that provide a single high-level function, to composing these high-level behaviours from groups of smaller, distributed services. This is generally known as a “microservice” architecture, indicating that the services are smaller and lighter weight than typical web services.
The standard for REST microservices in Java is known as JAX-RS. JAX-RS provides a simple annotation-based model in which POJOs can have their methods mapped to RESTful service invocations. There is automatic mapping of HTTP parameters, and of the HTTP response, based on the annotations, and the incoming HTTP Headers. JAX-RS also includes support for grouping these POJOs into a single Application artifact. This allows the POJOs to interact with one another, as well as to share configuration and runtime state. When used in JAX-RS these POJOs are known as JAX-RS resources.
Ideal JAX-RS resources are stateless, and are usually instantiated by the container. JAX-RS resources share many features with OSGi services, in that they provide a way for machines (or processes within a machine) to interact with one another through a defined contract. This synergy between JAX-RS resources and OSGi services is the driver for the OSGi JAX-RS whiteboard service, allowing OSGi services to be transparently exposed using JAX-RS.
OSGi toolchain from the ground up - Matteo Rullimfrancis
OSGi Community Event 2016 Presentation by Matteo Rulli (FlairBit)
OSGi learning curve is steep but its benefits widely surpass difficulties: OSGi gives you sensible dependencies management, pluggable extensions mechanisms, strong modularity, out-of-the-box semantic versioning support and strong contract-based software development.
In this talk I’ll describe how to build an effective OSGi toolchain from the ground up: integrate maven and bndtools, set-up a test-driven development workflow on top of OSGi, use maven repositories as a baseline for semantic versioning and leverage bnd remote launcher to effectively debug bundles on remote target runtimes.
Eclipse + Maven + OSGi has never been so easy - Atllia Kissmfrancis
OSGi Community Event 2016 Presentation by Atllia Kiss (Everit Kft.)
This talk outlines the ease of use of OSGi in application code and shows how to master development tasks by using the right APIs and tools. Learn about the latest in component development, asynchronous processing, configuration management and deploying your application code in larger modules, so-called subsystems. A subsystem allows to package a set of bundles and configurations. The subsystem can run isolated from other bundles or other applications.
Learn how to leverage the latest OSGi tech for your own projects. All of the functionality discussed is available as open source.
Moved to https://slidr.io/azzazzel/software-craftsmanship-in-the-era-of-softw...Milen Dyankov
This slide deck will be removed from here in the future. It has been moved to : https://slidr.io/azzazzel/software-craftsmanship-in-the-era-of-software-revolution
WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchevmfrancis
OSGi Community Event 2016 Presentation by Nedelcho Delchev (SAP)
How to use WebSockets, coming as a standard feature with the modern Servlet Containers (e.g. Tomcat 7.x) from within the embedded Equinox OSGi environment deployed as a WAR application archive?
This talk will explain in details how to configure the classloaders and dependencies as well as how to create a websocket bridge for the internal OSGi plugins.
Григорий Липин: Автоматизация нагрузочного тестированияYandex
Доклад посвящен нагрузочному тестированию. Мы поделимся своим опытом и расскажем, как автоматизировать нагрузочное тестирование с помощью инструмента Яндекс.Танк.
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...Ontico
Так как я работаю в позиции SRE (site reliability engineer), то более подробно затрону вопросы того, как мы добились годового durability 99.9999999999% и доступности более 99.99%:
- Изоляция
-- Физическая
--- Хранение данных в разных стойках, датацентрах, с разными версиями оборудования и вендорами.
--- Бэкапы вне основной инфраструктуры.
-- Логическая
--- Слабая связанность компонентов.
--- Не давать падению одного мастера (в зукипере или базе) утащить за собой всю зону.
-- Операционная
--- Процесс релиза.
--- Инструменты деплоя, сборки, хелзчекинга и т.д.
--- Контроль доступа.
- Защита данных
-- Восстановление
--- Восстановление после опасных операций (удаление).
-- Охрана данных и валидация операций
----в том числе от операторов.
- Контроль
-- Все совершают ошибки, нужно уметь детектировать их.
-- Метрики, SRE, OnCall.
-- Различные системы детектирование проблем, не связанные между собой, на каждом уровне систем (хост, кластер, ячейка, дата центр, внешние).
-- Тестирование
--- Disaster recovery testing.
- Автоматизация
-- Быстрое восстановление.
-- Быстрая реакция на события (нет времени реагировать вручную).
-- (introduce autoremedeation systems).
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
«Одноклассники» состоят из тысяч серверов, большая часть которых участвует в онлайн-обработке запросов пользователей. Каждый из этих серверов владеет только частью данных или логики. Эти части в социальной сети изолировать друг от друга невозможно, поэтому между серверами происходит много сетевого взаимодействия — разнообразного и большого по объему. Таким образом, Одноклассники — это одна из самых больших, сложных и нагруженных распределенных систем в мире.
В этом докладе Олег расскажет об опыте построения отказоустойчивых распределенных систем на Java, основных ошибках и отказах, приемах их тестирования и диагностики. Также речь пойдет об авариях в распределенных системах и методах их предупреждения.
Field injection, type safe configuration, and more new goodies in Declarative...bjhargrave
In the recently published Release 6 specifications, OSGi provides a significant update to the already awesome Declarative Services (DS) specification. DS is _the_ way to write and use OSGi services since it handles the details and lets you, the developer, declare what you want. The DS 1.3 specification in Release 6 includes a number of new features to make using DS even better. This talk will go over the new features to help you better understand how to use them in your bundles.
Dynamically assembled REST Microservices using JAX-RS and... Microservices? -...mfrancis
OSGi Community Event 2016 Presentation by Neil Bartlett (Paremus)
REST microservices are a powerful tool for composing large-scale systems, and the standalone nature of a microservice helps to avoid it becoming part of a “big ball of mud” application. Given the power and success of microservices as inter-process modules, why stop there? OSGi has offered in-process microservices for nearly two decades, and uses them to great effect in modular applications.
The new OSGi JAX-RS whiteboard service allows dynamic OSGi services to be automatically exported as JAX-RS Resources, Filters or Applications. These “Microservice modules” can be easily shared or moved between frameworks, allowing you to benefit from a microservice structure that goes all the way down.
Background
Over the last decade there has been a significant shift in the way that many computer programs are written. The focus has changed from building larger, more monolithic applications that provide a single high-level function, to composing these high-level behaviours from groups of smaller, distributed services. This is generally known as a “microservice” architecture, indicating that the services are smaller and lighter weight than typical web services.
The standard for REST microservices in Java is known as JAX-RS. JAX-RS provides a simple annotation-based model in which POJOs can have their methods mapped to RESTful service invocations. There is automatic mapping of HTTP parameters, and of the HTTP response, based on the annotations, and the incoming HTTP Headers. JAX-RS also includes support for grouping these POJOs into a single Application artifact. This allows the POJOs to interact with one another, as well as to share configuration and runtime state. When used in JAX-RS these POJOs are known as JAX-RS resources.
Ideal JAX-RS resources are stateless, and are usually instantiated by the container. JAX-RS resources share many features with OSGi services, in that they provide a way for machines (or processes within a machine) to interact with one another through a defined contract. This synergy between JAX-RS resources and OSGi services is the driver for the OSGi JAX-RS whiteboard service, allowing OSGi services to be transparently exposed using JAX-RS.
OSGi toolchain from the ground up - Matteo Rullimfrancis
OSGi Community Event 2016 Presentation by Matteo Rulli (FlairBit)
OSGi learning curve is steep but its benefits widely surpass difficulties: OSGi gives you sensible dependencies management, pluggable extensions mechanisms, strong modularity, out-of-the-box semantic versioning support and strong contract-based software development.
In this talk I’ll describe how to build an effective OSGi toolchain from the ground up: integrate maven and bndtools, set-up a test-driven development workflow on top of OSGi, use maven repositories as a baseline for semantic versioning and leverage bnd remote launcher to effectively debug bundles on remote target runtimes.
Eclipse + Maven + OSGi has never been so easy - Atllia Kissmfrancis
OSGi Community Event 2016 Presentation by Atllia Kiss (Everit Kft.)
This talk outlines the ease of use of OSGi in application code and shows how to master development tasks by using the right APIs and tools. Learn about the latest in component development, asynchronous processing, configuration management and deploying your application code in larger modules, so-called subsystems. A subsystem allows to package a set of bundles and configurations. The subsystem can run isolated from other bundles or other applications.
Learn how to leverage the latest OSGi tech for your own projects. All of the functionality discussed is available as open source.
Moved to https://slidr.io/azzazzel/software-craftsmanship-in-the-era-of-softw...Milen Dyankov
This slide deck will be removed from here in the future. It has been moved to : https://slidr.io/azzazzel/software-craftsmanship-in-the-era-of-software-revolution
WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchevmfrancis
OSGi Community Event 2016 Presentation by Nedelcho Delchev (SAP)
How to use WebSockets, coming as a standard feature with the modern Servlet Containers (e.g. Tomcat 7.x) from within the embedded Equinox OSGi environment deployed as a WAR application archive?
This talk will explain in details how to configure the classloaders and dependencies as well as how to create a websocket bridge for the internal OSGi plugins.
OSGi Community Event 2016 Presentation by Paul Fraser (A2Z Living Pty. Ltd.)
This talk will explain to java developers not yet using OSGi, how they can produce output with little knowledge of the underlying technology.
A helicopter view of the OSGi enRoute methodology will be explained with a demonstration of the simplicity of bringing non OSGi code into the brilliant enRoute environment.
The src from ImageJ, a non OSGi image processing codebase, will be brought into an enRoute setup consisting of an API bundle, a provider bundle and a command bundle.
The purpose of the command bundle is to tryout and debug the services exposed in the api. The ease of use of the command bundle will be demonstrated.
A developer having experienced a quick result using enRoute will be more relaxed and enthusiastic when learning the nitty gritty of the underlying tools and methods used when working with OSGi.
With this top down approach to using OSGi, developers will understand why they should be using OSGi and OSGi enRoute.
Since the 1960s the industry has been rediscovering the benefits of modularity. Modularity comes in many different guises, from small software objects to deployed systems. Although many approaches to modularity exhibit common characteristics, a number also have unique benefits. This talk will introduce the concepts of modularity, Microservices and OSGi, and compare Microservices and OSGi against a Modularity Maturity Model (a measure of modularity capability and completeness). It will describe how the similarity in characteristics between Microservices and OSGi make these technologies an ideal pairing. Finally, it will cover some of the standard technologies to choose for OSGi technology-based Microservices and new technologies on the horizon.
Dockerizing apps for the Deployment Platform of the Month with OSGi - David B...mfrancis
OSGi Community Event 2016 Presentation by David Bosschaert (Adobe) & Carsten Ziegeler (Adobe)
Docker is enjoying immense popularity today for deployment of nearly any type of app and new platforms that support Docker appear on a regular basis. While supporting Docker natively, many platforms have specific APIs to get them to work. As a dev you don’t want to lock yourself in to any of these. You want to keep the option open to switch to target platforms if the need arises. This talk outlines the OSGi Compute Management Service RFP 179 that abstracts over mechanisms to create and launch container nodes. It shows a system that allows you to swap Docker deployment platforms without the need to change your deployment management code. We’ll also talk about how OSGi Cloud Ecosystems RFC 183 can be used in this context for discovery of services, containers and frameworks.
Use Case: Building OSGi Enterprise Applications (QCon 14)Carsten Ziegeler
Use Case presentation from QCon 14. It presents the migration of Adobe's Experience Manager (formerly Communique) to OSGi. Common pitfalls and solutions are presented based on open source solutions from the Apache Software Foundation
Нагрузочное тестирование API. Как летать, а не ползать?IT61
Вячеслав Марков, инженер по автоматизированному тестированию в Distillery, расскажет об особенностях нагрузочного тестирования REST API с помощью JMeter.
Вот что пишет Вячеслав: "Вместе со слушателями постараемся разобраться, каким аспектам нагрузочного тестирования стоит уделить наибольшее внимание. Порассуждаем о том, как составить реалистичный тестовый сценарий и выясним, чем же так хорош JMeter. В заключении уделим немного внимания стресс-тестированию."
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
Вячеслав Марков, QA engineer в Weezlabs
Я расскажу о том, как в нашей фирме организовано тестирование бэкенда с помощью тестового фреймворка TestNG и Java. Расскажу о data-driven тестировании и о том, почему его удобно применять. Покажу и опишу разработанную нами структуру типового тестового проекта. Представлю применяемые нами способы сбора и документирования результатов, а так же их анализ в условиях CI.
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
Доклад посвящен вопросам создания и использования собственной системы управления процессами сборки и тестирования ПО. Описываются ключевые моменты построения таких систем, в частности: вопросы интерфейсов, быстродействия, качества и интеграции в общую инфраструктуру. Затрагиваются концепции встраивания качества в код, сбора и использования метрик ПО, неотделимости сборки от тестирования, автоматизированного ведения базы знаний об ошибках и другие.
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
Александр Петренко, ИСП РАН
Профессор, доктор физико-математических наук, заведующий отделом технологий программирования Института системного программирования (ИСП РАН), профессор ВМК МГУ. Основные работы в областях: формализация требований, генерация тестов на основе формализованных требований и формальных моделей (model based testing – MBT). Приложения: тестирование операционных систем и распределенных систем, тестирование компиляторов, верификация дизайна микропроцессоров, формализация стандартов на API операционных систем и телекоммуникационных протоколов. Сопредседатель оргкомитетов International MBT workshop (http://www.mbrworkshop.org/), Spring Young Researcher Colloquium on Software Engineering – SYRCoSE (http://syrocose.ispras.ru), городского семинара по технологиям разработки и анализа программ ТРАП/SDAT (http://sdat.ispras.ru/).
Тема доклада
Модели в профессиональной инженерии и тестировании программ.
Тезисы
Model Based Software Engineering (MBSE) является расширением подхода к разработке программ на основе моделей. В MBSE в отличие, например, от MDA (Model Driver Architecture) существенное внимание уделяется не только задачам собственно проектирования и разработки кода, но и задачам других фаз жизненного цикла – анализу требований, верификации и валидации, управлению требованиями на всех фазах жизненного цикла. Model Based Testing (MBT) хронологически возник гораздо раньше, чем MBSE и MDA, однако его место в разработке программ в полной мере раскрылось вместе с развитием MBSE. По этой причине MBT и MBSE следует рассматривать в тесной связке. В докладе будут рассмотрены концепции MBSE-MDA-MBT, основные источники и виды моделей, которые используются в этих подходах, методы генерации тестов на основе моделей, известные инструменты для
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...Timur Shemsedinov
Примеры кода приложений и конфигурации сервера с доступом к файлам, памяти, базам данных и параллельной асинхронной обработкой различных типов API запросов с состоянием и без состояния.
Как оценивать состояние проекта по разработке с помощью формальных метрик и о...Dmitry Andreev
Можете ли вы завтра утром в 8:05 положить на стол руководства детальный отчет по прогрессу разрабатываемой системы, количестве ошибок в разрезе подсистем и требований, качестве юнит-тестов, скорости внесения изменений в код и возникновения ошибок? Можете ли вы с помощью средств аналитики оценить узкие места проекта, например, ответив на вопрос «какая подсистема имеет самое большое количество вновь возникающих ошибок»? Если вы хотите узнать, как это сделать то приходите на доклад о возможностях подсистем отчетности Visual Studio Team System 2010. В докладе будут рассмотрены подходы по созданию формальной системы метрик, индикаторов, отчетов для оценки прогресса и состояния проекта по разработке программного обеспечения.
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Компонентная среда разработки инструментария нагрузочного тестирования
1. Компонентная среда разработки инструментария нагрузочного тестирования Евгений Рачинский. СПбГУ в сотрудничестве с Siemens Corporate Technology СПбГУ
2.
3.
4. Типовая архитектура Load Control Measurements Input Output Monitoring Load injectors Controller Analysis Scenario definition Workload definition SUT
5.
6.
7. Сценарий (пример) public class Service1Scenario extends WebScenario { Transaction1 transaction1 = new Transaction1(); Transaction2 transaction2 = new Transaction2(); public void run() { runTransaction( transaction1 ); sleep(1000); runTransaction( transaction2 ); } } public class Transaction1 extends WebTransaction { Request1 request1 = new Request1(); public void run() { runRequest( request1 ); } } public class Request1 extends WebRequest { public void run() { HttpResponse response = null ; response = getContext(). getClient().execute( url ); } }
8.
9. Определение нагрузки (пример) int maximumVirtualUsers = 15; int incrementInterval = 60; int incrementVirtaulUsersBy = 1; public IThinkTime getThinkTimeOnTime( long time) { return new ConstantThinkTime(1000); } public int getVirtualUserNumberOnTime( long time) { int vu = Math. min ( maximumVirtualUsers, ( int )((time/incrementInterval)+1)*incrementVirtaulUsersBy ); return vu; } int Amplitude = 5; //virtual users double Frequency = 1/60; //virtual users per second int VerticalShift = 10; //oscillate around public IThinkTime getThinkTimeOnTime( long time) { return new ExponentialThinkTime(1000); } public int getVirtualUserNumberOnTime( long time) { return ( int )(VerticalShift + Amplitude*Math. sin (Frequency*time)); }
10.
11.
12.
13. Компоненты платформы Scenario Workload Statistics filters definition Network protocol libraries Log format definition T est artifacts (OSGi bundles ) Remote deploy Legend : Platform Service Deployable component Agent container Scenario manager Virtual users manager Statistics service Log service Experiment session Service Controller container Workload manager Experiment workflow Remote agent management Run time statistics processing Results Repository
22. Тестирование производительности распределенных систем Web server Application Server Application Server Database Authentication Service LDAP Tickets Reservation Service Доступно для тестирования под нагрузкой Недоступно для тестирования под нагрузкой
Уважаемые участники конференции, хочу попредведствовать вас и представиться. Меня зовут Евгений Рачинский. Последние четыре года я работаю аналитиком по вопросам инженерии производительности в компании Siemens в городе Мюнхене. Одновременно с этим Я работаю над диссертацией псвященной методам тестирования производительности клиент серверных систем. Отдел в котором я работю занимается консультациямивнутренних заказчиков, а так же занимается исследовательской Деятельностью.
Сначала немного о производительности в целом. Воо бще вопросы производительноти были поднеяты достаточно Давно. В телекоме анализ и планирования производительности хорошо развиты уже напротяжении нескольких десятков Лет. Во всем виноват обычный телефон, в начале 20 ого века встал вопрос как заранее узнать сколько абонентов Сможет одновременно обработать станция и сколько в среднем придется ждать соединения. Математическая теория была разработана Агнером Эрлангом и называется теорией массового обслуживания. Поискав в интернете по клчючевым вопросам производительность Вы скорее в сего попадете на страницы по теории СМО. Для не подготовленного человека будет не просто понять как это Приложить в повседневной разработке ПО. Да и для подготовленного это не простая задача требующая серьезного опыта. Да простят меня математики, но наиболее популярные методы в повседневной разработке это профилирование и нагрузочной тестирование. В профилировании изучается время выполнения отдельных участков кода, а так же синхронизация и взаимодействие потоков. В Случае же нагрузочного тестирования нас интересует как ведет себя система (и ее компоненты) обслуживая много пользователей. Итак Тепрель про слайды Вообще в программной инженении термин Производительность и анализ производительности весьма универсален и применяется ко многим вещам, хотя у всех Этих вещей есть общее – время. Производительность это время! Среди этих вещей можно Выделить аналитической моделирование (сети очередей и симуляция), профилирование, проблемы синхронизации распределенных процессов, Так же сюда относят надежность систем.
По этому вопросу можно долго рассуждать и спорить, но в целом я бы охарактеризовал Существующие средства как мотолитные продукты. Эти средства достаточно четко Указывают как и что нужно делать и соодветственно предоставляют поддержку только для своего КАК. Ну например моделирование нагрузки, в большестве средств предоставляется Довольно ограниченная возможность. Или например интеграция нагрузочного тестирования в ночную сборку. Важный момент! Все определяется в коде! Количество конфигурационных файлов сведено к минимуму. В частности Параметры конкретного теста определены в коде. Конфигурация конкретного теста это набор скомпилированных программных Компонент. Таким образом мы решили создать собственную платформу для разработки таких средств. Платформа реализует общую функциональность для таких тулов, а вот все остальное может разработать Тести инжененр. Наш подход: не просто еще один инсрумент нагрузочного тестирования, а платформа для создания таких инструментов. Таки образом, тест инженер получил возможность подгонять свой инструмент для конкретных нужд. Кочеться еще отдельно сказать об инструменарии на коленке. К сожалению в этой области это опасно. Сам инструмент должен быть выскопроизводительным, иначе он может вностить существенные погрешности в измрения Которые сложно отследить. Помимо прочего данная платформа служит для экспериментов с методиками нагрузочного тестирования и оценки производительности в целом. Про области применения:
Эта высоко уровневая архитектура свойственна для большенства средств нагрузочного тестирования. Наша платформа не исключение. Основные элементы это Контроллер и сеть распределенных Инжегторов, или генераторов или агентов. Контороллер занимается управлением то есть запуском, Котролем и котролем теста, распределенным управлением агентами, мониторингом измерений.
Теперь рассмотрем поподробнее области расширения, то есть те аспекты, в которых требуется Гибкость и адаптивность. Точнее, это те аспекты которые могут варьироваться в зависимости от Тестируемой системы, целей тестирования, процесса тестирования. Сценарий – возможность реализации любой логики поведения польователя Нагрузка - возможность симулировать любые шаблоны нагрузки Протоколы и измерения – использование любых требуемых протоколов коммуникации между LA и SUT Статистика и анализ – применение статистических методов (особенно во время проведения нагрузочного теста) Управление процедурой теста – запуск, контроль, автоматизированный запуск например из ANT скрипта Теперь рассмотрим каждый аспект в отдельности
Почему не деклараьивно : унас добалвяется еще один интерпретатор. Ограниченность, сложные условные переходы требуют сложного интерпретатора. Скриптовый язык Скриптовые языки достаточно медленны . Разрабатывать свой, ЗАчем? ! Все это возможно сделать на Java . Плюсы + любая логика + готовые инструменты для генерации ( eclipse, AST) + простота + готовая среда разработки и отладки Каждый запрос это отдельный класс это существенно облегчает разработку и Упрощает алгоритм генерации из моделей. Помимо всего прочего это служит для Идентификации артефактов сценария. (На монирое исполнения сценария пользователь Однозначно понимает что за объект (идетификация, генерация)) Может быть имплементирована любая пользовательская логика Но пока что все что рассказывал не имеет никакого отношения к производительноти Игде же тут производительность? Это стоит продемонстировать на примере.
Так а где же здесть производительность, пока что подобные сценарии характирны и для Функционального тестирования. Тут без примера сложно обойтись. Некоторые аспекты в примере опущены (например инициализация) Логика RUN Но главное вот оно метод RUN в каждом классе. Он будет измерен . Инструментарий ( ассистирование написание кода, шаблоны )
С точки зрения сервера, нагрузка это частота обращений к нему. Таким образом, нагрузка, на стороне клиента (то есть генератора нагрузки) Представим как можно генерировать нарузку. Несколько готовых потоков, которым мы командуем через промежутки времени старт. Определяется как количество виртуальных пользоватлей и время ожидания между итерациями сценария (или шага или даже запроса). Но для высокой частоты мы получаем проблему синхронизации . Поэтому проще в виде закрытой систымы , когда запросы на выполнение возвращаются в пул. Как это выглядит на практике. Паралельные ряды это Виртуальны пользователи, полоски это время испольнения запроса к серверу включающее все. Промежутки между ними это время обдумывания. Спроецировав начало запросов на единую ось времени мы получим частоту обращений. Она то и будет нагрузкой. Поэтому опредение нагрузки как количество пользователей системы не однозначно (хотя определяет средную нагрузку) Распределение времени обдумывания так же имеет важное значение, при использовании константных Значений поток В кнце хочу отметить, что зачастую под термином нагрузка подразумевается поведение пользователя . В данном докладе Я понимаю под этим термином много пользовательскую нагрузку и все что с этим связано. А определение поведения Пользователя называю сценарием , так как это не имеет прямого отношения к произваодительноти.
Как определяется нагрузка. По сути, это функция от времени , которая принемает значения количество виртуальных Пользоватлей и время обдумывания для всех виртуальных пользователей (точнее говоря распределений вероятностей) Таким образом мы можем задать любую зависимость .
Любой протокол, имеющий клиент c кие Java библиотеки Для каждого запроса регистрируются значения. Тип значений зависит от протокола. Время испольнения это общее что есть у всех протоколов. AspektJ для токо чтобы померить отдельные части времени исполнения запроса в уже скомпилированных библиотеках.
Единичное отдельное измерение нам не интересно. Для этого собираем в статистики, которые статистически характеризуют измеряемые значения. Примеры Представим что мы измеряем среднее время ответа на интервале в 30 сек. Мы берем сумму всех измереий и делим на Количество этих измеренй. И так для каждого интервала в 30 сек. А теперь представми что мы хотим Узнать среднее время ответа на интервале в один час. А у нас только по 30 сек. Что бы посчитать за час, на нужно Всю сумму поделить на общее колво измерений за весь час. Таким образом храним == { сумма зн a чений, интервал времени, количество значений, сумма квадратов значений }
На контроллере мы активно используем Eclipse и OSGi. Расширяемость за счет плагинов. Интеграция с другими средствами нпример PDE , EMF,
Как же все это фунционирует . Big picture . Во первых есть два конейнера : агент и контороллер. Не случайно использую слово конейнер, потому что, по сути это application servers . В коненерах есть сервисы, которые обеспечивают базовае функции для генерации нагрузки , сбора измерений, управление Удалнными агентами и так далее. И на конец есть конкретная конфигурация теста, в виде компоненты OSGi , то есть по сути это jar пакеты \\с мета информацией. Перед началом теста, эти пакеты автоматически деплоятся (инстолируеются на удаленных агентах) Среди них … ТО есть перед тестом конструируется приложение нагрузочного тестирования.