1/2 day Tutorial held at XP 2013 conference in Vienna
Many teams struggle with the implementation of user story acceptance criteria and having a shared understanding about the expected story outcomes. This often results in missed stakeholder expectations, ad-hoc assumptions made by the team during implementation and conflict between team members and the product owner around testing.
In this tutorial, you will learn how specification-by-example and acceptance test driven development will address team conflict, missed stakeholder expectations and overall increasing the level of clarity on the project end-to-end. The presentation will cover the theory behind ATDD, case-studies and practical experience from real projects and several hands-on exercises to try out the presented concepts.
You will leave this tutorial with a fundamental understanding of specification-by-example and its benefits, as well as concrete pointers on how to get started using it in your own projects.
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Weaveworks
In this talk we present a prototype solution for multitenant, scale-out Prometheus. Don't worry, its open source!
Our solution turns a lot of the Prometheus architectural assumptions on its head, by marrying a scale-out PromQL query engine with a storage layer based on DynamoDB & S3. We have disaggregated the Prometheus binary into a microservices-style architecture, with separate services for distribution, ingest and storage. By designing all these services as fungible replicas, this solution can be scaled out with ease and failure of any individual replica can be dealt with gracefully.
This multitenant, scale-out Prometheus service forms a core component of the Weave Cloud, a hosted management, monitoring and visualisation platform for microservice & containerised applications. This platform is built from 100% open source components, and we're working with the Prometheus community to contribute all the changes we've made back to Prometheus.
ScreenPlay Design Patterns for QA AutomationCOMAQA.BY
На данном выступлении мы познакомимся с последними тенденциями в мире автоматизации тестирования и узнаем о новом мистическом паттерне проектирования под названием Screenplay Pattern, который согласно легенде спасёт всех нас от излишних трудов и превратит весь ваш спагетти-код в конфетку:) Узнаем какие же принципы из всем известной и непонятной аббревиатуры SOLID нарушает всеми нами горячо любимый PageObject паттерн и ещё раз все вспомним о проблемах с которыми многие из нас сталкиваются. Посмотрим, как же мы сможем навариться на этих тайных знаниях и удивить своих коллег новыми словами.
Event Streaming with Kafka Streams and Spring Cloud Stream | Soby Chacko, VMwareHostedbyConfluent
Spring Cloud Stream is a framework built on top of the foundations of Spring Boot, the foremost JVM framework for developing microservice applications. It brings the familiar patterns and philosophies that Spring has championed for years through its programming model by allowing developers to focus primarily on the business logic of their applications. Kafka Streams is a powerful stream processing library built on top of Apache Kafka and attracts many developers because of its simplicity and deployment models as microservice applications. By developing Kafka Streams applications using Spring Cloud Stream, application developers get the best of both worlds - simpler stream processing execution models of Kafka Streams and battle-tested microservices foundations of Spring Boot via Spring Cloud Stream. This talk will explore: The integration points and various capabilities of Spring Cloud Stream touchpoints with Kafka Streams How to build event streaming applications using Spring’s programming model built on top of Kafka Streams, including a demo of a stateful application using Kafka Streams and Spring Cloud Stream’s functional support How to use interactive queries to expose materialized views from the state stores in the application How this Kafka Streams application can run as part of a data pipeline using Spring Cloud Data Flow in Kubernetes
Event Sourcing, Domain Driven Design, and Command Query Responsibility Segregation – we hear all of these technologies used together frequently, but how do they actually work together? How do you manage complex co-ordination in a CQRS system?
In this talk, we will discuss a real world example of DDD with ES and CQRS written in F# - a functional first language on the .NET Framework. We’ll take a deep dive into the F# algebraic type system that constructs the domain model. Also, the explanation of the abstract notion of a DDD aggregate root compared to the CQRS implementation of an aggregate root. Finishing with how sagas and triggers facilitate poly-aggregate communication.
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Weaveworks
In this talk we present a prototype solution for multitenant, scale-out Prometheus. Don't worry, its open source!
Our solution turns a lot of the Prometheus architectural assumptions on its head, by marrying a scale-out PromQL query engine with a storage layer based on DynamoDB & S3. We have disaggregated the Prometheus binary into a microservices-style architecture, with separate services for distribution, ingest and storage. By designing all these services as fungible replicas, this solution can be scaled out with ease and failure of any individual replica can be dealt with gracefully.
This multitenant, scale-out Prometheus service forms a core component of the Weave Cloud, a hosted management, monitoring and visualisation platform for microservice & containerised applications. This platform is built from 100% open source components, and we're working with the Prometheus community to contribute all the changes we've made back to Prometheus.
ScreenPlay Design Patterns for QA AutomationCOMAQA.BY
На данном выступлении мы познакомимся с последними тенденциями в мире автоматизации тестирования и узнаем о новом мистическом паттерне проектирования под названием Screenplay Pattern, который согласно легенде спасёт всех нас от излишних трудов и превратит весь ваш спагетти-код в конфетку:) Узнаем какие же принципы из всем известной и непонятной аббревиатуры SOLID нарушает всеми нами горячо любимый PageObject паттерн и ещё раз все вспомним о проблемах с которыми многие из нас сталкиваются. Посмотрим, как же мы сможем навариться на этих тайных знаниях и удивить своих коллег новыми словами.
Event Streaming with Kafka Streams and Spring Cloud Stream | Soby Chacko, VMwareHostedbyConfluent
Spring Cloud Stream is a framework built on top of the foundations of Spring Boot, the foremost JVM framework for developing microservice applications. It brings the familiar patterns and philosophies that Spring has championed for years through its programming model by allowing developers to focus primarily on the business logic of their applications. Kafka Streams is a powerful stream processing library built on top of Apache Kafka and attracts many developers because of its simplicity and deployment models as microservice applications. By developing Kafka Streams applications using Spring Cloud Stream, application developers get the best of both worlds - simpler stream processing execution models of Kafka Streams and battle-tested microservices foundations of Spring Boot via Spring Cloud Stream. This talk will explore: The integration points and various capabilities of Spring Cloud Stream touchpoints with Kafka Streams How to build event streaming applications using Spring’s programming model built on top of Kafka Streams, including a demo of a stateful application using Kafka Streams and Spring Cloud Stream’s functional support How to use interactive queries to expose materialized views from the state stores in the application How this Kafka Streams application can run as part of a data pipeline using Spring Cloud Data Flow in Kubernetes
Event Sourcing, Domain Driven Design, and Command Query Responsibility Segregation – we hear all of these technologies used together frequently, but how do they actually work together? How do you manage complex co-ordination in a CQRS system?
In this talk, we will discuss a real world example of DDD with ES and CQRS written in F# - a functional first language on the .NET Framework. We’ll take a deep dive into the F# algebraic type system that constructs the domain model. Also, the explanation of the abstract notion of a DDD aggregate root compared to the CQRS implementation of an aggregate root. Finishing with how sagas and triggers facilitate poly-aggregate communication.
Kafka as an Event Store - is it Good Enough?Guido Schmutz
Event Sourcing and CQRS are two popular patterns for implementing a Microservices architectures. With Event Sourcing we do not store the state of an object, but instead store all the events impacting its state. Then to retrieve an object state, we have to read the different events related to a certain object and apply them one by one. CQRS (Command Query Responsibility Segregation) on the other hand is a way to dissociate writes (Command) and reads (Query). Event Sourcing and CQRS are frequently grouped and used together to form something bigger. While it is possible to implement CQRS without Event Sourcing, the opposite is not necessarily correct. In order to implement Event Sourcing, an efficient Event Store is needed. But is that also true when combining Event Sourcing and CQRS? And what is an event store in the first place and what features should it implement? This presentation will first discuss what functionalities an event store should offer and then present how Apache Kafka can be used to implement an event store. But is Kafka good enough or do specific event store solutions such as AxonDB or Event Store provide a better solution?
A short presentation that explains the internals of the Spring Boot framework. Includes an example of a starter and an autoconfig artifac, and a github repo:
https://github.com/MichelSchudel/springbootunderdahood
Refactoring page objects The Screenplay Pattern RiverGlide
As seen at BDD Exchange 2016 and Selenium Conf 2016
The Screenplay Pattern, first created by Antony Marcano, is an alternative model to PageObjects. Today, it is growing in popularity with increasing tool support in popular testing frameworks.
PageObjects provide an easy-to-follow, simple structure that avoids early maintenance issues. They were introduced to help test-developers avoid mistaking flaky tests for problems with Selenium. But, PageObjects break some key OO design rules, making maintenance more difficult over time. They are a useful first step, but why do we stop there?
In this session you’ll learn about the SOLID design principles that PageObjects disregard. You’ll see why this leads to problems. You’ll see how and why PageObjects benefit from refactoring to SOLID design principles. Finally, you’ll meet the Screenplay Pattern – an alternative model based on SOLID principles that saves you the trouble.
Cloud adoption fails - 5 ways deployments go wrong and 5 solutionsYevgeniy Brikman
"All happy cloud deployments are alike; each unhappy cloud deployment is unhappy in its own way." — Leo Tolstoy, Site Reliability Engineer
At Gruntwork, I've had the chance to see the cloud adoption journeys of hundreds of companies, from tiny startups to Fortune 50 giants. I've seen those journeys go well. I've seen those journeys go poorly. In this talk, I discuss a few of the ways cloud adoption can go horribly wrong (massive cost overruns, endless death marches, security disasters), and more importantly, how you can get it right.
To help you get it right, we looked at the cloud journeys that were successful and extracted from them the patterns they had in common. We distilled all this experience down into something called the Gruntwork Production Framework, which defines five concrete steps you can follow to adopt the cloud at your own company—and hopefully, to end up with your very own happy cloud deployment.
Domain Driven Design - Strategic Patterns and MicroservicesRadosław Maziarka
Presentation describes Domain Driven Design - approach to create applications driven by business domain. I show how to split your monolith base on DDD strategic patterns.
As businesses grow, so does the complexity of their software. New features, new models, and new background processes all continue to be added. . .and developers struggle to make sense of it all. Yet the end user demands a swift and functional experience when interacting with your application. It is paramount to be open to alternative patterns that help tame complex, high-demand services. Two such patterns are command-query responsibility segregation (CQRS) and event sourcing (ES).
Command-query responsibility segregation is an architectural pattern for user-facing applications that extends from the now standard Model-View-Controller (MVC) pattern and is an alternative to the CRUD pattern. At its core, CQRS is about changing how we think of and work with our data by introducing two types of models: all user actions become commands, and a read-only query model powers our views. Commands and queries are logistically separated, providing additional decoupling of our application. CQRS also calls for changes in how we store and structure our data.
Enter event sourcing. Instead of persisting the current state of our domain objects or entities, we record historical events about our data. The key advantage is that we can examine our application data at any point in time, rather than just the current state. This pattern changes how we persist and process our data but is surprisingly efficient.
While each of the two patterns can be used exclusively, they complement each other beautifully and facilitate the construction of decoupled, scalable applications or individual services. Stephen Pember explores the fundamentals of each pattern and offers several examples and demonstration code to show how one might actually go about implementing CQRS and ES. Steve discusses task-based UIs and domain-driven design as he outlines some of the advantages—and challenges—that ThirdChannel has seen when developing systems using CQRS and ES over the past year.
Bootiful Development with Spring Boot and Angular - Connect.Tech 2017Matt Raible
Intro to Spring Boot and Angular presentation from JHipster 4 Workshop on Connect.Tech 2017.
To simplify development and deployment, you want everything in the same artifact, so you put on your Angular app "inside" and your Spring Boot app, right? But what if you could create your Angular app as a standalone app and make cross-origin requests to your API? This session shows how to develop with Java 8, Spring Boot, Angular 4, and TypeScript. You'll learn how to create REST endpoints with Spring MVC, Spring Data REST, configure Spring Boot to allow CORS, and create an Angular app to display its data.
Get an overview of HashiCorp's Vault concepts.
Learn how to start a Vault server.
Learn how to use the Vault's postgresql backend.
See an overview of the Vault's SSH backend integration.
This presentation was held on the DigitalOcean Meetup in Berlin. Find more details here: https://www.meetup.com/DigitalOceanBerlin/events/237123195/
Talk given at DDDx London on 27th of April about how to implement long running processes in Domain Driven Design properly. Describes patterns like Process Manager and Saga.
Specification by example and agile acceptance testinggojkoadzic
Specification by example and agile acceptance testing, presentation given to HSBC developers on 21/09/09 for more info see http://specificationbyexample.com
Kafka as an Event Store - is it Good Enough?Guido Schmutz
Event Sourcing and CQRS are two popular patterns for implementing a Microservices architectures. With Event Sourcing we do not store the state of an object, but instead store all the events impacting its state. Then to retrieve an object state, we have to read the different events related to a certain object and apply them one by one. CQRS (Command Query Responsibility Segregation) on the other hand is a way to dissociate writes (Command) and reads (Query). Event Sourcing and CQRS are frequently grouped and used together to form something bigger. While it is possible to implement CQRS without Event Sourcing, the opposite is not necessarily correct. In order to implement Event Sourcing, an efficient Event Store is needed. But is that also true when combining Event Sourcing and CQRS? And what is an event store in the first place and what features should it implement? This presentation will first discuss what functionalities an event store should offer and then present how Apache Kafka can be used to implement an event store. But is Kafka good enough or do specific event store solutions such as AxonDB or Event Store provide a better solution?
A short presentation that explains the internals of the Spring Boot framework. Includes an example of a starter and an autoconfig artifac, and a github repo:
https://github.com/MichelSchudel/springbootunderdahood
Refactoring page objects The Screenplay Pattern RiverGlide
As seen at BDD Exchange 2016 and Selenium Conf 2016
The Screenplay Pattern, first created by Antony Marcano, is an alternative model to PageObjects. Today, it is growing in popularity with increasing tool support in popular testing frameworks.
PageObjects provide an easy-to-follow, simple structure that avoids early maintenance issues. They were introduced to help test-developers avoid mistaking flaky tests for problems with Selenium. But, PageObjects break some key OO design rules, making maintenance more difficult over time. They are a useful first step, but why do we stop there?
In this session you’ll learn about the SOLID design principles that PageObjects disregard. You’ll see why this leads to problems. You’ll see how and why PageObjects benefit from refactoring to SOLID design principles. Finally, you’ll meet the Screenplay Pattern – an alternative model based on SOLID principles that saves you the trouble.
Cloud adoption fails - 5 ways deployments go wrong and 5 solutionsYevgeniy Brikman
"All happy cloud deployments are alike; each unhappy cloud deployment is unhappy in its own way." — Leo Tolstoy, Site Reliability Engineer
At Gruntwork, I've had the chance to see the cloud adoption journeys of hundreds of companies, from tiny startups to Fortune 50 giants. I've seen those journeys go well. I've seen those journeys go poorly. In this talk, I discuss a few of the ways cloud adoption can go horribly wrong (massive cost overruns, endless death marches, security disasters), and more importantly, how you can get it right.
To help you get it right, we looked at the cloud journeys that were successful and extracted from them the patterns they had in common. We distilled all this experience down into something called the Gruntwork Production Framework, which defines five concrete steps you can follow to adopt the cloud at your own company—and hopefully, to end up with your very own happy cloud deployment.
Domain Driven Design - Strategic Patterns and MicroservicesRadosław Maziarka
Presentation describes Domain Driven Design - approach to create applications driven by business domain. I show how to split your monolith base on DDD strategic patterns.
As businesses grow, so does the complexity of their software. New features, new models, and new background processes all continue to be added. . .and developers struggle to make sense of it all. Yet the end user demands a swift and functional experience when interacting with your application. It is paramount to be open to alternative patterns that help tame complex, high-demand services. Two such patterns are command-query responsibility segregation (CQRS) and event sourcing (ES).
Command-query responsibility segregation is an architectural pattern for user-facing applications that extends from the now standard Model-View-Controller (MVC) pattern and is an alternative to the CRUD pattern. At its core, CQRS is about changing how we think of and work with our data by introducing two types of models: all user actions become commands, and a read-only query model powers our views. Commands and queries are logistically separated, providing additional decoupling of our application. CQRS also calls for changes in how we store and structure our data.
Enter event sourcing. Instead of persisting the current state of our domain objects or entities, we record historical events about our data. The key advantage is that we can examine our application data at any point in time, rather than just the current state. This pattern changes how we persist and process our data but is surprisingly efficient.
While each of the two patterns can be used exclusively, they complement each other beautifully and facilitate the construction of decoupled, scalable applications or individual services. Stephen Pember explores the fundamentals of each pattern and offers several examples and demonstration code to show how one might actually go about implementing CQRS and ES. Steve discusses task-based UIs and domain-driven design as he outlines some of the advantages—and challenges—that ThirdChannel has seen when developing systems using CQRS and ES over the past year.
Bootiful Development with Spring Boot and Angular - Connect.Tech 2017Matt Raible
Intro to Spring Boot and Angular presentation from JHipster 4 Workshop on Connect.Tech 2017.
To simplify development and deployment, you want everything in the same artifact, so you put on your Angular app "inside" and your Spring Boot app, right? But what if you could create your Angular app as a standalone app and make cross-origin requests to your API? This session shows how to develop with Java 8, Spring Boot, Angular 4, and TypeScript. You'll learn how to create REST endpoints with Spring MVC, Spring Data REST, configure Spring Boot to allow CORS, and create an Angular app to display its data.
Get an overview of HashiCorp's Vault concepts.
Learn how to start a Vault server.
Learn how to use the Vault's postgresql backend.
See an overview of the Vault's SSH backend integration.
This presentation was held on the DigitalOcean Meetup in Berlin. Find more details here: https://www.meetup.com/DigitalOceanBerlin/events/237123195/
Talk given at DDDx London on 27th of April about how to implement long running processes in Domain Driven Design properly. Describes patterns like Process Manager and Saga.
Specification by example and agile acceptance testinggojkoadzic
Specification by example and agile acceptance testing, presentation given to HSBC developers on 21/09/09 for more info see http://specificationbyexample.com
Many teams struggle with the implementation of user story acceptance criteria and having a shared understanding about the expected story outcomes. This often results in missed stakeholder expectations, ad-hoc assumptions made by the team during implementation and conflict between team members and the product owner around testing.
This session shows how specification-by-example and acceptance test driven development will address team conflict, missed stakeholder expectations and overall increasing the level of clarity on the project end-to-end. The presentation will cover the theory behind ATDD and case-studies and practical experience from real projects.
The talk was held at the ALM summit 3 in Redmond, January 2013. Recording of the talk can be found here: http://channel9.msdn.com/Events/ALM-Summit/ALM-Summit-3/Implementing-ATDD-and-Specification-By-Example
Specification by example - course summaryJakub Holy
Key lessons from the course on specification by example called From user stories to acceptance tests lead by Gojko Adzic in Oslo, 1/2012.
What SbE is, what are its key goals, how to introduce it, selected techniques including Effect Mapping and Specification Workshop.
Behaviour Driven Development (BDD) is an evolution of test-driven development that places explicit emphasis on language, communication and 'outside-in' development. Many people are familiar with the 'Given,When,Then' structure used in BDD specifications (or acceptance tests) but is that really where it ends? In this session Antony Marcano gives a short intro to BDD, explains 'outside-in' development. Using a metaphor from learning theory and HCI principles, he'll show you how to go beyond 'Given,When,Then' to a shared understanding of
your customer's needs.
Acceptance Test Driven Development and Robot FrameworkSteve Zhang
This presentation is about using Robot Framework automation test framework to implement Acceptance Test Driven Development, BDD or Specification By Example
An Overview of User Acceptance Testing (UAT)Usersnap
What is User Acceptance Testing? Also known as UAT or UAT testing.
it's basically, a process of verifying that a solution works for the user.
And the key word here, is user. This is crucial, because they’re the people who will use the software on a daily basis. There are many aspects to consider with respect to software functionality. There’s unit testing, functional testing, integration testing, and system testing, amongst many others.
What Is User Acceptance Testing?
I’ll keep it simple; according to Techopedia, UAT (some people call it UAT testing as well) is:
User acceptance testing (UAT) is the last phase of the software testing process. During UAT, actual software users test the software to make sure it can handle required tasks in real-world scenarios, according to specifications. UAT is one of the final and critical software project procedures that must occur before newly developed software is rolled out to the market.
User acceptance testing (UAT), otherwise known as Beta, Application, or End-User Testing, is often considered the last phase in the web development process, the one before final installation of the software on the client site, or final distribution of it.
How to become a 'specification by example' rocket scientistEquinox IT
View an article outlining this presentation at http://www.equinox.co.nz/blog/specification-by-example-better-business-analyst. Presented by Kirsten Eriksen and Ben Hughes at the IIBA Business Analysis Developer Day conference in Wellington, New Zealand in November 2015. The presentation focuses on using the 'specification by example' approach as a business analyst.
Presented at GoTo Night Zurich, June 12 2014
Many teams struggle with the implementation of user story acceptance criteria and establishing a shared understanding about the expected story outcomes. This results in missed stakeholder expectations and ad-hoc assumptions made by the team. High efforts for regression testing and the lack of a reliable documentation about the current system behavior are further problems resulting from an unstructured approach to define and validate acceptance criteria.
In this session, you will learn how specification-by-example addresses these problems and overall increases the level of clarity on the project end-to-end. The presentation will cover the theory and practical experience from real projects, with concrete implementation examples based on the Gherkin specification language, that can be used for automated specification validation (available for .NET, Java, Ruby, PHP, JavaScript).
You will leave this session with a fundamental understanding of specification-by-example and its benefits, as well as concrete pointers on how to get started using it in your own projects.
Secondary Case Study on The Gherkin Building, London.
Presented as part of the Structures Seminar for B.Arch. Programme at School of Planning & Architecture, New Delhi, India
Transforming JSON data to Java object is easy. But, how if it cannot handle the unrecognized field? Everything must be strictly defined. So, how to adapt to change?
How I learned to stop worrying and love flexible scope.Christian Hassa
Video available here: http://skillsmatter.com/podcast/agile-testing/keynote-gojko-adzic
Not fixing scope too far in the future is one of the cornerstones of agile delivery, but it is at the same time the thing that enterprise stakeholders fear the most. Ironically, being able to change decisions after delivery starts is one of the biggest benefits that companies can get from agile delivery, so it's necessary to stop worrying and embrace flexible scope to get the full benefits of an iterative process. Join Christian Hassa and Gojko Adzic to discuss how to convince people to embrace flexible scope, not only for startup environments but for big enterprise projects as well.
Presentation held on Swiss Requirements Day 2013 in Zurich
Many teams struggle with the implementation of user story acceptance criteria and establishing a shared understanding about the expected story outcomes. This results in missed stakeholder expectations and ad-hoc assumptions made by the team. High efforts for regression testing and the lack of a reliable documentation about the current system behavior are further problems resulting from an unstructured approach to define and validate acceptance criteria.
In this session, you will learn how specification-by-example addresses these problems and overall increases the level of clarity on the project end-to-end. The presentation will cover the theory and practical experience from real projects, with concrete implementation examples based on the Gherkin specification language, that can be used for automated specification validation (available for .NET, Java, Ruby, PHP, JavaScript).
You will leave this session with a fundamental understanding of specification-by-example and its benefits, as well as concrete pointers on how to get started using it in your own projects.
From impact to stakeholder examples: Three techniques for end-to-end requirem...Christian Hassa
Presented Agile Adria 2013, April 22nd
A recording of the talk is available here: https://www.youtube.com/watch?v=IiX5FZLxSUE
Requirements in agile development are much more than just a prioritized list of user stories. Release planning can be as important as the documentation of implemented business rule details.
This talk introduces three popular techniques for discovering user needs on different goal levels, and how they fit together: Impact Mapping for strategic release planning, Story Mapping for designing and optimizing the scope of a release and Specification-By-Example for establishing a shared understanding about domain details and as an enabler for automated, business readable acceptance tests.
You will leave this session with an overview about these three techniques, and how you can combine them in your daily work.
The target audience are teams already working in an agile (or somewhat agile) environment and are familiar with the basic agile practices.
Cross mobile testautomation mit Xamarin & SpecFlowChristian Hassa
Test automation can be implemented most efficiently as a by-product of Specification-By-Example (SbE). It combines acceptance criteria specification and acceptance test driven development (ATDD, BDD) to build automatically validated specifications of the system. The practice is well established in many teams for “traditional” enterprise application development (web clients, rich clients, services), and supported with a broad range of tools.
In mobile development, however, we seem to start over again with bare-bones test automation tool support that provokes post implementation test automation, which is costly and hard to maintain. Teams that had already successfully applied ATDD/BDD fall back into old habits when moving to mobile development. This is due to the lack of tool support and a lack of confidence that the principles that worked before can also be applied in mobile development.
Join Gaspar, Christian and Andreas for a brief introduction to BDD and Specification-By-Example. They’ll then show how it can be put into practice with SpecFlow and Calabash for a mobile app that is developed using Xamarin.
Impact Mapping: Guiding Agile Teams with Customer Obsession (workshop)Christian Hassa
How to you know that you're building the right product? In order to enable autonomous product teams you need a way to align the activities of delivery teams with the goals of the organisation. Impact Mapping offers the opportunity to align teams to business objectives, test mutual understanding of goals and expected outcomes with stakeholders, focus teams toward delivering the highest value and enable collaborative decision-making.
(German) Slides from Manage Agile Berlin 2017 (15.11.2017)
---
Agile Methoden helfen bei der Risikominimierung sowie der Einhaltung von Budgets und Terminen. Doch wie steuert man agile Teams, damit all diese Versprechen auch tatsächlich erfüllt werden?
In der Praxis scheitern agile Teams meist auf Grund der fehlenden Einbindung von Auftraggebern und Management. Als Folge wird nach alt gewohnter Manier das definierte Backlog vollständig und möglichst zum vorgegebenen Budget und Termin abgearbeitet. Das eigentliche Ziel der Auftraggeber bleibt hingegen unzureichend definiert oder gänzlich unbekannt. Kein Wunder also, dass viele agile Teams nicht die hochgesteckten Erwartungen der Auftraggeber erfüllen können.
Impact Mapping ist eine Methode, mit der die tatsächlichen Erfolgskriterien eines Vorhabens extrahiert und mit allen Beteiligten abgestimmt werden können. Die dafür vermuteten Kausalitätsketten werden messbar mit den Lösungsoptionen des Backlogs in Verbindung gebracht, um sie dann mittels iterativer Entwicklung über kurze Feedbackschlaufen zu validieren. Dies erlaubt die strategische Steuerung agiler Projekt- und Produktentwicklung.
Erfahren Sie, wie Projektauftraggeber und Management agile Teams strategisch Steuern können, um damit ihre Vorhaben zielgerichteter und erfolgreicher umzusetzen. Neben einer Einführung zu Impact Mapping wird auch die praktische Anwendung in der Softwareentwicklung an Hand von Beispielen gezeigt.
Agile Methoden helfen bei der Risikominimierung sowie der Einhaltung von Budgets und Terminen. Doch wie steuert man agile Teams, damit all diese Versprechungen erfüllt werden?
In der Praxis scheitern viele bereits an einer sinnvollen Priorisierung von User Stories. Im Vordergrund steht oft nur die Abarbeitung des definierten Backlogs innerhalb des vorhandenen Budgets zum vorgegebenen Termin. Das eigentliche Ziel des Vorhabens bleibt hingegen unzureichend definiert oder gänzlich unbekannt. Kein Wunder also, dass eine Vielzahl von Vorhaben trotz agiler Vorgehensweise nicht die hochgesteckten Erwartungen der Auftraggeber erfüllen.
Impact Mapping ist eine Methode, mit deren Hilfe die tatsächlichen Erfolgskriterien eines Vorhabens extrahiert und mit allen Beteiligten abgestimmt werden können. Dazu vermutete und messbare Kausalitätsketten werden mit den Lösungsoptionen des Backlogs in Verbindung gebracht, die dann mittels iterativer Entwicklung über kurze Feedbackschlaufen validiert werden. Dies erlaubt die strategische Steuerung agiler Projekt- und Produktentwicklung.
Der Vortrag bringt eine Einführung zu Impact Mapping, und zeigt deren praktische Anwendung in der Softwareentwicklung.
Recording can be watched here: https://t.co/OLtqJNCMUf
Impact Mapping is a strategic planning technique that prevents Agile organizations from getting lost while building products and delivering projects by clearly communicating assumptions, helping teams align their activities with overall business objectives, and helping make better roadmap decisions. Impact mapping can help you make an impact, not just ship software. In this Scrum Alliance® Collaboration at Scale webinar, we presented an overview of Impact Mapping, outlined how it fits into Scrum-centric Agile practices, and explored some of the unique opportunities and drawbacks that occur when leveraging Impact Maps in distributed teams.
Impact Mapping - delivering what really matters!Christian Hassa
Product backlogs are much too often flooded with user stories, thwarting the basic agile tenet “Build – Measure – Learn”. Diligent adherence to agile rituals and short iterative cycles will not help if this driving factor is missing. This often leads to efficient teams building the wrong product, or, even worse, just investing into iterative delivery without reaping any of its benefits.
Impact mapping is a method that can spark this drive: it supports an iterative approach to product design that is often neglected when user story lists are simply prioritised in the product backlog. The method is highly visual and supports the entire project team throughout the process of discovering, prioritising and detailing customers’ requirements together.
Upcoming workshops and training 2017 (Certified Scrum Master, Certified Product Owner, Specification-By-Example, Product Owner Key Skills, Migrating to a Serverless Architecture, Font-End Entwicklung Angular, JavaScript und TypeScript, Agiles Requirements Engineering)
Impact Mapping is a lightweight method for strategic planning in product and project development. Although seemingly simple and intuitive, many teams fail to get the most out of it because they jump to conclusions too quickly and skip over important discussions. Christian and Gojko will talk about how to avoid common pitfalls and present two games that can help you facilitate impact mapping easily, support innovative ideas and divergent thinking, and help your teams and clients make a big impact through software delivery.
Impact Maps/Story Maps - liefern was wirklich zähltChristian Hassa
Presentation from: Tools 4 Agile Teams Wiesbaden, Sept 18 2015
Impact Maps und Story Maps: liefern was wirklich zählt
Häufig verfehlen Softwarelösungen die Erwartungen der Auftraggeber, weil dem Team nur zu entwickelnde Funktionen kommuniziert werden, nicht aber das eigentliche Problem und der zu erzielenden Nutzen.
Impact Maps und Story Maps bieten eine einfache und schnelle Visualisierung der Problemstellung und möglicher Lösungsoptionen, und unterstützen so die Zusammenarbeit zwischen Team und Kunde. Der Vortrag gibt eine Einführung in die beiden Methoden, und zeigt deren Kombination und praktische Anwendung.
From Impacts to Specifications
This is a compilation of several of my presentations for working with agile requirements on different goal levels, and how impact mapping, story mapping and specification-by-example work together.
Impact Maps und Story Maps - liefern was wirklich zähltChristian Hassa
(German) slides of presentation at OOP 2014, Munich
Agile Projektentwicklung erfüllt oft nicht die hoch gesteckten Erwartungen aller Beteiligten. Impact Maps und Story Maps unterstützen einen wichtigen Mechanismus, der agile Projekte erfolgreich macht und der häufig außer Acht gelassen wird: Build-Measure-Learn. Der Vortrag gibt eine Einführung in das Konzept von Impact Maps und Story Maps und zeigt deren praktische Anwendung an Hand konkreter Projektbeispiele.
Agile Projektentwicklung erfüllt oft nicht die hoch gesteckten Erwartungen aller Beteiligten. Story-Maps und Impact-Maps unterstützen einen wichtigen Mechanismus, der agile Projekte erfolgreich macht und der häufig außer Acht gelassen wird. Der Workshop gibt eine Einführung in das Konzept von Impact Maps und Story Maps, und zeigt deren praktische Anwendung an Hand konkreter Projektbeispiele.
Live it - or leave it! Returning your investment into AgileChristian Hassa
Keynote at Agile Testing Days Berlin 2013
If you’re involved with software development, there is probably no way you can ignore it anymore: the agile approach. With everyone talking about it, there is a certain pressure to adopt agile methods. This brings with it the danger of introducing a bunch of practices without placing enough emphasis on the two main success factors: continuously improving software and continuously improving teams.
The latter is usually driven more or less automatically by the self-interest of the directly affected individuals – after all, nobody deliberately wants to be inefficient. "Continuously improving software" on the other hand will almost certainly go wrong at first, because trust and feedback are much harder to establish between stakeholders (customers, team) than within a team. This often leads to efficient teams building the wrong product, or, even worse, just investing into iterative delivery without enjoying any of its benefits.
Efficiency is therefore just one component for ensuring a good return on investment when adopting Agile. In this talk, I want to focus on the other part – effectiveness – and how it impacts on the way teams collaborate with their customers. I'll introduce a few techniques (Story Mapping, Specification-By-Example) that support this change and present examples from past projects in the financial and public sector where they proved successful.
How I learned stop worrying and how to love flexible scope.Christian Hassa
Not fixing scope too far in the future is one of the cornerstones of agile delivery, but it is at the same time the thing that enterprise stakeholders fear the most. Ironically, being able to change decisions after delivery starts is one of the biggest benefits that companies can get from agile delivery. So it's necessary to stop worrying and embrace flexible scope to get the full benefits of an iterative process. Join Christian Hassa and Gojko Adzic to discuss how to convince people to embrace flexible scope, not only for startup environments but for big enterprise projects as well.
Vortrag auf Lean, Agile & Scrum Konferenz 2013 in Zürich
Agile Projektentwicklung erfüllt oft nicht die hoch gesteckten Erwartungen aller Beteiligten. Story-Maps unterstützen einen wichtigen Mechanismus, der agile Projekte erfolgreich macht und der häufig außer Acht gelassen wird. Der Vortrag gibt eine Einführung in das Konzept von Story Maps und zeigt deren praktische Anwendung an Hand konkreter Projektbeispiele.
Build-Measure-Learn: Was macht agile Methoden erfolgreich?Christian Hassa
Agile Methoden dringen unaufhaltsam in alle Bereiche der Softwareentwicklung vor. Wo IT-Abteilungen den Schritt (noch) nicht wagen wollen, drängt die Business-Seite zu mehr Flexibilität und kürzeren Lieferzyklen, um im Wettbewerb bestehen zu können. Immer häufiger jedoch erbringt die Umstellung auf agile Softwareentwicklung nicht jene Vorteile, die erhofft und möglich wären.
Die Ursache hierfür ist meistens, dass der agile Kernmechanismus blockiert wird: Build – Measure – Learn. Wenn dieser Motor im Projekt nicht anspringt, hilft weder die eifrige Befolgung agiler Rituale, noch die Lieferung in kurzen Iterationen.
Der Vortrag erläutert, mit welchen Methoden dieser Mechanismus in Gang gebracht werden kann, und bringt Beispiele aus der Praxis über deren Anwendung und Wirkung.
Tutorial: Story Maps in practice: enable early feedback to build what really ...Christian Hassa
1/2 day tutorial held at XP 2013 conference in Vienna.
Build – Measure – Learn is one of the most important mechanisms of agile software development. However, this mechanism is often crippled in nowadays projects, where traditional approaches of requirements gathering are bloating up product backlogs that cannot be prioritized anymore in a meaningful way. The results are customers not interested in iteration results, release to production that happens only at the end of the project, and feedback from customers when it is already too late and the budget is burned up.
Story mapping is a method that aligns user stories along desirable outcomes, so that customers can give sooner meaningful feedback, and release to production can happen earlier. The method helps slicing and prioritizing user stories, and addresses the product design aspect that is missing when just working with a product backlog. The method is highly visual and facilitates shared product ownership among product owner, team and customer.
This workshop gives a hands-on introduction to story mapping. Participants will be introduced to the concept and build their first story map during the workshop. The workshop concludes with things I’ve learned so far in using story maps in own projects, and what further benefits story maps can provide.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
5. 5
Impact Mapping
Story Mapping
Specification-By-Example
Establishing a shared understanding
Why?
How?
Code
Acceptance
Criterion
Epic
Capability
Impact, Goal
Easier to define upfront Harder to define upfront
Bug
report
Isolated,
formalized
example
Feature
User Story
Example
Reminder
for a
discussion
6. 6
Collecting Acceptance Criteria
“I would try to put a book into the
shopping cart …”
“I would try to remove a book
from the shopping cart…”
“I’d check whether the shopping cart
is empty, when I enter the shop …”
“I would try to add the same book
again to the shopping cart …”
Books can be placed into
shopping cart.
Books can be removed from
shopping cart.
Shopping cart should be empty
when entering the shop.
Adding same book again to
shopping cart should increase
quantity.
As a potential customer
I want to collect books in a shopping cart
So that I can order several books at once.
“Imagine this story is
already implemented:
how would you verify it?”
8. 8
Exercise: Smart Alarm
• What would you try out when the following user story was
done?
• Collect and write down the list of discussed acceptance criteria
• Work in groups of 2-3
As a regular traveler
I want to setup a
smart alarm
so that I can be
warned about service
disruptions
I want to setup
multiple smart
alarms
so that I can plan
ahead for different
travel plans I have
11. 11
Specification-by-Example
Examples …
• make abstract descriptions
better understandable
However …
• examples are usually not formally
exchanged or documented
Brian Marick
Examples Tests
Requirements
consist of
describe verify
fulfillment of
12. 12
Discussion of acceptance criteria
public void TestInitialOrderDiscount()
{
Customer newCustomer = new Customer();
Order newOrder = new Order(newCustomer);
newOrder.AddBook(
Catalog.Find(“ISBN-0955683610”)
);
Assert.Equals(33.75,
newOrder.Subtotal);
}
Register as “bart_bookworm”
Go to “/catalog/search”
Enter “ISBN-0955683610”
Click “Search”
Click “Add to Cart”
Click “View Cart”
Verify “Subtotal” is “$33.75”
We would like to encourage new users to
buy in our shop.
Therefore we offer 10% discount for their
first order.
Original idea for the illustration: George Dinwiddie
http://blog.gdinwidiee.com
13. 13
… illustrated with formalized examples
Given the user has not ordered yet
When the user adds a book with the price of EUR 37.5
into the shopping cart
Then the shopping cart sub-total is EUR 33.75.
Original idea for the illustration: George Dinwiddie
http://blog.gdinwidiee.com
14. 14
Discover hidden assumptions
Actually, this is not quite right:
Books on sale should be excluded.
Original idea for the illustration: George Dinwiddie
http://blog.gdinwidiee.com
16. 16
Abstract acceptance criteria
As a shop visitor
I want to collect books in my shopping basket
so that I can purchase multiple books at once.
Books can be added to the shopping basket
Books can be removed from the shopping basket
Shopping basket is initially empty
The same book can be added multiple times to the shopping
basket
17. 17
Examples for acceptance criteria
As a shop visitor
I want to collect books in my shopping basket
so that I can purchase multiple books at once.
Books can be added to the shopping basket
Given my shopping basket is empty
When I add the book “Harry Potter” to my shopping basket
Then my shopping basket should contain 1 copy of “Harry Potter”
18. 18
As a shop visitor
I want to collect books in my shopping basket
so that I can purchase multiple books at once.
Books can be added to the shopping basket
Examples for acceptance criteria
Given my shopping basket contains 1 copy of “Harry Potter”
When I add the book “Harry Potter” to my shopping basket
Then my shopping basket should contain 2 copies of “Harry Potter”
The same book can be added multiple times to the shopping basket
19. 19
The same book can be added multiple times to the shopping basket
Structure of examples
Given my shopping basket contains 1 copy of “Harry Potter”
When I add the book “Harry Potter” to my shopping basket
Then my shopping basket should contain 2 copies of “Harry Potter”
Title: Describes intention/abstract acceptance criterion
Arrange: Context, initial state of the system
Act: Execution of the feature
Assert: Assertion of observable behaviour
And I should see the warning: “Book already existed in basket”
Triple-A
constraint
“Checks”
Chaining
up steps
21. 21
Feature: Description of feature or user story
Szenariogrundriss: Beschreibung des Akzeptanzkriteriums
Szenario: Beschreibung des Akzeptanzkriteriums
Gherkin Feature Files
Background: context for all scenarios in the feature file
Scenario: Description of acceptance criterion
Angenommen/Wenn/Dann: Automatisierte Szenario Schritte
Given/When/Then: automated scenario steps
Scenario Outline: Description of acceptance criterion
Angenommen/Wenn/Dann: Automatisierte Szenario Schritte
Given/When/Then: automated scenario steps with <place holder>
Examples: table with examples for <place holders>Examples: table with examples for <place holders>
Given: automated scenario steps
@tagname
@tagname
@tagname
@tagname
22. 22
Feature
Feature: Description of feature or user story
#language:en-en
@done
Feature: Shopping cart
As visitor of the web shop
I want to collect books in a shopping cart
so that I can
- prepare a short list of books I want to order
- combine multiple books in one shipment
@Tagname
23. 23
Scenario
Scenario: Description of acceptance criterion
Angenommen/Wenn/Dann: Automatisierte Szenario Schritte
Given/When/Then: automated scenario steps
@Tagname
@inprogress
Scenario: The same book can be added multiple times to shopping cart
Given my shopping cart contains 1 copy of "Harry Potter"
When I add the book "Harry Potter" to the shopping cart
Then my shopping cart contains 2 copies of "Harry Potter"
And a warning is displayed: "You have added the same book again"
24. 24
Scenario Outline
Scenario Outline: Description of acceptance criterion
Angenommen/Wenn/Dann: Automatisierte Szenario Schritte
Examples: table with examples for <place holders>
Given/When/Then: automated scenario steps with <place holder>
Examples: table with examples for <place holders>
@Tagname
@Tagname
Scenario Outline: Simple search
When I search for books by the phrase '<search phrase>'
Then the list of found books should contain only: <books>
Examples:
| search phrase | books | Explanation |
| Domain | 'Domain …' | whole words are matched |
| Analysis Communication | 'Bridging…', 'Analysis …' | multiple words are matched with OR |
Scenario Outline: Candidate profile can only be saved with <mandatory field>
When I enter a valid candidate profile, without filling in '<mandatory field>'
Then I see the following validation error: 'field <mandatory field> missing'
Examples: Main fields
| mandatory field |
| email |
| name |
| first name |
Examples: Extended fields
| mandatory field |
| birthdate |
25. 25
Background
Background: context for all scenarios in the feature file
Given: automated scenario steps
Background:
Given the catalog contains the following books
| Title | Author |
| Specification-By-Example | Gojko Adzic |
| Agile Testing | Lisa Crispin, Janet Gregory |
| Scrum Field Guide | Mitch Lacey |
26. 26
Scenario step arguments
Given the catalog contains the following books
| Title | Author |
| Specification-By-Example | Gojko Adzic |
| Agile Testing | Lisa Crispin, Janet Gregory |
| Scrum Field Guide | Mitch Lacey |
When I add the book "Harry Potter" to the shopping cart
Scalar arguments:
Table arguments:
27. 27
Exercise
• Work in same previous groups of 2-3
• Pick an acceptance criteria from the
previously compiled list
• Outline usage examples with the following
structure
• Given: Context, initial state
• When: utilization of the feature
• Then: assertions of observable behaviour
• Validate that scenario title (acceptance
criterion) still describes intention of
formalized scenario
29. 29
Purpose of the examples
• Shared understanding:
acceptance criteria
• Documentation:
system details
• Regression-tests:
violated assumptions
30. 30
Continuous validation with automation
Given my shopping basket contains 1 copy of “Harry Potter”
When I add the book “Harry Potter” to my shopping basket
Then my shopping basket should contain 2 copies of “Harry Potter”
System
„Step Definitions“ are binding individual steps
to an automatable interface of the application.
Automatable
interface
UI
Automation
Automation does not necessarily have to bind to the UI.
Automatability of system is supported/evolving with development.
32. 32
Some more complex exercises
Choose between
• Best-fare option ticket
• Smart Alarm
33. 33
Best-fare option ticket
• Assumptions
• Ticket price is always adjusted during
validation to the best option (considering
all previous trips)
• Feedback about cost of travel and ticket
option (type) after each validation
• Valid in the core zone 100
• Scope of the story
• Different travel scenarios and how the
price adjusts
• Billings resulting from the user’s travel
• Feedback to traveler (cost of travel, status
of ticket) when validating ticket
• Out of scope for this story
• Credit limit of traveler
• Authentication of ticket (validity)
As an ad-hoc traveler
I want my ticket to adjust
to the best available fare
whenever I validate
So that I don’t need to
study upfront which ticket
I need
Ticket Type Price
Single trip 2,10
24 hours 7,10
48 hours 12,40
72 hours 15,40
8 days 35,80
Week 15,00
Month 45,00
Year 365,00
34. 34
Smart Alarm
• Assumptions
• User can specify route to monitor for
disruptions
• User can specify when disruptions
should trigger the alarm earlier
(minutes before alarm)
• Scope of the story
• Different possibilities of disruptions
provided by GTFS and their impact on
activating the alarm
• Out of scope for this story
• Configuring routes (the user is
selecting an already defined route)
• Setting up alarms (the user has
already setup an alarm)
As a regular traveler
I want to have a smart
alarm that activates
earlier when there are
traffic disruptions on my
route
So that I can travel earlier
to be still on time for my
appointment
35. 35
Exercise
Choose between
• Best-fare option ticket
• Smart Alarm
Collect and discuss scenarios
• What would you try out?
• Collect examples
• Limit scope of the story
36. 36
Exercise
Refine scenarios and formalize
into Gherkin
• Start with a “warm-up” scenario
• Increase complexity with additional
scenarios
• Reconsider structure of scenarios as you
refine them
• Validate scenario title/description after
refinement
38. 38
Test automation becomes expensive
when …
• trying to automate
manual tests
• making tests
unreadable when
automating them
• automating after
completing
development
structure
readability
point in time
39. 39
Structure
Manual tests
Asserts Multiple combined
features
Structure ACT-ASSERT-
ACT-ASSERT-
ACT-ASSERT-
…
Dependent features
Long test path with
high chance to break
Cause and impact of
error hard to trace
Automated Check
Single aspect of a
single feature
ARRANGE –
ACT –
ASSERT
Independent features
Short test path with
lower chance to break
Cause and impact of
error easy to relate
41. 41
// Go to web page 'http://localhost:40001/' using new browser instance
BrowserWindow localhostBrowser = BrowserWindow.Launch(
new System.Uri(this.RecordedMethod1Params.Url));
// Click 'Register found item' link
Mouse.Click(uIFundstückerfassenHyperlink, new Point(56, 9));
// Click 'Save' button
Mouse.Click(uISpeichernButton, new Point(44, 14));
int fundNr1 = int.Parse(uIFundNr127Pane.InnerText.Substring(9));
// Click 'Register found item' link
Mouse.Click(uIFundstückerfassenHyperlink, new Point(63, 7));
// Click 'Save' button
Mouse.Click(uISpeichernButton, new Point(34, 11));
int fundNr2 = int.Parse(uIFundNr128Pane.InnerText.Substring(9));
Assert.IsTrue(fundNr1 + 1 == fundNr2);
// Click 'Close' button
Mouse.Click(uICloseButton, new Point(26, 11));
Readability
42. 42
A readable test case
Scenario: New found items should receive a
consecutive number for the current year
Given the previous found item of the
current year had the number 145
When I register a new found item
Then the last found item of the
current year should have the number 146
43. 43
When to test (point in time)
Acceptance criteria
(ATDD, BDD)
Unit Tests
(TDD)
business view
technical view
Exploratory tests
Workflow tests
Performance, Scalability,
Usability,Security, …
definingtheproduct
criticizingtheproduct
New dimension: defining the product
Synergy: Specification of requirements and tests
Agile Testing Quadrants: Brian Marick
44. 44
Manual Testing is always necessary!
User
journeys
Acceptance-
criteria
Units
exploratory
testing
Source: Mike Cohn
many
few
harder
easier
Automatability
Manual
Check
after
Story
Done
Main
success
pathes
Undiscovered
acceptance
criteria
No/(few)
manual
regression
checks
Few pathes
are enough
More time
for exploration
63. 66
User Stories vs. Features
Product/Sprint Backlog
User Story 1
AccCrit 1
AccCrit 2
User Story 2
AccCrit 3
AccCrit 4
Living Documentation
Feature 1
AccCrit 1
AccCrit 2
Feature n
AccCrit 4
AccCrit m
User Story n
AccCrit 5
AccCrit m
AccCrit 3
AccCrit 5
„Done“
• Future options of the system
• Organized/refined according to
priority, value, effort, risk, ...
• Next possible increments of
the product (units of work)
• Current state of the system
• Organized/refined for
functional overview
• Versioned and maintained
together with source code
66. 69
Collaboration smells
• Silos and too formal hand-overs
• Formalization cannot follow implementation
• Scenarios replace communication
• Scenarios inhibit consideration of solutions
• Scenarios inhibit discovery of new things
• Duty after development is done
• Unreadable scenarios without value
• High cost for creation and maintenance
• Technical problems with automation
67. 70
Level of automation
Controller
Business Layer
Data Layer
Model
View
Browser
automation
Trigger behaviour
through controller
Assert behaviour
on model, db, ..
Setup pre-conditions
through service
interfaces
Out-of-process
In-process
68. 71
Test execution performance
• Grouping tests
• Current WIP
• Completed work
• Database
• In-memory
• Templates for setup
• Parallel execution
• Smart execution order
69. 72
Internal vs. external DSL
Example Source:
Liz Keogh
https://github.com/lunivore/tictactoe-java/blob/master/
scenarios/com/lunivore/tictactoe/scenarios/
Three_in_a_row_wins.java
70. 73
Non-functional acceptance criteria
Given there are 100,000 users registered on the system
When I create a new account
Then I should be taken to my dashboard within 5ms
Given 1000 users are hitting the homepage
simultaneously
Then each user should get a response within 2ms
Matt Wynne
http://blog.mattwynne.net/2012/03/13/using-cucumber-for-load-testing