Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Vadim Martynov
Это настоящий курс молодого бойца по коммерческой разработке ПО в компаниях и распределённых командах.В рамках курса слушатели приобретут навыки по участию в командной разработке, взаимодействию с аналитиками, заказчиком, менеджером и отделом тестирования, совместной работой с кодом, пониманию особенностей построения высоконагруженных систем, анализу качества продукта и автоматизации тестирования.
Лучшие практики корпоративной разработки. Лекция 0: обзор курса.Vadim Martynov
Это настоящий курс молодого бойца по коммерческой разработке ПО в компаниях и распределённых командах.В рамках курса слушатели приобретут навыки по участию в командной разработке, взаимодействию с аналитиками, заказчиком, менеджером и отделом тестирования, совместной работой с кодом, пониманию особенностей построения высоконагруженных систем, анализу качества продукта и автоматизации тестирования.
Слайды для лекции о паттернах, что я давал в Aller Media Norge в 2019.
Ссылка на исходник на GDocs:
https://docs.google.com/presentation/d/1CL2umKOcEeBehJ_hFlaD7P5pdoey_trCTeSnd5TiBSI/edit?usp=sharing
Каким образом лучше организовать процесс интеграционного тестирования? Для проектов, где количество тестовых сценариев превышает несколько сотен, возникают проблемы:
с пониманием кода;
с точным представлением, что именно протестировано, а что нет;
какие случаи учтены в тестовых сценариях, а какие нет.
Использование SpecFlow для нашего проекта помогло решить все эти проблемы. Мы наладили процесс тестирования и оптимизировали написание тестовых сценариев.
Как настроить SpecFlow, организовать тестовые сценарии более логично и иметь список тестов на русском языке, который можно показать даже заказчику? Об этом будет подробно рассказано в докладе.
По материалам конференции .NET разработчиков http://www.dotnetconf.ru/Materialy/Priemochnie_testi_na_ogurce
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
то такое "Непрерывная Интеграция", зачем она нужна и с чем ее едят? Правда ли, что она нужна только для тестировщиков? На все эти вопросы мы постараемся найти ответы в ходе выступления Щербакова Ильи на нашей следующей юзер-группе.
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексейsolit
Алексей Мычко, Минск, компания JazzTeam, Software Engineer (test automation)
«Эволюция тестирования на Selenium». Лекция и мастер-класс. Development секция. Для заинтересованных.
Для автоматизации web-приложений самым популярным средством является Selenium. Этот продукт дает возможность создавать как очень простые тесты, так и сложные тестовые фреймворки, позволяющие тестировать системы любой сложности.
В мастер-классе будет наглядно показано создание следующих видов тестов:
- с использование программ, генерирующих тесты по манипуляциям с браузером
- тесты в стиле процедурного программирования
- тесты в стиле объектно-ориентированного программирования
- тесты на DSL (Domain Specific Language) языке
RESTful HATEOAS standards using Java based KatharsisKeith Moore
If you ever want to start a controversy at the beginning of a SPA or mobile project, just start talking about the way the JSON responses should be formatted and how the requests will be sent.
Don’t be that guy! There are definitely much more important things to discuss like, for example, what the application is going to do. You can end the bike shedding by following the JSON API spec (http://jsonapi.org). Yes, there really is a specification for it. I will discuss how you can easily implement this along with providing HATEOAS support using the Java based Katharsis (http://katharsis.io) library. I will demonstrate how this can be done by incorporating it into a Spring Boot application.
Слайды для лекции о паттернах, что я давал в Aller Media Norge в 2019.
Ссылка на исходник на GDocs:
https://docs.google.com/presentation/d/1CL2umKOcEeBehJ_hFlaD7P5pdoey_trCTeSnd5TiBSI/edit?usp=sharing
Каким образом лучше организовать процесс интеграционного тестирования? Для проектов, где количество тестовых сценариев превышает несколько сотен, возникают проблемы:
с пониманием кода;
с точным представлением, что именно протестировано, а что нет;
какие случаи учтены в тестовых сценариях, а какие нет.
Использование SpecFlow для нашего проекта помогло решить все эти проблемы. Мы наладили процесс тестирования и оптимизировали написание тестовых сценариев.
Как настроить SpecFlow, организовать тестовые сценарии более логично и иметь список тестов на русском языке, который можно показать даже заказчику? Об этом будет подробно рассказано в докладе.
По материалам конференции .NET разработчиков http://www.dotnetconf.ru/Materialy/Priemochnie_testi_na_ogurce
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
то такое "Непрерывная Интеграция", зачем она нужна и с чем ее едят? Правда ли, что она нужна только для тестировщиков? На все эти вопросы мы постараемся найти ответы в ходе выступления Щербакова Ильи на нашей следующей юзер-группе.
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексейsolit
Алексей Мычко, Минск, компания JazzTeam, Software Engineer (test automation)
«Эволюция тестирования на Selenium». Лекция и мастер-класс. Development секция. Для заинтересованных.
Для автоматизации web-приложений самым популярным средством является Selenium. Этот продукт дает возможность создавать как очень простые тесты, так и сложные тестовые фреймворки, позволяющие тестировать системы любой сложности.
В мастер-классе будет наглядно показано создание следующих видов тестов:
- с использование программ, генерирующих тесты по манипуляциям с браузером
- тесты в стиле процедурного программирования
- тесты в стиле объектно-ориентированного программирования
- тесты на DSL (Domain Specific Language) языке
RESTful HATEOAS standards using Java based KatharsisKeith Moore
If you ever want to start a controversy at the beginning of a SPA or mobile project, just start talking about the way the JSON responses should be formatted and how the requests will be sent.
Don’t be that guy! There are definitely much more important things to discuss like, for example, what the application is going to do. You can end the bike shedding by following the JSON API spec (http://jsonapi.org). Yes, there really is a specification for it. I will discuss how you can easily implement this along with providing HATEOAS support using the Java based Katharsis (http://katharsis.io) library. I will demonstrate how this can be done by incorporating it into a Spring Boot application.
This document provides an overview of enterprise mobility and mobile security, with a focus on the Android platform. It discusses best practices for secure software development and the Android security architecture. The document outlines Android's permission-based security model and sandboxing approach. It also examines Android's attack surfaces and how enterprises can leverage features in newer Android versions like remote wiping, encryption, and device administration policies. The presentation concludes with an invitation for questions.
Do you know the full power of Java? Have troubles writing great interfaces? Generics do help you with that. Check out how can you write powerful interfaces with Java generics. For more info and examples see http://uptech.team
Presentation describing the best practices concerning Android Offline Storage.
Examples included on manual encryption of files, SQLCipher, and tamper detection
The document discusses best practices for building secure Android apps for enterprise use. It covers an overview of mobility and mobile security, secure software development practices, the Android security architecture including permission-based security and sandboxing, common Android attack surfaces, and enterprise features in Android like remote wipe that can be leveraged. The presentation emphasizes designing apps with user authentication, data security on devices, secure data transmission, and device management and provisioning.
El documento describe las etapas de la tuberculosis desde la inhalación del bacilo hasta la formación de lesiones y granulomas. Inicialmente, el bacilo se replica y disemina antes de ser contenido por el sistema inmunológico, entrando en la fase latente. Posteriormente, las alteraciones en los tejidos incluyen inflamación, necrosis y formación de granulomas. Finalmente, la evolución de las lesiones puede llevar a caseificación, licuefacción y formación de cavidades.
El documento presenta un resumen de Colombia, incluyendo sus principales lugares turísticos y diversas culturas, su rica flora y fauna, sus símbolos patrios, su economía e infraestructura. Concluye describiendo a Colombia como un país con dos costas, una población multicultural y una economía basada en la producción de bienes primarios y de consumo, destacando el café como uno de sus cultivos tradicionales más importantes y su gran diversidad biológica.
These are the slides for my 'How to make a night lamp out of a beer bottle' talk we had in the TinkerSoc OpenMic #1 (http://bit.ly/4uo3uC)
It mostly covers different ways to detect 'touch', using capacitive touch sensing solutions and how to make a simple on-off controller using a flip-flop.
Comments/Suggestions to: omer@tinkersoc.org please...
Analysis and research of system security based on androidRavishankar Kumar
The document discusses mobile security and the Android operating system. It provides an overview of why mobile security is important, what Android is, how to develop for Android, and Android security features. It discusses threats like malware, data theft, and device loss. It then covers key aspects of the Android security model like application sandboxes, data storage options, permissions, and cryptography. Finally, it provides examples of security applications like Lookout Antivirus and App Lock.
«Как я научился не волноваться и полюбил Android-MVP», Никита Бартишок, ABBYYMail.ru Group
Доклад о подходе к разработке Android-приложений с использованием MVP и Clean Architecture. Никита рассмотрит преимущества этого подхода перед традиционным, уделит отдельное внимание вопросам сохранения состояния в Android-MVP, а также особенностям взаимодействия между V и P.
By Clement Escoffier
Sorry, there is no free lunch—distributed applications are complex. You can embrace any trends such as microservices, but developing a distributed application is a challenge. Why? Distributed systems have many reasons to fail: technically they’re complicated, and the theory behind distributed systems is also complicated. Vert.x is a toolkit for building reactive distributed applications on top of the Java Virtual Machine in Java, JavaScript, Groovy, Ruby, or Ceylon. Vert.x does not hide the complexity of distributed applications; it lets you manage it. Vert.x applications are able to manage failures, can use several protocols and interaction styles, can handle heavy loads, and can cope with most of the requirements of modern applications.
The document discusses permissions in Android security and outlines 3 main threats: permission re-delegation, over-privileged apps, and permission inheritance. It then describes 11 proposed solutions to these threats, categorizing each solution by type (system modification, Android service, or non-Android app), implementation level (system, app, or separate system), and running mode (static or dynamic). Finally, it notes areas for future work, such as combining solutions and evaluating solutions based on factors like performance and complexity.
This document discusses clean architecture principles for Android applications. It outlines goals of having an architecture that is focused on use cases, easy to maintain and test, and decoupled. It describes layers including entities, use cases, interface adapters, frameworks/drivers, presentation layer, and data layer. It emphasizes separating domains, business rules in their own layer, and testing at different levels. Tools mentioned include dependency injections, Proguard, and Lint.
Vert.x is a toolkit for building reactive microservices applications on the JVM. It uses the reactor pattern with a single-threaded event loop to avoid the C10K problem. Verticles are lightweight concurrent units that communicate asynchronously via an event bus. This allows building scalable and reactive microservices. Vert.x supports websockets, clustering, reactive programming with RxJava, and can be deployed to production environments like AWS. It also integrates with Spring for dependency injection and configuration.
— Как развивалась инфраструктура веб-проектов в 2ГИС;
— Как не делать один и тот же функционал 5 раз подряд, или слоистая архитектура и выделение общих сервисов;
— Сборка приложений из базовых библиотек;
— Сложность масштабирования цельной системы и легкость распределенной;
— Зоны ответственности групп разработки.
Достоинства и ограничения проектных моделей водопада и гибких подходов: скрам, аджайл (scrum, agile).
Как на основе специфичных характеристик проекта подобрать модели планирования и управления ИТ проектом
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.
www.cmcons.com. Практика и технология внедрения процесса конфигурационного управления и управления изменениями с применением IBM Rational ClearCase и ClearQuest
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...RIF-Technology
В рамках доклада рассмотрим вопросы формирования команды с помощью модели МакКинси 7с (McKinsey 7s), поговорим о процессах разработки программного продукта, системе релизов, системном инжиниринге и рекомендациях по системе управления процессами.
Выступление будет интересно руководителям команд разработчиков, особенно тем, кто фокусируется на предсказуемости сроков и качестве создаваемого решения.
Презентация на комплексную тему Continious integration-Automated Testing-Agile, показывается связи между этими темам, обоснование автоматического тестирования , и вложения ресурсов для развертывания автоматического тестирования и непрерываной интеграциия. Все темы тесно связаны между собой , хотя бы появились независимос друг от друга.
Softline — один из лидеров на рынке решений САПР/ГИС. Мы выполняем полный спектр работ по внедрению современных средств автоматизированного
проектирования ведущих зарубежных и отечественных производителей.
Основополагающий принцип автоматизированного проектирования — комплексный подход к решению задач. Размер наших проектов — от мелких доработок функционала сред проектирования до масштабного внедрения информационных систем поддержки процесса проектирования.
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
В своем докладе я расскажу, как мы внедряли devops в банке, а конкретнее какую роль в этом процессе сыграло тестирование. Также расскажу с какими проблемами столкнулись, и как мы их устраняли. И да, каких результатов смогли добиться уже через полгода. А самое интересное, покажу как мы смогли добиться того, чтоб у нас pull request долетал до боя за 3 часа со всеми этапами тестирования.
Доклад будет содержать большое количество лайфхаков и обзоров инструментария, который мы использовали.
Практический доклад о том, как мы внедряли devops в банке, а конкретнее какую роль в этом процессе сыграло тестирование.
В докладе рассмотрены основные проблемы, с которыми команда столкнулась при внедрении и способы их устранения.
Продемонстрированы результаты, которых смогли достичь в течении полугода.
Доклад содержит большое количество лайфхаков и обзоров инструментария, который использовался для достижения цели.
Oleg Chorny discusses Google's approach to release engineering, which aims to reduce manual toil through automation. Some key aspects include establishing frequent release cycles to catch bugs early, empowering individual teams through self-service tools and best practices, integrating automated testing, packaging, deployment and configuration management into the release process, and defining clear policies for approving and controlling releases. The overall goal is to make software releases as simple as pressing a button by establishing the right automated systems and collaboration between developers and release engineers.
The document discusses Angular 1.x components, bindings, transclusion, routing, and TypeScript. It covers lifecycle hooks, binding rules, using immutable.js for objects and arrays, custom elements, different routing options like ngRoute, ui-router, and angular@router/angular1. It also discusses using TypeScript for optional types and documentation, declaration files, and alternatives to Webpack like Rollup.js and Closure Compiler.
This document discusses the React application lifecycle and component lifecycle methods. It explains the different phases a React component goes through:
1. Mounting/Birth which includes initialization, getting default props/state, componentWillMount, render(), and componentDidMount.
2. Updating/Growth which involves receiving new props, re-rendering if needed, componentWillUpdate, render(), componentDidUpdate.
3. Unmounting/Death includes cleanup with componentWillUnmount before the component is removed from the DOM.
It provides code examples for using state, props, lifecycle methods, and testing React components with Jest and snapshots.
5. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
6. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
● гибкость (компонентность)
7. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
● гибкость (компонентность)
● расширяемость
8. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
● гибкость (компонентность)
● расширяемость
● масштабируемость процесса разработки
9. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
● гибкость (компонентность)
● расширяемость
● масштабируемость процесса разработки
● тестируемость
10. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
● гибкость (компонентность)
● расширяемость
● масштабируемость процесса разработки
● тестируемость
● возможность повторного использования компонентов
11. Ожидание от архитектуры
Правильно выбранная архитектура должна способствовать
системе соответствовать следующим свойствам:
● эффективность
● гибкость (компонентность)
● расширяемость
● масштабируемость процесса разработки
● тестируемость
● возможность повторного использования компонентов
● читаемость кода
23. Различия
● В MVP View не имеет доступа к Model
● В MVP Presenter привязан ТОЛЬКО к одной View
24. Различия
● В MVP View не имеет доступа к Model
● В MVP Presenter привязан ТОЛЬКО к одной View
● В MVP View должно быть реализовано максимально пассивным
компонентом
25. Ссылки для изучения MVP
● http://hannesdorfmann.com/mosby/getting-started/
● https://code.tutsplus.com/series/how-to-adopt-model-view-presenter-on-
android--cms-1012
● https://github.com/googlesamples/android-architecture
27. Clean architecture
Выделяют 3 основных слоя:
● внешний (implementation layer)
● средний (interface adapter layer)
● внутренний (business logic layer)
ВАЖНО (Dependency rule)
Внутренние слои ничего не должны знать про внешние
слои
28. Clean architecture
Implementation layer
Все что делается средствами Android SDK (framework
specific code)должно относиться к этому слою. Framework
specific code должен включать каждую строчку кода,
которая не относится к решению задачи приложения.
Примеры
UI, Intents, Storage, Networks
32. Clean architecture
Business layer
Вся логика, относящаяся к решению проблем должны
быть в этом слое. Ничего из Android SDK в нем не должно
быть. Код должен запускаться без эмулятора.
Примеры
Interactors, Models, Repositories, Executors
33. Clean architecture
Business layer
Interactors - бизнес логика приложения. Выполняются в
бэкграунде и возвращают эвенты во внешние слои
используя callback’и
Models - модели для бизнес логики
Repositories - only contains interface for database or some
other outer layer implements
Executor - this package contains code for making Interactors
run in background by using working thread executor
34. Clean architecture
Любой layer ответственен за конвертацию моделей для
layer’ов нижнего уровня перед тем как они начнут
использовать их.
Но нижние layer’ы не должны иметь доступа к моделям
верхнего layer.
Хотя внешние layer’ы могут использовать модели из
внутренних layer’ов.
35. Ссылки для изучения
● https://medium.com/@dmilicic/a-detailed-guide-on-developing-android-
apps-using-the-clean-architecture-pattern-d38d71e94029#.y5v4gcwb4
● https://github.com/dmilicic/Android-Clean-Boilerplate/tree/example
● https://github.com/android10/Android-CleanArchitecture