Behavior Driven Development - подход к разработке ПО, основывающийся на ориентации на business value и исполняемых спецификациях, написанных на человеческом языке
Потратив множество человеко-часов над разработкой автотестов для нескольких огромных проектов, я с полной уверенностью могу сообщить, что составил может быть далеко не полный, но уж точно достаточно крупный набор практик, с которыми хочется поделиться с каждым
Behavior Driven Development - подход к разработке ПО, основывающийся на ориентации на business value и исполняемых спецификациях, написанных на человеческом языке
Потратив множество человеко-часов над разработкой автотестов для нескольких огромных проектов, я с полной уверенностью могу сообщить, что составил может быть далеко не полный, но уж точно достаточно крупный набор практик, с которыми хочется поделиться с каждым
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
Видеозапись:
http://getdev.net/Event/dependency-injection
Рассказ о внедрении зависимостей (Dependency Injection), зачем оно нужно, откуда оно пошло и развивалось. Виды Dependency Injection, разница между ними и рекомендации к применению. Расказ про декораторы (decorators). Рассказ про абстрактные фабрики. Рассказ про управление временем жизни. Рассказ про IoC -контейнеры вообще и Castle Windsor в частности.
У вас древний проект? Все зовут его «Legacy», а вас «неудачник»? Возможно они даже смеются над вами.
Давайте взглянем на ситуацию с другого ракурса. Все (все, Карл!) успешные проекты рано или поздно превращаются в Legacy-проекты.
Я затрону тему Legacy не просто как явление, а как возможность быть постоянно в тренде, прослыть супер-спецом (даже если ты знаешь всего два фреймворка), сделать карьеру, как делать, то что ты хочешь, а не то что тебя просят. Ладно, ладно, я наврал про два фреймворка, но все остальное чистая правда. Я покажу, что вы можете творить, имея правильный подход к Legacy коду.
Суть в том, что Legacy — это не грустно/уныло/немодно, это просто/клево/весело, если с умом подойти к задаче!
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...Oleg Chirukhin
GraalVM is a universal virtual machine for running applications written in JVM-based languages (Java, Scala, Clojure, Kotlin), JavaScript, Python, Ruby, R, and LLVM-based languages such as C and C++.
Quite often research projects look like something out of the world, something you won’t probably use in real life. Graal changes the picture: it took the stage out of the blue, and not as a newbie, but as a mature competitor. In this talk, we’ll look at what Graal consists of and what practical use you can get from it right now.
We’ll talk about GraalVM components:
Graal Compiler – an optimizing compiler that supports both dynamic and static compilation and can integrate with the Java HotSpot VM or run standalone. We’ll see how to run existing applications, and what benefit (in numbers) it can bring.
Substrate VM — a framework for ahead-of-time (AOT) compilation into executable images or shared objects. It sounds like a most radical and cheating optimization because it works the way no one else can (under closed-world assumption).
Truffle – language implementation framework for creating languages and instrumentations for GraalVM. Language design is a very complex field, so here we’ll focus on existing languages from GraalVM distribution.
The 3rd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 1-st lecture from the course "Java Core".
Chair of Information Net Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 2-nd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение.
Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
Автоматическое тестирование и с чем его едятMarina Peregud
Agenda
Автоматизация? Какая еще автоматизация? Автоматическое тестирование ПО. Зачем вообще?
Отличие от мануального тестирования ПО, или Ручник vs человек разумный.
Имею желание, но не имею возможности, или какие знания были бы полезны в этой области.
Когда стоит внедрять автоматизацию.
ROI и другие непонятные слова на три буквы.
The document discusses Behavior Driven Development (BDD) and the Python tool Behave. BDD develops applications based on required behaviors and utilizes tests written in plain language. Behave is a Python implementation of BDD that uses the Gherkin language to write tests in plain language steps. It provides reusable step code and generates skeleton step code to document features and requirements.
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
Видеозапись:
http://getdev.net/Event/dependency-injection
Рассказ о внедрении зависимостей (Dependency Injection), зачем оно нужно, откуда оно пошло и развивалось. Виды Dependency Injection, разница между ними и рекомендации к применению. Расказ про декораторы (decorators). Рассказ про абстрактные фабрики. Рассказ про управление временем жизни. Рассказ про IoC -контейнеры вообще и Castle Windsor в частности.
У вас древний проект? Все зовут его «Legacy», а вас «неудачник»? Возможно они даже смеются над вами.
Давайте взглянем на ситуацию с другого ракурса. Все (все, Карл!) успешные проекты рано или поздно превращаются в Legacy-проекты.
Я затрону тему Legacy не просто как явление, а как возможность быть постоянно в тренде, прослыть супер-спецом (даже если ты знаешь всего два фреймворка), сделать карьеру, как делать, то что ты хочешь, а не то что тебя просят. Ладно, ладно, я наврал про два фреймворка, но все остальное чистая правда. Я покажу, что вы можете творить, имея правильный подход к Legacy коду.
Суть в том, что Legacy — это не грустно/уныло/немодно, это просто/клево/весело, если с умом подойти к задаче!
Graal, Truffle, SubstrateVM and other perks: what are those and why do you ne...Oleg Chirukhin
GraalVM is a universal virtual machine for running applications written in JVM-based languages (Java, Scala, Clojure, Kotlin), JavaScript, Python, Ruby, R, and LLVM-based languages such as C and C++.
Quite often research projects look like something out of the world, something you won’t probably use in real life. Graal changes the picture: it took the stage out of the blue, and not as a newbie, but as a mature competitor. In this talk, we’ll look at what Graal consists of and what practical use you can get from it right now.
We’ll talk about GraalVM components:
Graal Compiler – an optimizing compiler that supports both dynamic and static compilation and can integrate with the Java HotSpot VM or run standalone. We’ll see how to run existing applications, and what benefit (in numbers) it can bring.
Substrate VM — a framework for ahead-of-time (AOT) compilation into executable images or shared objects. It sounds like a most radical and cheating optimization because it works the way no one else can (under closed-world assumption).
Truffle – language implementation framework for creating languages and instrumentations for GraalVM. Language design is a very complex field, so here we’ll focus on existing languages from GraalVM distribution.
The 3rd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 1-st lecture from the course "Java Core".
Chair of Information Net Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
The 2-nd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение.
Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
Автоматическое тестирование и с чем его едятMarina Peregud
Agenda
Автоматизация? Какая еще автоматизация? Автоматическое тестирование ПО. Зачем вообще?
Отличие от мануального тестирования ПО, или Ручник vs человек разумный.
Имею желание, но не имею возможности, или какие знания были бы полезны в этой области.
Когда стоит внедрять автоматизацию.
ROI и другие непонятные слова на три буквы.
The document discusses Behavior Driven Development (BDD) and the Python tool Behave. BDD develops applications based on required behaviors and utilizes tests written in plain language. Behave is a Python implementation of BDD that uses the Gherkin language to write tests in plain language steps. It provides reusable step code and generates skeleton step code to document features and requirements.
Cucumber is a tool that allows software programmers to write automated tests for acceptance testing in a business-readable domain-specific language called Gherkin. Cucumber tests are written using a behavior-driven development (BDD) style with Given, When, Then steps. Cucumber supports testing applications developed in various programming languages and runs across different platforms and browsers.
Behavior Driven Development and Automation Testing Using CucumberKMS Technology
This document discusses behavior-driven development (BDD) and automation testing using Cucumber. It begins with an example of a Cucumber scenario for logging into a system. It then demonstrates an automation test case written in Java and discusses how Cucumber executes scenarios. The rest of the document outlines an agenda to discuss BDD, Cucumber automation, developing a Cucumber framework, and the pros and cons of BDD and Cucumber.
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
Недавно запустили новый сайт Тинькофф.
У нас есть желание поделиться с аудиторией подходом и опытом разработки большого изоморфного приложения на React.js и Flux. Меньше чем за год мы разработали новый сайт и интернет-банк, заложив платформу на ближайшие несколько лет для быстрой разработки фронтенда новых продуктов.
Сейчас tinkoff.ru насчитывает более 3000 компонентов и сотни страниц.
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"MskDotNet Community
Поговорим что такое React и зачем он нужен разработчикам, разберемся что такое ReactJS.NET и JavaScriptServices,
Обсудим как интегрировать React компоненты в существующую Razor разметку или даже в WebForms. Расскажем о том какие проблемы с производительностью существуют при серверном рендеринге компонентов и как их решать.
Windows 10 и Project Westminster: когда сайты превращаются в приложения, а JavaScript получает доступ в систему
Запись: https://www.youtube.com/watch?v=PQa9UyiETmU
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
13 июля 2016 состоялся восьмой Node.js Meetup в Москве. В этом докладе мы рассмотрели Scale Cube, Docker, CoreOS и кратко Kubernetes и Concourse CI.
В следующем докладе взглянем более подробно на Kubernetes и Concourse CI, посмотрим как с помощью этих быстрых и прекрасных инструментов построить Deployment Automation.
Евгений Ртищев "Мобильная платформа на ReactNative"IT Event
"Евгений поделится и расскажет о необычной гибридной технологии ReactNative, рожденной в компании Facebook.
Доклад рассказывает о реальной разработке гибридной мобильной платформы в крупнейшем российском банке.
В ходе выступления мы узнаем следующие аспекты:
* Магия технологии ReactNative.
* Когда нужно прибегать к гибридной разработке.
* Возможно ли создать полностью кросс-платформенное решение на ReactNative?
* Как выстроить архитектуру продукта?
* Преимущества и недостатки, что нужно знать.
* Развеиваем основные мифы ReactNative."
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
Сергей Коржнев
Архитектор версии 1.4 2ГИС Web API
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Тезисы:
● Как организован код в старой версии.
● Вдумчиво смотрим, как мы используем Yii, хватаемся за голову и клавиатуру. Там отрезаем, тут пришиваем, и вуаля!
● Ну и делаем выводы, как мы забороли две классические проблемы программирования: борьба с дублированием кода и сложностью системы.
Высокопроизводительные приложения на базе Windows Azure. Пример реального про...UNETA
Презентация к докладу: «Высокопроизводительные приложения на базе Windows Azure. Пример реального проекта». Докладчик: Александр Фещенко – MVP (SQL Azure), .Net Team Lead в DCT.
В докладе будут рассмотрены методики поиска узких мест в веб-приложениях, их устранения, а также способы повышения производительности при помощи облачной инфраструктуры Windows Azure.
State of the Standardized Web
В 2014 году принципы Extensible Web начали воплощаться в новых стандартах. Поговорим о Web Crypto, Web Animations, Service Worker и других вещах, которые должны принципиально изменить веб-платформу в ближайшем будущем.
Сергей Константинов, Яндекс
Руководитель группы разработки API Яндекс.Карт. Окончил Южно-Уральский государственный университет. Разработкой API Яндекс.Карт занимается с 2008 года. С 2013 — участник Технической архитектурной группы Консорциума W3C.
The document outlines various types and classifications of software testing. It discusses different testing schemes including unit, integration, system and acceptance testing. It also covers test approaches such as white-box, black-box and grey-box testing. Functional and non-functional types of testing are described along with positive and negative testing scenarios. The goals, methods, and bases of testing are also addressed at a high level.
This document outlines principles and patterns for service-oriented architecture (SOA) design. It begins with an introduction and agenda, then covers service fundamentals like loose coupling and statelessness. Major sections discuss service design principles like autonomy and standardized contracts, inventory design patterns like normalization and layers, individual service design patterns like agnostic capabilities and messaging, and composition design patterns like routing and security. The goal is to discover principles for effective service-oriented design and how patterns support those principles.
Webinar "Differences between Testing in Waterfall and Agile"
presentation by Maria Teryokhina
http://www.exigenservices.ru/webinars/testing-in-waterfall-and-agile
The document provides an overview of Windows Azure, a cloud computing platform. It discusses core Azure services including virtual machines, cloud services, web roles, and storage options. The document also outlines different compute and instance sizes available on Azure and recommends starting simply with Azure's free trial to build and deploy applications that can automatically scale on demand. Resources for learning more about Azure are also referenced.
The document discusses various techniques for project estimation including three point estimation, Delphi method, planning poker, function point analysis, use case points, and PERT diagrams. It provides details on each technique including how they are conducted, their advantages and disadvantages, and when each is best applied. The key aspects that estimators need to consider for large scale projects are work partitioning challenges, increasing communication overhead with larger teams, and understanding how fast the project can realistically be completed based on its size.
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
1. Эволюция к
Behavior Driven Development
на примере популярного фреймворка
JBehave
Александр Дергачев
10 February 2012
2. Содержание
• Концепция Behavior Driven Development:
– Test Driven Development
– Domain Driven Design
– User Stories
• Использование BDD c JBehave:
– Написание и реализация сценариев на Java
– Интеграция с Maven и различными IDE
– Конфигурация Integration тестов
– Генерация отчетов в HTML
2 www.ExigenServices.com
3. Концепция Test Driven Development
1) Cначала
пишется тест
3) Рефакторинг
2) Код, чтобы
прошел тест
3 www.ExigenServices.com
4. Test Driven Development на практике
• Средства предварительной отладки и проверки
функциональности повышают скорость разработки и качество
кода
• Некоторые разработчики не могут преодолеть концептуальную
пропасть, с которой у них ассоциируется слово тестирование
• Опыт показывает, что невозможно проверить то, что еще не
существует
4 www.ExigenServices.com
5. Функциональность первична
Простой пример:
• Что такое online P2P перевод денег?
• Клиент должен иметь возможность перевести указанную сумму
со своего счета на другой.
Возможный сценарий:
• Что если у клиента не достаточно средств?
• Система должна выдать сообщение об ошибки «…» и баланс не
должен измениться.
5 www.ExigenServices.com
6. Знакомство с Behavior Driven Development
«BDD может легко и эффективно превратить требования в
написанный, протестированный, готовый к релизу код, в то время
как требования достаточно четкие, чтобы каждый понимал что
происходит.»
Метод разработки основанный на User Stories, Test Driven
Development, Domain Driven Design и Continuous Integration.
6 www.ExigenServices.com
8. Концепция Behavior Driven Development
1) Рассматриваем
один сценарии
Given user has an
2) Описываем available balance of $10
N-ый шаг
3) Код шага
не успешен user.
setBalance(value);
5)
Рефакторинг
4) Код шага
успешен
7) Рефакторинг
6) Переходим
jbehave,
к след. шагу
easyb
8 www.ExigenServices.com
9. Использование BDD c
• JBehave – это популярный Behavior Driven Development
фреймворк для платформы Java, основанная на принципах xUnit
• Автоматизирует тестирование User Stories:
– Пошаговый разбор сценариев в разных форматах
– Синхронное и асинхронное выполнение сценариев
• Расширяет Continuous Integration
• Предоставляет подробные отчеты в HTML
9 www.ExigenServices.com
10. Написание сценариев для
Scenario: Payer doesn't have enough funds
Given Alex is logged into account page
And has an available balance of $90
When he enters in the amount field $90.01
And enters in the recipient field ad@java.com
And clicks on the submit button in the form
Then Alex should see error message «…»
And available balance remains unchanged
10 www.ExigenServices.com
11. Реализация сценариев с
@Given("has an available balance of $amount")
public void aBalance(String amount) {
user.setBalance(amount);
}
@When("clicks on the $name button in the form")
public void clickButton(String name) {
selenium.click(name);
}
@Then("$user should see error message $text")
public void errorMsg(String user, String text) {
Assert.fail("not implemented");
}
11 www.ExigenServices.com
12. Конфигурация
public class P2PSendMoney extends JUnitStory {
@Given("...") { ... }
@Override
public Configuration configuration() {
return new MostUsefulConfiguration()
.useStoryReporterBuilder(
new StoryReporterBuilder()
.withFormats(CONSOLE, HTML, XML));
}
}
}
12 www.ExigenServices.com
17. Генерация отчетов в
Stories Scenarios Steps … Duration View
Name Total Successful Failed Total … (hh:mm:ss.SSS)
stats
… 6 2 4 25 (00:00:05.132) html
xml
P2P stats
Send 5 5 0 35 (00:00:15.262) html
Money xml
stats
Total 11 7 4 60 (00:00:20.394) html
xml
17 www.ExigenServices.com
18. Генерация отчетов в
P2P Send Money
com/forceassociates/onpay_webtester/stories/P2PSendMoney.story.txt
Scenario: Person registers for OnPay Examples
<…>
Scenario: Payer doesn’t have enough funds Examples
Given <name> is logged into account page name balance amount mail
And has an available balance of <balance> Alex $90 $90.01 ad@...
When he enters in the amount field <amount> Bob $0 $10 hp@...
<…> Jack $0.01 $0.02 go@...
18 www.ExigenServices.com
19. Ресурсы
• В поисках качества кода: Знакомство с Behavior Driven
Development, Эндрю Гловер, IBM Developer Works
• Behavior Driven Development, Gorden Force, The San Francisco Java
User Group
• JBehave Official Website, http://jbehave.org/index.html
• What’s in a Story?, Dan North, http://dannorth.net/whats-in-a-story
• Behavior Driven Development Official Website,
http://behaviour-driven.org
19 www.ExigenServices.com
20. Спасибо за внимание!
Given that you have heard the presentation
And discovered that BDD is really fun
When you are thinking about testing strategies
Then you should give BDD a chance!
Questions?
mailto: Aleksander.Dergachev@exigenservices.com
20 www.ExigenServices.com