Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days
1. Сложности при распутывании перекрёстных и вложенных зависимостей.
2. Пакетный менеджер CrossPM. Его возможности и примеры использования.
3. Интеграция CrossPM и системы хранения пакетов Artifactory.
Как построить свой фреймворк для автотестов?Dmitry Buzdin
Мы пройдемся по всем основным блокам построения тестового фреймворка и тому, как они связаны между собой. Вы научитесь собирать свое решение по автоматизации из библиотек с открытым кодом и делать так, чтобы они дополняли друг друга.
Владимир Никонов "Вызовы при разработке enterprise продукта"Fwdays
В докладе мы рассмотрим этапы развития приложения, начиная от монолитного Web приложения, до распределенной платформы по управлению бизнес-процессами. Покажем этапы развития, задачи и вызовы, которые возникали на каждом их них. Проанализируем различные аспекты, влияющие на развитие архитектуры, такие как бизнес-требования, технологические тренды и возможные ограничения.
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days
1. VIX API против pysphere.
2. vSphereTools - это набор скриптов от DevOps для поддержки работы с vSphere и виртуальными машинами.
3. Описание инструмента, его достоинства и недостатки, возможные доработки.
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
On this talk, we will share unusual back streets of ASP.NET MVC for increase performance:
- brief review of usual improvements
- fast and strong typed url generation
- increase Razor performance
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
1. Что такое дистрибутив большого продукта?
2. Проблема: знаниями о процессе установки продукта владеет малое число людей.
3. Шаблоны + DSL - решение всех проблем!
При создании интерактивного мобильного или веб-приложений нужна серверная часть, которую будет использовать приложение и разработчик этого приложения. Он должен знать маршруты, по которым можно найти методы, их описание, входные параметры и варианты ответов.
В идеале хочется, чтобы из API можно было мгновенно сгенерировать клиентский код. А ещё реализация метода всегда может измениться, и нужно предусмотреть версионность, чтобы старые клиенты могли продолжать работать без ошибок.
Можно подумать, что реализация этого может занять месяцы, но я покажу, как реализовать это на ASP.NET Core за 20 минут.
Готовим Docker для Автоматизации ТестированияCOMAQA.BY
Docker как технология уже давно и интенсивно используется на некоторых проектах. Этот доклад посвящен вариантам использования Docker-а для автоматизации тестирования на таких проектах, таким как: верификация деплоя микросервисов, построение изолированной среды для тестирования, мониторинг состояния продакшена.
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинPositive Hack Days
1. Проблемы автоматизации классификации слабо формализуемых (нечётких) данных.
2. Нечёткие множества и нечёткие измерительные шкалы.
3. Моделирование нейронной сети для классификации данных.
4. Инструмент FuzzyClassificator и его внедрение в Компании.
5. Автоматизация классификации данных на базе TeamCity.
Docker + Selenium Webdriver в рамках Continuous IntegrationCOMAQA.BY
Автоматизация как сервис включает в себя две основные задачи: написание автотестов и создание инфраструктуры запуска тестов. В данном докладе будет рассмотрено решение второй задачи с использованием Docker.
Docker - лёгкий и юркий родственник виртуальных машин. Представьте, что настроенное окружение для запуска тестов легко упаковать в некий контейнер с сохранением всех зависимостей, а после - продолжить разработку, тестирование и постоянное внедрение в абсолютно другой среде. Docker помогает в решении типичных проблем, возникающих при разворачивании и поддержке Continuous Integration. Использование Docker позволяет избежать системных и языковых конфликтов путём изоляции в контейнеры, запускать больше задач в различных конфигурациях среды. В качестве примера в докладе будет предложено создание конфигурации Docker-контейнера, выполняющего функцию CI для непрерывного запуска тестов, написанных на Selenium WebDriver.
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
HighLoad++ 2017
Зал «Пекин + Шанхай», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2991.html
Нынче стало модно выделять UI-компоненты в отдельную библиотеку и использовать её в нескольких проектах. Мы в команде почты Mail.ru делаем так же, но столкнулись с проблемой: каждый разработчик, меняя библиотеку под свои нужды, обязательно ломает что-нибудь, что работало у других.
Я расскажу о том, как мы решили эту проблему, и о том, какие инструменты для этого можно использовать. Storybook, BackstopJS, Jest, Webdriver.io, TypeScript - в их числе.
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
В своем докладе я расскажу про архитектуру фронтенда (и так называемого миддленда) в ЦИАН: какие задачи перед нами стояли, что мы решили, где мы находимся сейчас и с какими проблемами мы столкнулись.
Доклад представляет собой обзор различных инструментов для тестирования на питоне, которые можно использовать для создания эффективного тестового end-to-end фреймворка на основе selenium webdriver с минимальным количеством заново изобретенных колес. В частности будут рассмотрены такие компоненты архитектуры как обертка вокруг самого драйвера, page object и page elements паттерны, репортинг и соответствующие инструменты, способные с большим или меньшим успехом выполнять роль этих компонентов
Dependency injection with unity 2.0 Dmytro Mindra LohikaAlex Tumanoff
This document discusses dependency injection (DI) and the Unity DI container. It begins with an overview of DI and its benefits for modularity, testability and adaptability. It then provides examples of DI approaches like composition, factories and the DI pattern. The document demonstrates how Unity can be used to configure DI through registration, injection types and lifetime managers. It concludes with some limitations, performance considerations and additional DI frameworks.
This document provides an overview of Platform as a Service (PaaS) options for Java applications, including Amazon Elastic Beanstalk, Red Hat OpenShift, CloudFoundry, and CloudBees. It discusses the benefits of PaaS for quick deployment and hosting of Java applications. It then describes several popular PaaS platforms in more detail, focusing on their features, pricing, and how they compare for Java development.
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days
1. VIX API против pysphere.
2. vSphereTools - это набор скриптов от DevOps для поддержки работы с vSphere и виртуальными машинами.
3. Описание инструмента, его достоинства и недостатки, возможные доработки.
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Fwdays
On this talk, we will share unusual back streets of ASP.NET MVC for increase performance:
- brief review of usual improvements
- fast and strong typed url generation
- increase Razor performance
Инструментарий для создания дистрибутивов продуктов | Владимир СелинPositive Hack Days
1. Что такое дистрибутив большого продукта?
2. Проблема: знаниями о процессе установки продукта владеет малое число людей.
3. Шаблоны + DSL - решение всех проблем!
При создании интерактивного мобильного или веб-приложений нужна серверная часть, которую будет использовать приложение и разработчик этого приложения. Он должен знать маршруты, по которым можно найти методы, их описание, входные параметры и варианты ответов.
В идеале хочется, чтобы из API можно было мгновенно сгенерировать клиентский код. А ещё реализация метода всегда может измениться, и нужно предусмотреть версионность, чтобы старые клиенты могли продолжать работать без ошибок.
Можно подумать, что реализация этого может занять месяцы, но я покажу, как реализовать это на ASP.NET Core за 20 минут.
Готовим Docker для Автоматизации ТестированияCOMAQA.BY
Docker как технология уже давно и интенсивно используется на некоторых проектах. Этот доклад посвящен вариантам использования Docker-а для автоматизации тестирования на таких проектах, таким как: верификация деплоя микросервисов, построение изолированной среды для тестирования, мониторинг состояния продакшена.
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинPositive Hack Days
1. Проблемы автоматизации классификации слабо формализуемых (нечётких) данных.
2. Нечёткие множества и нечёткие измерительные шкалы.
3. Моделирование нейронной сети для классификации данных.
4. Инструмент FuzzyClassificator и его внедрение в Компании.
5. Автоматизация классификации данных на базе TeamCity.
Docker + Selenium Webdriver в рамках Continuous IntegrationCOMAQA.BY
Автоматизация как сервис включает в себя две основные задачи: написание автотестов и создание инфраструктуры запуска тестов. В данном докладе будет рассмотрено решение второй задачи с использованием Docker.
Docker - лёгкий и юркий родственник виртуальных машин. Представьте, что настроенное окружение для запуска тестов легко упаковать в некий контейнер с сохранением всех зависимостей, а после - продолжить разработку, тестирование и постоянное внедрение в абсолютно другой среде. Docker помогает в решении типичных проблем, возникающих при разворачивании и поддержке Continuous Integration. Использование Docker позволяет избежать системных и языковых конфликтов путём изоляции в контейнеры, запускать больше задач в различных конфигурациях среды. В качестве примера в докладе будет предложено создание конфигурации Docker-контейнера, выполняющего функцию CI для непрерывного запуска тестов, написанных на Selenium WebDriver.
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
HighLoad++ 2017
Зал «Пекин + Шанхай», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2991.html
Нынче стало модно выделять UI-компоненты в отдельную библиотеку и использовать её в нескольких проектах. Мы в команде почты Mail.ru делаем так же, но столкнулись с проблемой: каждый разработчик, меняя библиотеку под свои нужды, обязательно ломает что-нибудь, что работало у других.
Я расскажу о том, как мы решили эту проблему, и о том, какие инструменты для этого можно использовать. Storybook, BackstopJS, Jest, Webdriver.io, TypeScript - в их числе.
Последние несколько лет в продуктовой разработке проблемы масштабирования решаются через переход на микросервисную архитектуру. На эту тему было сказано много про подходы, плюсы и минусы, но мало кто рассматривал эту проблематику со стороны фронтенда.
В ЦИАН мы идем по пути перехода от монолита к микросервисам, в том числе и на фронтенде. Задачи и проблемы, с которыми мы сталкиваемся, очень близки к аналогичным на бэкенде, но в то же время совершенно другие.
В своем докладе я расскажу про архитектуру фронтенда (и так называемого миддленда) в ЦИАН: какие задачи перед нами стояли, что мы решили, где мы находимся сейчас и с какими проблемами мы столкнулись.
Доклад представляет собой обзор различных инструментов для тестирования на питоне, которые можно использовать для создания эффективного тестового end-to-end фреймворка на основе selenium webdriver с минимальным количеством заново изобретенных колес. В частности будут рассмотрены такие компоненты архитектуры как обертка вокруг самого драйвера, page object и page elements паттерны, репортинг и соответствующие инструменты, способные с большим или меньшим успехом выполнять роль этих компонентов
Dependency injection with unity 2.0 Dmytro Mindra LohikaAlex Tumanoff
This document discusses dependency injection (DI) and the Unity DI container. It begins with an overview of DI and its benefits for modularity, testability and adaptability. It then provides examples of DI approaches like composition, factories and the DI pattern. The document demonstrates how Unity can be used to configure DI through registration, injection types and lifetime managers. It concludes with some limitations, performance considerations and additional DI frameworks.
This document provides an overview of Platform as a Service (PaaS) options for Java applications, including Amazon Elastic Beanstalk, Red Hat OpenShift, CloudFoundry, and CloudBees. It discusses the benefits of PaaS for quick deployment and hosting of Java applications. It then describes several popular PaaS platforms in more detail, focusing on their features, pricing, and how they compare for Java development.
The article discusses the history of Java web frameworks including Servlets, JSP, Struts, Spring MVC, and the introduction and evolution of JSF from versions 1.0 to 2.0. It provides examples of JSF code including a sample JSF page, managed bean, and configuration file. It also covers JSF implementations, custom component design, and RichFaces as a popular JSF extension framework.
Видео: http://www.youtube.com/watch?v=vz0U3jQpHSM
Это обзор опыта применения лучших практик разработки программного обеспечения на разных проектах от госзаказов до видеоконференций в командах от 5 до 50 человек. В докладе будут описаны не только практики, но и то, как они применяются на реальных проектах и какие выгоды они действительно приносят.
The practical story telling how Devops changed the culture of quality in the Bank. Recently Devops became mainstream topic. But only few people have a deep understanding how to apply it to the process of software quality assurance. Some believe that the Devops kills manual testing.
I will talk about changes it makes to the role of QA engineers themself. The discussion main point is NOT about tools or technologies. It’s NOT about the “silver bullet” for your problems with the quality of products.
Instead, I will show you an integrated approach which we used for quality assurance. It allowed us to significantly reduce the cost of finding and fixing defects. This approach has also accelerated the development and delivery value to our customers and made the whole process more transparent and predictable.
Практический доклад о том, как мы внедряли devops в банке, а конкретнее какую роль в этом процессе сыграло тестирование.
В докладе рассмотрены основные проблемы, с которыми команда столкнулась при внедрении и способы их устранения.
Продемонстрированы результаты, которых смогли достичь в течении полугода.
Доклад содержит большое количество лайфхаков и обзоров инструментария, который использовался для достижения цели.
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
В своем докладе я расскажу, как мы внедряли devops в банке, а конкретнее какую роль в этом процессе сыграло тестирование. Также расскажу с какими проблемами столкнулись, и как мы их устраняли. И да, каких результатов смогли добиться уже через полгода. А самое интересное, покажу как мы смогли добиться того, чтоб у нас pull request долетал до боя за 3 часа со всеми этапами тестирования.
Доклад будет содержать большое количество лайфхаков и обзоров инструментария, который мы использовали.
Тест-план и исследовательское тестированиеVasiliy Burov
В своем докладе я расскажу как мы в своей работе совмещаем тест-план и исследовательское тестирование. С первого взгляда, может показаться что это не совсем совместимые вещи. Исследовательское тестирование ассоциируется с методом свободного поиска, а тест-план наоборот – следование заданному порядку. Как совместить эти сущности и ничего не потерять – я попытаюсь рассказать.
Glib Rybalko, GlobalLogic’s Test Lead, consultant and trainer was among 26 known Ukrainian and international experts who took a word on IT Weekend Ukraine 2013. Glib discussed features of automated software testing, benefits and feasibility of using this approach on various projects. During his speech, Glib pointed all necessary steps of automated testing implementation and gave homework for those who were interested in this field and wanted to implement it in their projects.
Sql server 2019 New Features by Yevhen NedaskivskyiAlex Tumanoff
SQL Server 2019 introduces several new high availability and disaster recovery features such as support for up to 5 synchronous replicas in an Always On availability group and improved connection redirection capabilities. It also enhances PolyBase integration and provides new options for certificate management across instances. Additional new features include support for persistent memory, columnstore index improvements, and resumable online index operations.
Odessa .net-user-group-sql-server-2019-hidden-gems by Denis ReznikAlex Tumanoff
This document discusses hidden gems in SQL Server 2019, including lightweight query profiling, DBCC PAGE, dm_os_host_info, dm_os_schedulers, and QUERY OPTIMIZER COMPATIBILITY LEVEL. It provides demos of these lesser known features and notes that the string truncation error message is one of the most well-known hidden features. The author concludes that more hidden features will continue to be added to SQL Server.
This document provides an overview of Azure Databricks, including:
- Azure Databricks is an Apache Spark-based analytics platform optimized for Microsoft Azure cloud services. It includes Spark SQL, streaming, machine learning libraries, and integrates fully with Azure services.
- Clusters in Azure Databricks provide a unified platform for various analytics use cases. The workspace stores notebooks, libraries, dashboards, and folders. Notebooks provide a code environment with visualizations. Jobs and alerts can run and notify on notebooks.
- The Databricks File System (DBFS) stores files in Azure Blob storage in a distributed file system accessible from notebooks. Business intelligence tools can connect to Databricks clusters via JDBC
This document provides an overview and agenda for a presentation on Java 8 features and the Jinq library. It discusses Java 8 language features like lambda expressions and default methods. It then describes Jinq, an open-source library that allows functional-style database queries in Java by translating Java code into SQL. The document outlines how Jinq works, its configuration, supported query operations like filtering, sorting and joins, and limitations. It also briefly mentions alternative libraries like JOOQ.
This document discusses Spring Boot, a framework for creating stand-alone, production-grade Spring based applications that can be "just run". Spring Boot focuses on using sensible default configurations and automatic configuration so that developers can focus on the business problem rather than infrastructure. It provides features like embedded Tomcat/Jetty servers, auto configuration of Spring and third party libraries, actuator endpoints for monitoring apps, and works with properties files, environment variables and JNDI. The document also covers Spring configuration, annotations, issues, Groovy, environment configuration, initialization, auto-configuration classes, properties, and the health and metrics endpoints of Spring Boot Actuator.
Sql saturday azure storage by Anton VidishchevAlex Tumanoff
This document provides an overview of Windows Azure Storage, including its internals and best practices. It describes the key abstractions in Azure Storage like blobs, disks, tables, and queues. It then discusses the internal architecture and design goals around high availability, durability, and scalability. Specific topics covered include storage stamps, the partition layer, dynamic load balancing, and availability with consistency for writing and reading. The document concludes with best practices for .NET, blobs, tables, queues, and general usage of Azure Storage.
Serialization and performance by Sergey MorenetsAlex Tumanoff
The document discusses serialization frameworks in Java and compares their performance. It provides an overview of popular serialization frameworks like Java serialization, Kryo, Protocol Buffers, Jackson, Google GSON, and others. Benchmark tests were conducted to compare the frameworks' speed of serialization and deserialization, as well as the size of serialized objects. Kryo with optimizations was generally the fastest, while Protocol Buffers was very fast for simple objects. The document concludes with recommendations on when to use different frameworks.
Игры для мобильных платформ by Алексей РыбаковAlex Tumanoff
Unity is a game engine that was first released in 2005 and now has over 2 million registered developers. It supports development for platforms like Windows, Mac, Linux, iOS, Android, PlayStation, and Xbox. The free version of Unity has limitations like revenue caps, while the Pro version costs $1,500 per year. Installation involves downloading a 1-3GB package that expands to 3-4GB on disk. Unity uses C# and JavaScript for scripting and supports 3D formats from applications like 3DS Max and Photoshop. The engine includes tools for building applications targeting different platforms like iOS. Popular games built with Unity include Angry Bots and Epic Citadel.
This document provides an overview of developing Android client apps using SyncAdapter. It discusses the key components involved - Account, ContentProvider, and SyncAdapter. It outlines the basic workflow and issues to consider with sync caching. Puzzles involved with implementing each component are described, along with code samples and documentation resources. Pros and cons of the SyncAdapter framework are presented.
This document discusses patterns of parallel programming. It begins by explaining why parallel programming is necessary due to limitations of Moore's Law like power consumption and wire delays. It then covers key terms and measures for parallel programming like work, span, speedup and parallelism. Common patterns are overviewed like pipeline, producer-consumer, and Map-Reduce. It warns of dangers like race conditions, deadlocks and starvation. Finally, it provides references for further reading on parallel programming patterns and approaches.
The document discusses Java 8 lambda expressions and functional interfaces. Key points include:
- Lambda expressions allow for anonymous methods that can access local variables and don't require a class file.
- Functional interfaces define a single abstract method, representing a function contract.
- Default methods allow interfaces to provide default implementations of methods.
- Method references provide a way to refer to a method without invoking it.
5. Преимущества TDD
• Повышает качество кода
• Стимулирует стройность архитектуры
• Повышает уверенность в написанном коде
• Меньше времени тратится на отладку
• Снижает количество багов в production-коде
• Уверенность при рефакторинге
6. Недостатки TDD
• Сложность тестирования БД, сервисов
• Ошибочный тест ведет к ошибочному коду
• Тесты необходимо поддерживать
7. Что такое Unit-test
• Характеристики
• Single responsibility
• Малый размер
• Изолированность
8. Ваш тест не является unit-
тестом, если:
• Тест взаимодействует с базой
• Тест использует сетевое взаимодействие
• Тест работает с файловой системой
• Тест не может быть запущен одновременно с любыми
другими юнит-тестами
• Вам приходится специально настраивать среду
выполнения (например редактировать конфигурационные
файлы) для его выполнения.
9. Как изолировать тест от
зависимостей?
• Fakes
Объекты-двойники, копирующие поведение заменяемого
объекта. Например, in-memory база данных.
• Mocks
Объекты, имитирующие поведение заменяемого объекта.
Также позволяют проверить факт вызова методов
• Dummies
Объекты-заглушки, передаваемые в качестве
обязательных параметров, но не использующиеся в
методах
• Stubs
Заглушки. Helper-методы, имитирующие поведение
объектов.
10. Практика применения
• Текущий проект
• ASP.NET MVC 3
• WCF REST services
• Entity Framework 4.0
• EF POCO Objects
• T4 Templates for Fake repository
• SQL Azure
• NUnit
• Moq
• Resharper
• dotCover
11. Тестирование DAL
• Используйте POCO объекты
• Используйте абстракции над контекстом: IRepository,
IUnitOfWork
• Используйте in-memory fakes
• Пользуйтесь похожестью Linq to Objects и Linq to Entities
• Создавайте темплейты заполнения in-memory хранилища
для разных тест-кейсов
• Используйте ObjectMother
• Тестируйте различия на Mock Objects (Например,
SaveChanges() )
• …….
• PROFIT!
12. Тестирование DAL: Integration
Tests
• Если возможно, используйте unit-тесты на in-memory
хранилище вместо integration-тестов
• Используйте sanity integration tests для проверки
соответствия модели и схемы БД.
• Тестируйте хранимые процедуры
• Sanity integration test для проверки маппинга
• Старайтесь использовать эталонные C# методы для
тестирования сложных процедур
13. Тестирование BLL
• Пишите тесты до имплементации логики!
• Используйте Dependency Injection/IoC контейнеры
• Избегайте хрупких тестов!
• Старайтесь протестировать «как это работает», а не «что
вызывается»
• Старайтесь тестировать логику на test-doubles
14. Тестирование UI
• Выделяйте стабильные/нестабильные зоны в UI
• Используйте, по возможности, паттерны MVC/MVVM
• Используйте Contrib-библиотеки (MVCContrib).
• Тестируйте Routes
• Тестируйте Controller
• Возвращаемый ActionResult
• Передаваемая модель
• Возвращаемое представление
• ModelState
15. Tips & Tricks
• Пишите короткие тесты
• Одна проверка – один тест
• Давайте тестам понятные названия
• Избегайте хрупких тестов
• Используйте Dependency Injection/IoC-контейнеры
• Следите за временем билда. Используйте Ndepend для его
снижения
• Следите за временем выполнения тестов
• Разбивайте тесты на тест-кейсы
• Формализуйте Setup / TearDown
16. More improvements
• Используйте разные виды тестирования:
• UI tests
• Coded-UI tests
• Load tests
• Integration tests
• Используйте Continuous Integration
• Выполняйте unit-тесты на каждом check-in
• Выполняйте дорогие тесты ежедневно
17. Полезные фреймворки и
утилиты
• Unit testing
• MSTest, Nunit
• Mocking
• Moq, RhinoMocks
• Isolation and White box Unit Testing for .NET
• Pex and Moles
• UI Testing
• MS Test Manager, Selenium
• Continuous integration
• TFS, TeamCity, Hudson/Jenkins, CruiseControl.NET
• DI/IoC
• Unity, Spring.NET, Ninject
• Contribution projects
• NUGET, MVCContrib
• Refactoring
• Resharper
• Code Coverage
• Visual Studio, dotCover
18. Полезные ссылки
• Kent Beck. Test Driven Development: By Example
http://www.amazon.com/Test-Driven-Development-
Kent-Beck/dp/0321146530/
• Testability and Entity Framework 4.0
http://msdn.microsoft.com/en-
us/library/ff714955.aspx
• Mocks aren’t Stubs. Martin Fowler
http://martinfowler.com/articles/mocksArentStubs.ht
ml