The document discusses using behavior driven development (BDD) to write better test scenarios. It provides an example of a scenario that tests whether a Confluence server is accessible. The author questions whether this scenario truly qualifies as BDD or is instead just a technical test. The discussion covers differences between BDD and technical testing, as well as considerations around using Cucumber for technical tests versus unit tests. The author emphasizes being pragmatic and ensuring scenarios will be read and understood by their intended audience.
Agile Testing Framework - The Art of Automated TestingDimitri Ponomareff
Once your organization has successfully implemented Agile methodologies, there are two major areas that will require improvements: Continuous Integration and Automated Testing.
This presentation illustrates why it's important to invest in an Automated Testing Framework (ATF) to reduce technical debt, increase quality and accelerate time to market.
Learn more at www.agiletestingframework.com.
Agile Testing Framework - The Art of Automated TestingDimitri Ponomareff
Once your organization has successfully implemented Agile methodologies, there are two major areas that will require improvements: Continuous Integration and Automated Testing.
This presentation illustrates why it's important to invest in an Automated Testing Framework (ATF) to reduce technical debt, increase quality and accelerate time to market.
Learn more at www.agiletestingframework.com.
Agile vs Waterfall | Difference between Agile and Waterfall | EdurekaEdureka!
YouTube Link: https://youtu.be/rvTejAg_fbY
**DevOps Certification Courses - https://www.edureka.co/devops-certification-courses **
This Edureka session on ‘waterfall vs agile’ will compare both the approaches of software
development. This will help you select one of them as per your needs. This Session will focus on pointers like:
What is waterfall?
Pros and cons of waterfall
What is Agile?
Pros and cons of Agile
Comparison of Waterfall and Agile
Which model to use when and where?
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Behaviour-driven development (BDD) started as an improved variation on test-driven development, but has evolved to become a formidable tool that helps teams communicate more effectively about requirements, using conversation and concrete examples to discover what features really matter to the business. BDD helps teams focus not only on building features that work, but on ensuring that the features they deliver are the ones that the client actually needs.
In this talk, we will discuss what BDD is about, its benefits, and how it affects teams and processes. We will discuss two case studies where BDD practices have been successfully introduced, including the benefits gained and challenges met. We will see how much benefit was gained when BDD was integrated into the broader development infrastructure, including issue tracking systems, requirements management, and project reporting.
We will also see how BDD can be applied to all levels of the development process, from requirements down to low-level coding. We will also look at the principle BDD tools available that can help teams implement executable specifications, BDD-style test automation, and living documentation effectively. Some of the tools discussed will include JBehave, Cucumber, Specflow, Jasmine and Spock.
We will also look at two case studies where BDD practices have been successfully integrated into several projects in large government and financial organizations. Teams that adopted BDD effectively benefited from significantly lower defect rates, much earlier discovery of errors and inconsistencies in the requirements, and better overall communication and collaboration within the team. However, practicing BDD does involve a significant change in mind-set compared to more traditional approaches, a different collaboration model between team members, and a high degree of stakeholder by-in and engagement, all of which should not be underestimated. We will discuss how the teams managed these various challenges during their BDD adoption story.
To reduce the number of bugs during and after software development and improve the quality of the product, Shift Left Testing or Early Testing is implemented.
It is a method to push testing towards the early stage of software development like requirements defects, complicated designing, and so on.
By doing so, you uncover and solve the issues in an early testing phase before they become major.
https://www.testbytes.net/blog/what-is-shift-left-testing/
Behaviour-driven development (BDD) started as an improved variation on test-driven development, but has evolved to become a formidable tool that helps teams communicate more effectively about requirements, using conversation and concrete examples to discover what features really matter to the business. BDD helps teams focus not only on building features that work, but on ensuring that the features they deliver are the ones the client actually needs.
Learn what BDD is, and what it is not
Understand that the core of BDD is around conversation and requirements discovery, not around tools.
Understand the difference and similarities between BDD at the requirements level, and BDD at the coding level.
Learn what BDD tools exist for different platforms, and when to use them
Developing software for complex & ever-changing business domains is challenging enough, but factor in the need to integrate with multiple legacy systems while working closely with business experts & it can feel a little overwhelming. In EventStorming developers & business experts use sticky notes to map out a story of how the software system behaves given a particular business problem to solve. This improves communication & collaboration, uncovers misunderstandings early, & accelerates deeper domain knowledge. Learn EventStorming rules, how to facilitate an EventStorming workshop, how it can help a team cultivate shared understanding & be more productive, & how it transitions to designing loosely-coupled, distributed, event-based systems.
Annotated slides from my "Behavior Driven Development" course. Released under Creative Commons share-alike, commercial and derivatives allowed: http://creativecommons.org/licenses/by-sa/3.0/
What is Shift Left Testing? Do you need to use that term to improve your Software Testing and Development process? I don't think so.
- why I don't use the term Shift Left
- Explanation of what Shift Left means when people use it
- Explanation of what Shift Left might mean when people hear it
- How to Shift Left incorrectly
- How to improve your test process without using the phrase Shift Left.
Hire me for consultancy and buy my online books and training at:
- https://compendiumdev.co.uk
- http://eviltester.com
- http://seleniumsimplified.com
- http://javafortesters.com
SOLID Principles and The Clean ArchitectureMohamed Galal
This presentation is held at @blablaconnect Cairo office, Monday 31 December 2018.
In this presentation we will discuss the following topics:
- SOLID principles.
- Design Pattern vs. Clean Architecture.
- Successful software architecture characteristics.
- The Clean Architecture.
- Real life example.
Cypress, Playwright, Selenium, or WebdriverIO? Let the Engineers Speak!Applitools
A wrap-up to the wildly popular "Verusus – Let the Code Speak" webinars, leading engineers share why their teams chose Cypress, Playwright, Selenium, and WebdriverIO. They go into detail about the problems they’re solving—highlighting code, architecture, and key features.
Watch the on-demand recording at applitools.com
* What is different GitHub Flow and Git Flow?
* What is GitHub Actions?
* How to write the simple workflow?
* What's problem in GitHub Actions UI?
* What's problem with Secrets in GitHub Actions?
* How to write your first GitHub Actions and upload to the marketplace?
* What's a problem with environment variables in GitHub Actions?
Quality engineering in DevOps... Why? How? (TestBusters Day&Night))Rik Marselis
The business people want IT to delivery Business Value, with quality at speed. To achieve this DevOps can be implemented. And the cross-functional team needs to perform Quality Engineering to reach their goals. In this presentation you will learn why quality engineering (which includes testing) is important and how it can be implemented.
This presentation was given to the audience of the TestBusters Day&Night on 9 September 2021
Greenfield projects are awesome – you can develop highest quality application using best practices on the market. But what if your bread actually is Legacy projects? Does it mean that you need to descend into darkness of QA absence? This talk will show you how to be successful even with the oldest legacy projects out there through the introduction of Agile processes and tools like Behat.
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Presented at #phptek - http://tek.phparch.com
Agile vs Waterfall | Difference between Agile and Waterfall | EdurekaEdureka!
YouTube Link: https://youtu.be/rvTejAg_fbY
**DevOps Certification Courses - https://www.edureka.co/devops-certification-courses **
This Edureka session on ‘waterfall vs agile’ will compare both the approaches of software
development. This will help you select one of them as per your needs. This Session will focus on pointers like:
What is waterfall?
Pros and cons of waterfall
What is Agile?
Pros and cons of Agile
Comparison of Waterfall and Agile
Which model to use when and where?
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Behaviour-driven development (BDD) started as an improved variation on test-driven development, but has evolved to become a formidable tool that helps teams communicate more effectively about requirements, using conversation and concrete examples to discover what features really matter to the business. BDD helps teams focus not only on building features that work, but on ensuring that the features they deliver are the ones that the client actually needs.
In this talk, we will discuss what BDD is about, its benefits, and how it affects teams and processes. We will discuss two case studies where BDD practices have been successfully introduced, including the benefits gained and challenges met. We will see how much benefit was gained when BDD was integrated into the broader development infrastructure, including issue tracking systems, requirements management, and project reporting.
We will also see how BDD can be applied to all levels of the development process, from requirements down to low-level coding. We will also look at the principle BDD tools available that can help teams implement executable specifications, BDD-style test automation, and living documentation effectively. Some of the tools discussed will include JBehave, Cucumber, Specflow, Jasmine and Spock.
We will also look at two case studies where BDD practices have been successfully integrated into several projects in large government and financial organizations. Teams that adopted BDD effectively benefited from significantly lower defect rates, much earlier discovery of errors and inconsistencies in the requirements, and better overall communication and collaboration within the team. However, practicing BDD does involve a significant change in mind-set compared to more traditional approaches, a different collaboration model between team members, and a high degree of stakeholder by-in and engagement, all of which should not be underestimated. We will discuss how the teams managed these various challenges during their BDD adoption story.
To reduce the number of bugs during and after software development and improve the quality of the product, Shift Left Testing or Early Testing is implemented.
It is a method to push testing towards the early stage of software development like requirements defects, complicated designing, and so on.
By doing so, you uncover and solve the issues in an early testing phase before they become major.
https://www.testbytes.net/blog/what-is-shift-left-testing/
Behaviour-driven development (BDD) started as an improved variation on test-driven development, but has evolved to become a formidable tool that helps teams communicate more effectively about requirements, using conversation and concrete examples to discover what features really matter to the business. BDD helps teams focus not only on building features that work, but on ensuring that the features they deliver are the ones the client actually needs.
Learn what BDD is, and what it is not
Understand that the core of BDD is around conversation and requirements discovery, not around tools.
Understand the difference and similarities between BDD at the requirements level, and BDD at the coding level.
Learn what BDD tools exist for different platforms, and when to use them
Developing software for complex & ever-changing business domains is challenging enough, but factor in the need to integrate with multiple legacy systems while working closely with business experts & it can feel a little overwhelming. In EventStorming developers & business experts use sticky notes to map out a story of how the software system behaves given a particular business problem to solve. This improves communication & collaboration, uncovers misunderstandings early, & accelerates deeper domain knowledge. Learn EventStorming rules, how to facilitate an EventStorming workshop, how it can help a team cultivate shared understanding & be more productive, & how it transitions to designing loosely-coupled, distributed, event-based systems.
Annotated slides from my "Behavior Driven Development" course. Released under Creative Commons share-alike, commercial and derivatives allowed: http://creativecommons.org/licenses/by-sa/3.0/
What is Shift Left Testing? Do you need to use that term to improve your Software Testing and Development process? I don't think so.
- why I don't use the term Shift Left
- Explanation of what Shift Left means when people use it
- Explanation of what Shift Left might mean when people hear it
- How to Shift Left incorrectly
- How to improve your test process without using the phrase Shift Left.
Hire me for consultancy and buy my online books and training at:
- https://compendiumdev.co.uk
- http://eviltester.com
- http://seleniumsimplified.com
- http://javafortesters.com
SOLID Principles and The Clean ArchitectureMohamed Galal
This presentation is held at @blablaconnect Cairo office, Monday 31 December 2018.
In this presentation we will discuss the following topics:
- SOLID principles.
- Design Pattern vs. Clean Architecture.
- Successful software architecture characteristics.
- The Clean Architecture.
- Real life example.
Cypress, Playwright, Selenium, or WebdriverIO? Let the Engineers Speak!Applitools
A wrap-up to the wildly popular "Verusus – Let the Code Speak" webinars, leading engineers share why their teams chose Cypress, Playwright, Selenium, and WebdriverIO. They go into detail about the problems they’re solving—highlighting code, architecture, and key features.
Watch the on-demand recording at applitools.com
* What is different GitHub Flow and Git Flow?
* What is GitHub Actions?
* How to write the simple workflow?
* What's problem in GitHub Actions UI?
* What's problem with Secrets in GitHub Actions?
* How to write your first GitHub Actions and upload to the marketplace?
* What's a problem with environment variables in GitHub Actions?
Quality engineering in DevOps... Why? How? (TestBusters Day&Night))Rik Marselis
The business people want IT to delivery Business Value, with quality at speed. To achieve this DevOps can be implemented. And the cross-functional team needs to perform Quality Engineering to reach their goals. In this presentation you will learn why quality engineering (which includes testing) is important and how it can be implemented.
This presentation was given to the audience of the TestBusters Day&Night on 9 September 2021
Greenfield projects are awesome – you can develop highest quality application using best practices on the market. But what if your bread actually is Legacy projects? Does it mean that you need to descend into darkness of QA absence? This talk will show you how to be successful even with the oldest legacy projects out there through the introduction of Agile processes and tools like Behat.
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Presented at #phptek - http://tek.phparch.com
Php[tek] 2016 - BDD with Behat for BeginnersAdam Englander
Learn the basics of Behavioral Driven Development (BDD) with Behat to build quality applications. Behat utilizes natural language syntax to define feature test scenarios. In this tutorial you will learn how to write integration tests for web applications. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and Sauce Labs. Learn a better way to perform integration testing today!
With third party clients connecting to your service you may find that the assumptions or opinions of a typical rails application are not robust enough. We'll run through some key considerations when building an API that will be consumed by a mobile app.
Trying to establish a more consistent SEO structure within your organization?
Wish every SEO fire had a more standardized, easy-to-follow solution?
We know – no two days in SEO are the same.
However, it’s surprisingly easy to find a consistent approach that provides meaningful impact.
And – it works whether you're in-house, an agency, or a freelance consultant.
Watch this webinar and learn the 4-step process that will help you tackle SEO challenges head-on as they arise.
This 4-Step SEO Waltz takes you through:
Visibility
Diagnostics
Iteration
Monitoring
Jamie Indigo and Michelle Race from Deepcrawl walks you through a four-step process that helps you meet SEO challenges head-on as they arise and stop SEO fires before they start.
SEO professionals still view the SEO process as a complex dance, but it could be a simple and practical framework for addressing challenges in various forms.
Discover how you can use the steps, pillars, and methods for more effective SEO project management within your company.
Agenda:
After covering the basics about how to find and interact with UI elements, we will look into techniques of writing maintainable tests with selendroid.
In the end we will run our tests in parallel using the Selenium Grid.
The workshop repository can be found here:
https://github.com/DominikDary/selendroid-workshop
Zend con 2016 bdd with behat for beginnersAdam Englander
Learn the basics of behavioral driven development (BDD) with Behat to build high quality and well documented applications. You'll learn how BDD can help you deliver greater business value more efficiently while accurately documenting the functionality of your application along the way. You'll learn how to utilize Behat as your BDD tool. With Behat, you'll create tests for the features in your application by utilizing a natural language syntax called Gherkin backed by PHP code to execute the steps executed in the feature's scenarios.
This will be a hands-on tutorial. You'll learn how to implement BDD for a web application. This will include utilizing Selenium WebDriver for real world multi-browser testing including introductions to Selenium Grid and hosted integration services utilizing Selenium.
With the creation of the cucumber framework came the creation of the Gherkin Scripting format (also known as the Given-When-Then format). The structure of a Gherkin script is very straight-forward: Given provides you with the background When tells you what is being created Then tells you the expected results. Writing a script in a Given-When-Then format may be fairly simple. Writing a good Gherkin Script is an Art. Some are Picassos, some are Monets, some look like they were created by a toddler with a crayon. In this presentation Mr. Eakin will offer some tips on writing good Gherkin Scripts and show you how a well crafted Gherkin Script can be a beautiful work of Art.
We’ve all been there. We work incredibly hard to develop a feature and design tests based on written requirements. We build a detailed test plan that aligns the tests with the software and the documented business needs. And when we put the tests to the software, it all falls apart because the requirements were changed without informing everyone. Mary Thorn says help is at hand. Enter behavior-driven development (BDD), and Cucumber and SpecFlow, tools for running automated acceptance tests and facilitating BDD. Mary explores the nuances of Cucumber and SpecFlow, and shows you how to implement BDD and agile acceptance testing. By fostering collaboration for implementing active requirements via a common language and format, Cucumber and SpecFlow bridge the communication gap between business stakeholders and implementation teams. In this workshop, practice writing feature files with the best practices Mary has discovered over numerous implementations. If you experience developers not coding to requirements, testers not getting requirements updates, or customers who feel out of the loop and don’t get what they ask for, Mary has answers for you.
Concise guide to starting with Behat.
Covers:
* What is Behat?
* How do you get started with Behat?
* How to write tests?
* How to write good tests!
How to write portable tests, and other common problems.
[drupalday2017] - Behat per Drupal: test automatici e molto di piùDrupalDay
Behat è nato per semplificare il processo di accettazione da parte del cliente: per evitare ambiguità si realizza un test automatico (leggibile anche da chi non ha competenze tecniche) la cui esecuzione con successo garantisce che le specifiche siano rispettate. L'integrazione di Behat nel processo di sviluppo Drupal permette tuttavia di andare ben oltre: si può usare Behat per condividere le specifiche con il cliente, per guidare lo sviluppo (scrivendo il test prima del codice), per assistere il debug (usando uno scenario per popolare una situazione di errore ripetibile) e persino per migrare un sito da Drupal 7 a Drupal 8 (codificando il comportamento del sito in una serie di test che vengono poi usati come base per lo sviluppo del nuovo sito). Per tutti gli scenari descritti vedremo esempi basati sull'esperienza di Nuvole.
di Andrea Pescetti
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
Getting Started with Test Automation: Introduction to Cucumber with Lapis LazuliRebecca Eloise Hogg
Introduction to web testing with Cucumber using spriteCloud's Lapis Lazuli Cucumber helper.
This presentation will take you through the steps needed to set up a test automation project using Cucumber - a software tool that runs automated tests in the BBD style - in combination with Lapis Lazuli, a gem that provides Cucumber helper functions and scaffolding for easier web test automation suite development.
To do this you will need to have installed Ruby with some drivers and libraries. You can find detailed notes on how to do this here: http://www.testautomation.info/Getting_Started
To successfully follow this tutorial, prior knowledge of test automation isn’t needed, but knowledge of scripting - especially Ruby - and HTML skills are recommended.
Lapus Lazuli's GitHub depository: https://github.com/spriteCloud/lapis-lazuli
For more information about everything test automation, whether you need someone to help you set up TA in your organisation or want to find out more about our Test Automation as a Service options, email: info@spritecloud.com.
Dégraissons le mammouth ou Darwin a encore frappé - La théorie de l'évolution...Arnauld Loyer
Dégraissons le mammouth ou Darwin a encore frappé
La théorie de l'évolution appliquée au développement informatique - cas pratique de l'architecture du site PMU.fr
Depuis 1980, Lehman nous avertit: un programme doit évoluer ou péricliter, mais alors qu'il devient de plus en plus gros, la complexité résultante tend à limiter son évolution. Comment remédier à cela? Quelle architecture adopter pour un site à fort trafic comme celui du PMU?
Après avoir abordé les problématiques d'évolution et de maintenance d'une application monolithique, nous verrons pourquoi et surtout comment séparer les composants et les comportements de notre application.
Du monolithe aux micro services, du distribué, des messages, du publish/subscribe, du REST, une approche polyglotte, ... au cours de cet exposé, nous verrons quelques uns des choix retenus pour garantir la survie et l'évolution de notre application. Nous verrons comment nous avons construit un socle solide permettant de répondre aux nouvelles manières de faire du Web, d'être adapté aux applications mobiles et aux télés connectées. Ce sera l'occasion d'aborder aussi bien les principes architecturaux et les principes organisationnels qui nous ont permis d'atteindre cet objectif.
L'ABC du BDD (Behavior Driven Development)Arnauld Loyer
Une introduction au Behavior Driven Development, avec plein d'idées pour tout de suite! et applicable à tout projet. Il sera question:
* de passer de l'incompréhension à savoir qu'on ne sait pas
* des westerns spaghetti aux Three Amigos,
* de reléguer le Comment au second plan pour laisser sa place au Pourquoi!
* de rendre des spécifications exécutables
* de découvrir qu'un concombre n'est pas qu'un Cucurbitacée aux feuilles tri-lobées
* d'automatisation comme outil de non-regression
Au cours de cette session, nous expliquerons ce qu'est le BDD. Nous verrons qu'il n'est pas question d'outils ou de tests, mais de collaboration et de discussion entre les différentes parties prenantes: du métier aux développeurs en passant par les testeurs. Cette presentation s'adresse à l'ensemble de ces populations en expliquant l'importance qu'il y a à se comprendre, et qu'il n'est pas nécessaire d'avoir des outils sophistiqués pour avoir des bénéfices immédiats.
Nous verrons quelques pratiques de discussion qui permettent d'arriver à une meilleure compréhension et à une description du besoin. Nous verrons aussi comment des exemples concrets permettent de s'assurer d'une compréhension commune et comment ils permettent de construire un langage unique et non ambigu. Nous verrons comment rendre ces spécifications executables en réutilisant les exemples construits précédemment et en les automatisant. Ceux-ci viendront renforcer les tests d'acceptance et devenir des tests de non regressions. Enfin, nous verrons que cette démarche nous permettra d'avoir une documentation vivante et toujours à jour de notre système.
Idées pour tout de suite
Communication, Clarification par des Exemples concrets, Spécifications exécutables
Confiance & BDD - Présentation faite à Softshake sur les origines de la confiance et comment le Behavior Driven Development (BDD) contribue à restaurer ou instaurer la confiance entre les développeurs, le métier et les testeurs.
Rappellez-vous cette petite fille, la bouche pleine de chocolat qui dit "Mon papa il me dit toujours on ne doit pas manger de mousse au chocolat avant de manger... sinon tu trompes la confiance que tes parents ils ont mis à l'interieur de toi"
Cela vous rappelle quelque chose? Votre relation avec les développeurs, avec votre client ou encore avec vos testeurs?
Vous avez été trahis, la confiance s'est érodée, vous êtes au bord de la rupture, vos yeux sont cernés? Ne vous inquiétez pas il est encore temps de réagir. Que vous soyez testeurs, Business Analysts, clients, developpeurs, il y a toujours une issue. Nous allons voir comment en travaillant ensemble, vous allez pouvoir restaurez la confiance et la qualité de vos développements.
Avec "Adopte BDD", tous ensemble vous allez pouvoir écrire une nouvelle histoire, vous serez les propres acteurs de vos scénarios, l'automatisation n'aura plus de secret pour vous. Quelques rondelles de concombre, et fini les yeux gonflés, les cernes et les traits tirés. Vous serez enfin détendu.
Une présentation où il est question de mousse au chocolat, de confiance et de concombre.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
2. Disclaimer
No scenario has been harmed during the investigation
github search:
extension:feature travel/deal/…
Most remarks are purely subjectives
@aloyer
3. Let’s try to diagnose the maturity
@aloyer
Anti-Pattern
… an antipattern was something
that seems like a good idea when
you begin, but leads you into
trouble.
http://martinfowler.com/bliki/AntiPattern.html
4. Having conversations with domain experts
and discover unknowns
and using examples
to gain a shared understanding of the desired behavior
@aloyer
C
9. Feature: The Confluence server is up
In order to make sure that Confluence has been installed and runs
As a developer
I want to access Confluence's home page
Scenario: Developer accesses the home page
Given the url of Confluences home page
When a web user browses to the url
Then the connection should be successful
Then the page status should be OK
Then the page should have the title "Confluence Setup Wizard - Confluence"
https://github.com/xebia-france/chef-confluence-jira-crowd/blob/a26e29a85d1e75b9b612a560685940b40c971adc/test/integration/confluence-jira-crowd/cucumber/confluence_up.feature
BDD ?
@aloyer
10. Feature: The Confluence server is up
In order to make sure that Confluence has been installed and runs
As a developer
I want to access Confluence's home page
Scenario: Developer accesses the home page
Given the url of Confluences home page
When a web user browses to the url
Then the connection should be successful
Then the page status should be OK
Then the page should have the title "Confluence Setup Wizard - Confluence"
https://github.com/xebia-france/chef-confluence-jira-crowd/blob/a26e29a85d1e75b9b612a560685940b40c971adc/test/integration/confluence-jira-crowd/cucumber/confluence_up.feature
Sanity CheckBDD ?
behavior ?
@aloyer
11. Feature: The Confluence server is up
In order to make sure that Confluence has been installed and runs
As a developer
I want to access Confluence's home page
Scenario: Developer accesses the home page
Given the url of Confluences home page
When a web user browses to the url
Then the connection should be successful
Then the page status should be OK
Then the page should have the title "Confluence Setup Wizard - Confluence"
https://github.com/xebia-france/chef-confluence-jira-crowd/blob/a26e29a85d1e75b9b612a560685940b40c971adc/test/integration/confluence-jira-crowd/cucumber/confluence_up.feature
Sanity CheckBDD ?
behavior ?
@aloyer
12. @aloyer 12
Given-When-Then
Then an outcome should be observed
Given a context
When an event happens
3 phases
setup/arrange
exercise/act
verify/assert
Tips
13. Feature: Asset Manager
@local-network
@normal
Scenario: check an asset can be loaded
Given I am testing "asset-manager"
And I am an authenticated API client
When I visit "/assets/513a0efbed915d425e000002"
Then I should get a 200 status code
And I should see "120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
@normal
Scenario: check an asset can be served
Given I am testing "static"
When I visit "/media/
513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
Then I should get a 200 status code
And I should get a content length of "212880"
https://github.com/alphagov/smokey/blob/4c8fe739938e4a4b8b7bb393dfd485efd39dc034/features/asset_manager.feature
BDD ?
@aloyer
14. Feature: Asset Manager
@local-network
@normal
Scenario: check an asset can be loaded
Given I am testing "asset-manager"
And I am an authenticated API client
When I visit "/assets/513a0efbed915d425e000002"
Then I should get a 200 status code
And I should see "120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
@normal
Scenario: check an asset can be served
Given I am testing "static"
When I visit "/media/
513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
Then I should get a 200 status code
And I should get a content length of "212880"
https://github.com/alphagov/smokey/blob/4c8fe739938e4a4b8b7bb393dfd485efd39dc034/features/asset_manager.feature
BDD ?
Business Language?
Technical Test
web page
Selenium
technical details
@aloyer
15. Feature: Asset Manager
@local-network
@normal
Scenario: check an asset can be loaded
Given I am testing "asset-manager"
And I am an authenticated API client
When I visit "/assets/513a0efbed915d425e000002"
Then I should get a 200 status code
And I should see "120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
@normal
Scenario: check an asset can be served
Given I am testing "static"
When I visit "/media/
513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
Then I should get a 200 status code
And I should get a content length of "212880"
https://github.com/alphagov/smokey/blob/4c8fe739938e4a4b8b7bb393dfd485efd39dc034/features/asset_manager.feature
BDD ? Technical Test
differences?
@aloyer
different results?
Unclear and non-sustainable
17. Should I use cucumber to write technical tests?
Be pragmatic!
Who will read the scenario?
Are you ready to pay the cucumber overhead?
compared to raw xUnit tests
Do you really contribute to a shared knowledge or do you increase the
business/technical gap?
@aloyer
20. Feature: Asset Manager
@local-network
@normal
Scenario: check an asset can be loaded
Given I am testing "asset-manager"
And I am an authenticated API client
When I visit "/assets/513a0efbed915d425e000002"
Then I should get a 200 status code
And I should see "120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
@normal
Scenario: check an asset can be served
Given I am testing "static"
When I visit "/media/
513a0efbed915d425e000002/120613_Albania_Travel_Advice_WEB_Ed2_jpeg.jpg"
Then I should get a 200 status code
And I should get a content length of "212880"
https://github.com/alphagov/smokey/blob/4c8fe739938e4a4b8b7bb393dfd485efd39dc034/features/asset_manager.feature
Who wrote this ?
@aloyer
21. @MoveToken
Feature: Moving the token over the board
As a player
I want to move to new positions on the board
So that I can get rich and win the game
Scenario Outline: Moving a token after a single throw
Given players token is at starting position <startingPosition>
When player throws die1 <die1> and die2 <die2>
Then players token moves to a new position <newPosition>
Examples:
| startingPosition | die1 | die2 | newPosition |
| 1 | 1 | 2 | 4 |
| 2 | 3 | 4 | 9 |
| 39 | 2 | 2 | 3 |
Forgot the rule ?
https://github.com/xebia/spec-by-example-2014-09-29/blob/4eabded6b22e816f6509a3ecd2c2180b62f4d73d/src/test/resources/monopoly/cucumber/MoveToken.feature
@aloyer
22. @MoveToken
Feature: Moving the token over the board
As a player
I want to move to new positions on the board
So that I can get rich and win the game
Scenario Outline: Moving a token after a single throw
Given players token is at starting position <startingPosition>
When player throws die1 <die1> and die2 <die2>
Then players token moves to a new position <newPosition>
Examples:
| startingPosition | die1 | die2 | newPosition |
| 1 | 1 | 2 | 4 |
| 2 | 3 | 4 | 9 |
| 39 | 2 | 2 | 3 |
Forgot the rule ?
https://github.com/xebia/spec-by-example-2014-09-29/blob/4eabded6b22e816f6509a3ecd2c2180b62f4d73d/src/test/resources/monopoly/cucumber/MoveToken.feature
@aloyer
where is the rule?
The All-In-One Effect
23. @MoveToken
Feature: Moving the token over the board
As a player
I want to move to new positions on the board
So that I can get rich and win the game
Scenario Outline: Moving a token after a single throw
Given players token is at starting position <startingPosition>
When player throws die1 <die1> and die2 <die2>
Then players token moves to a new position <newPosition>
Examples:
| startingPosition | die1 | die2 | newPosition |
| 1 | 1 | 2 | 4 |
| 2 | 3 | 4 | 9 |
| 39 | 2 | 2 | 3 |
Forgot the rule ?
https://github.com/xebia/spec-by-example-2014-09-29/blob/4eabded6b22e816f6509a3ecd2c2180b62f4d73d/src/test/resources/monopoly/cucumber/MoveToken.feature
where is the rule?
the outline effect
@aloyer
The All-In-One Effect
24. Feature: Deal team invitations
1. A "My deals" section with
The deals that I created
The deals on which me or my team are deal leaders
The deals on which me or my team are deal members
2. A "Other deals" section with:
The deals for which me or my team are "other contact"
Scenario Outline: People invited into deal team directly
Given the following deals have been created
| Name | Creator | User leaders | User members | User other contacts |
| AF | John | Charlotte | Peter | Diego |
| KLM | Charlotte | John | Charlotte | Peter |
| IB | Charlotte | Charlotte | John | Peter |
| GW | Diego | Charlotte | Peter | John |
| TAP | Diego | Charlotte | Peter | |
| TUN | Diego | Charlotte | Peter | Matthieu |
When <user> logs into the platform
Then the My deals section should have only <my deals>
And the Other deals section should have only <other deals>
Examples:
| user | my deals | other deals |
| John | AF, KLM, IB | GW |
| Charlotte | AF, KLM, IB, GW, TAP, TUN | <none> |
| Peter | AF, GW, TAP, TUN | KLM, IB |
| Matthieu | <none> | TUN |
| Mariem | <none> | <none> |
Is the rule obvious?
@aloyer
25. Feature: Deal team invitations
1. A "My deals" section with
The deals that I created
The deals on which me or my team are deal leaders
The deals on which me or my team are deal members
2. A "Other deals" section with:
The deals for which me or my team are "other contact"
Scenario Outline: People invited into deal team directly
Given the following deals have been created
| Name | Creator | User leaders | User members | User other contacts |
| AF | John | Charlotte | Peter | Diego |
| KLM | Charlotte | John | Charlotte | Peter |
| IB | Charlotte | Charlotte | John | Peter |
| GW | Diego | Charlotte | Peter | John |
| TAP | Diego | Charlotte | Peter | |
| TUN | Diego | Charlotte | Peter | Matthieu |
When <user> logs into the platform
Then the My deals section should have only <my deals>
And the Other deals section should have only <other deals>
Examples:
| user | my deals | other deals |
| John | AF, KLM, IB | GW |
| Charlotte | AF, KLM, IB, GW, TAP, TUN | <none> |
| Peter | AF, GW, TAP, TUN | KLM, IB |
| Matthieu | <none> | TUN |
| Mariem | <none> | <none> |
Is the rule obvious?ARE
S
26. Feature: Deal team invitations
1. A "My deals" section with
The deals that I created
The deals on which me or my team are deal leaders
The deals on which me or my team are deal members
2. A "Other deals" section with:
The deals for which me or my team are "other contact"
Scenario Outline: People invited into deal team directly
Given the following deals have been created
| Name | Creator | User leaders | User members | User other contacts |
| AF | John | Charlotte | Peter | Diego |
| KLM | Charlotte | John | Charlotte | Peter |
| IB | Charlotte | Charlotte | John | Peter |
| GW | Diego | Charlotte | Peter | John |
| TAP | Diego | Charlotte | Peter | |
| TUN | Diego | Charlotte | Peter | Matthieu |
When <user> logs into the platform
Then the My deals section should have only <my deals>
And the Other deals section should have only <other deals>
Examples:
| user | my deals | other deals |
| John | AF, KLM, IB | GW |
| Charlotte | AF, KLM, IB, GW, TAP, TUN | <none> |
| Peter | AF, GW, TAP, TUN | KLM, IB |
| Matthieu | <none> | TUN |
| Mariem | <none> | <none> |
what if …I belongs to multiple group?
Is the rule obvious?ARE
S
the outline effect
27. Feature: Deal team invitations
1. A "My deals" section with
The deals that I created
The deals on which me or my team are deal leaders
The deals on which me or my team are deal members
2. A "Other deals" section with:
The deals for which me or my team are "other contact"
Scenario Outline: People invited into deal team directly
Given the following deals have been created
| Name | Creator | User leaders | User members | User other contacts |
| AF | John | Charlotte | Peter | Diego |
| KLM | Charlotte | John | Charlotte | Peter |
| IB | Charlotte | Charlotte | John | Peter |
| GW | Diego | Charlotte | Peter | John |
| TAP | Diego | Charlotte | Peter | |
| TUN | Diego | Charlotte | Peter | Matthieu |
When <user> logs into the platform
Then the My deals section should have only <my deals>
And the Other deals section should have only <other deals>
Examples:
| user | my deals | other deals |
| John | AF, KLM, IB | GW |
| Charlotte | AF, KLM, IB, GW, TAP, TUN | <none> |
| Peter | AF, GW, TAP, TUN | KLM, IB |
| Matthieu | <none> | TUN |
| Mariem | <none> | <none> |
what if …I belongs to multiple group?
Is the rule obvious?ARE
S
the outline effect
28. Feature: Deals display order in the home page
As an FO
I need to see my deals ordered in the way that fits my function
In order to have a clear view of the most important or urgent deals.
Clarifications:
Deals should be ordered by expected closing date, the first deals displayed should be the ones with the oldest expected closing date.
For cards display, the oldest cards will be on the top and for cards on the same row, the oldest card will be on the left.
For table display, the oldest cards will on the top.
For deals with the same expected closing date, they should be ordered by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user members | user other contacts | expected closing date | pricing status | Credit approval status | Lso deal code | Cwf request code | stage | confidentiality level |
| Aircraft AF | Air France | 150000000 | Johny | Charlotte | Peter | Diego | May 12, 2016 | true | Not submitted | L0377450 | 2015_07_001105 | Marketing | My Team |
| Aircraft KLM | KLM | 15000000 | Charlotte | Johny | Charlotte | Peter | Jul 11, 2014 | false | In progress | L0377451 | 2015_08_001105 | Bidding | Confidential |
| Aircraft TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte | Peter | Jul 12, 2014 | false | In progress | L0377451 | 2015_09_001105 | Bidding | My Team |
When Charlotte logs into the platform
Then the My deals section must be ordered as Aircraft KLM,Aircraft TUN,Aircraft AF
the A4 rule ?
@aloyer
29. Feature: Deals display order in the home page
As an FO
I need to see my deals ordered in the way that fits my function
In order to have a clear view of the most important or urgent deals.
Clarifications:
Deals should be ordered by expected closing date, the first deals displayed should be the ones with the oldest expected closing date.
For cards display, the oldest cards will be on the top and for cards on the same row, the oldest card will be on the left.
For table display, the oldest cards will on the top.
For deals with the same expected closing date, they should be ordered by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user members | user other contacts | expected closing date | pricing status | Credit approval status | Lso deal code | Cwf request code | stage | confidentiality level |
| Aircraft AF | Air France | 150000000 | Johny | Charlotte | Peter | Diego | May 12, 2016 | true | Not submitted | L0377450 | 2015_07_001105 | Marketing | My Team |
| Aircraft KLM | KLM | 15000000 | Charlotte | Johny | Charlotte | Peter | Jul 11, 2014 | false | In progress | L0377451 | 2015_08_001105 | Bidding | Confidential |
| Aircraft TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte | Peter | Jul 12, 2014 | false | In progress | L0377451 | 2015_09_001105 | Bidding | My Team |
When Charlotte logs into the platform
Then the My deals section must be ordered as Aircraft KLM,Aircraft TUN,Aircraft AF
the A4 rule ?
Feature: Deals display order in the home page
Deals should be ordered by expected closing date, the first deals
displayed should be the ones with the oldest expected closing date.
For deals with the same expected closing date, they should be ordered
by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user memb
| AF | Air France | 150000000 | Johny | Charlotte | Peter
| KLM | KLM | 15000000 | Charlotte | Johny | Charlotte
| TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte
When Charlotte logs into the platform
Then the My deals section must be ordered as KLM, TUN, AF
30. Feature: Deals display order in the home page
As an FO
I need to see my deals ordered in the way that fits my function
In order to have a clear view of the most important or urgent deals.
Clarifications:
Deals should be ordered by expected closing date, the first deals displayed should be the ones with the oldest expected closing date.
For cards display, the oldest cards will be on the top and for cards on the same row, the oldest card will be on the left.
For table display, the oldest cards will on the top.
For deals with the same expected closing date, they should be ordered by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user members | user other contacts | expected closing date | pricing status | Credit approval status | Lso deal code | Cwf request code | stage | confidentiality level |
| Aircraft AF | Air France | 150000000 | Johny | Charlotte | Peter | Diego | May 12, 2016 | true | Not submitted | L0377450 | 2015_07_001105 | Marketing | My Team |
| Aircraft KLM | KLM | 15000000 | Charlotte | Johny | Charlotte | Peter | Jul 11, 2014 | false | In progress | L0377451 | 2015_08_001105 | Bidding | Confidential |
| Aircraft TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte | Peter | Jul 12, 2014 | false | In progress | L0377451 | 2015_09_001105 | Bidding | My Team |
When Charlotte logs into the platform
Then the My deals section must be ordered as Aircraft KLM,Aircraft TUN,Aircraft AF
the A4 rule ?
Feature: Deals display order in the home page
Deals should be ordered by expected closing date, the first deals
displayed should be the ones with the oldest expected closing date.
For deals with the same expected closing date, they should be ordered
by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user memb
| AF | Air France | 150000000 | Johny | Charlotte | Peter
| KLM | KLM | 15000000 | Charlotte | Johny | Charlotte
| TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte
When Charlotte logs into the platform
Then the My deals section must be ordered as KLM, TUN, AF
31. Feature: Deals display order in the home page
As an FO
I need to see my deals ordered in the way that fits my function
In order to have a clear view of the most important or urgent deals.
Clarifications:
Deals should be ordered by expected closing date, the first deals displayed should be the ones with the oldest expected closing date.
For cards display, the oldest cards will be on the top and for cards on the same row, the oldest card will be on the left.
For table display, the oldest cards will on the top.
For deals with the same expected closing date, they should be ordered by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user members | user other contacts | expected closing date | pricing status | Credit approval status | Lso deal code | Cwf request code | stage | confidentiality level |
| Aircraft AF | Air France | 150000000 | Johny | Charlotte | Peter | Diego | May 12, 2016 | true | Not submitted | L0377450 | 2015_07_001105 | Marketing | My Team |
| Aircraft KLM | KLM | 15000000 | Charlotte | Johny | Charlotte | Peter | Jul 11, 2014 | false | In progress | L0377451 | 2015_08_001105 | Bidding | Confidential |
| Aircraft TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte | Peter | Jul 12, 2014 | false | In progress | L0377451 | 2015_09_001105 | Bidding | My Team |
When Charlotte logs into the platform
Then the My deals section must be ordered as Aircraft KLM,Aircraft TUN,Aircraft AF
the A4 rule ?
Feature: Deals display order in the home page
Deals should be ordered by expected closing date, the first deals
displayed should be the ones with the oldest expected closing date.
For deals with the same expected closing date, they should be ordered
by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user memb
| AF | Air France | 150000000 | Johny | Charlotte | Peter
| KLM | KLM | 15000000 | Charlotte | Johny | Charlotte
| TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte
When Charlotte logs into the platform
Then the My deals section must be ordered as KLM, TUN, AF
B
32. Feature: Deals display order in the home page
As an FO
I need to see my deals ordered in the way that fits my function
In order to have a clear view of the most important or urgent deals.
Clarifications:
Deals should be ordered by expected closing date, the first deals displayed should be the ones with the oldest expected closing date.
For cards display, the oldest cards will be on the top and for cards on the same row, the oldest card will be on the left.
For table display, the oldest cards will on the top.
For deals with the same expected closing date, they should be ordered by deal name
Scenario: Deals display order
Given the following deals
| name | client name | total amount | creator | user leaders | user members | user other contacts | expected closing date | pricing status | Credit approval status | Lso deal code | Cwf request code | stage | confidentiality level |
| Aircraft AF | Air France | 150000000 | Johny | Charlotte | Peter | Diego | May 12, 2016 | true | Not submitted | L0377450 | 2015_07_001105 | Marketing | My Team |
| Aircraft KLM | KLM | 15000000 | Charlotte | Johny | Charlotte | Peter | Jul 11, 2014 | false | In progress | L0377451 | 2015_08_001105 | Bidding | Confidential |
| Aircraft TUN | Tunisair | 16000000 | Johny | Charlotte | Charlotte | Peter | Jul 12, 2014 | false | In progress | L0377451 | 2015_09_001105 | Bidding | My Team |
When Charlotte logs into the platform
Then the My deals section must be ordered as Aircraft KLM,Aircraft TUN,Aircraft AF
the A4 rule ?
Feature: Deals display order in the home page
Deals should be ordered by expected closing date, the first deals
displayed should be the ones with the oldest expected closing date.
For deals with the same expected closing date, they should be ordered
by deal name
Scenario: Deals display order
Given the following deals
| name | expected closing date |
| AF | May 12, 2016 |
| KLM | Jul 11, 2014 |
| TUN | Jul 12, 2014 |
When Charlotte logs into the platform
Then the My deals section must be ordered as KLM, TUN, AF
O
37. Scenario should be written using the Business Language
Together
What is the intent?
Have I understood the expected behavior?
Do I clearly understand the rule when reading a scenario?
How many rules are exposed within the scenario?
@aloyer
Try to limit to One rule per scenario
38. What level of details ?
Writing better scenario
@aloyer
39. @BuyingProperties
Feature: Buying properties
As a player
I want to buy properties
So that I can ask rent when my opponents land on it
Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
Scenario: No sufficient funds
Given I land on unowned property
And my funds are not sufficient
Then I am not able to buy the property
https://github.com/xebia/workshop-agile-testing/blob/8705e3f93270662285cd9c8ec8c24e5ac957f3ed/src/test/resources/features/BuyingProperties.feature
Enough details ?
@aloyer
40. @BuyingProperties
Feature: Buying properties
As a player
I want to buy properties
So that I can ask rent when my opponents land on it
Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
Scenario: No sufficient funds
Given I land on unowned property
And my funds are not sufficient
Then I am not able to buy the property
https://github.com/xebia/workshop-agile-testing/blob/8705e3f93270662285cd9c8ec8c24e5ac957f3ed/src/test/resources/features/BuyingProperties.feature
Enough details ? too declarative
which one?
what does it mean?
« Pay »
is an outcome?
Choose?
@aloyer
41. Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
@aloyer
42. Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
@default_properties
Scenario: Buying property
Given I land on unowned "west" property
And my funds are 2000
When I buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased to 1800
@aloyer
43. Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
to pay is an action (when)
not an outcome (then) value can be changed
@default_properties
Scenario: Buying property
Given I land on unowned "west" property
And my funds are 2000
When I buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased to 1800
can help to project to other case
Can it always be applied?
@aloyer
44. Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
@default_properties
Scenario: Buying property
Given I land on unowned "west" property
And my funds are 2000
When I buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased to 1800
@Then("^my funds should be (?:decreased to |increased to )?(d+)$")
public void my_funds_should_be_(int amount)
@aloyer
45. Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
@default_properties
Scenario: Default properties - by tag
Then the available properties should be at least:
| name | price |
| east | 150 |
| west | 200 |
| north | 100 |
| south | 40 |
@default_properties
Scenario: Buying property
Given I land on unowned "west" property
And my funds are 2000
When I buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased to 1800
@aloyer
46. Scenario: Default properties - explicit
Given the default properties are used
Then the available properties should be at least:
| name | price |
| east | 150 |
| west | 200 |
| north | 100 |
| south | 40 |
Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
@default_properties
Scenario: Default properties - by tag
Then the available properties should be at least:
| name | price |
| east | 150 |
| west | 200 |
| north | 100 |
| south | 40 |
@default_properties
Scenario: Buying property
Given I land on unowned "west" property
And my funds are 2000
When I buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased to 1800
@aloyer
47. Scenario: Buying property
Given I land on unowned property
And my funds are sufficient
When I choose to buy the property
Then I pay the printed price
And I receive the title deed
@default_properties @default_player
Scenario: Buying property
Given I land on unowned "west" property that cost 180
When I choose to buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased by 180
@default_properties
Scenario: Buying property
Given I land on unowned "west" property
And my funds are 2000
When I buy the property
And I pay the printed price
Then I should receive the "west" title deed
And my funds should be decreased to 1800
@aloyer
48. Scenario: Create a Stock option
Given the following option:
| Property | Value |
| delivery | Cash |
| bo strike | no |
| floor | 0 |
| forex constat | - |
| forex constat date | 1970-JAN-01 |
| forex start date | 1970-JAN-01 |
| guaranteed currency | EUR |
| guaranteed rate | 0 |
| initial spot | 0 |
...
| maturity | 2020-FEB-05 |
| option quotity | 1 |
| strike | 2500 |
| underlying id | SOCIETE-GLE_X |
| underlying type | Stock |
And the option’s restriking infos is:
| Property | Value |
| floating rate | no |
| fixed rate | no |
...
| last update | <now> |
| first trading date | <now> |
| rate offset | 0.0 |
When I create the option
Then the option id should be filled in
Scenario: Create a Fund option
Given the following option:
| Property | Value |
| delivery | Cash |
| bo strike | no |
| floor | 0 |
| forex constat | - |
| forex constat date | 1970-JAN-01 |
| forex start date | 1970-JAN-01 |
| guaranteed currency | EUR |
| guaranteed rate | 0 |
| initial spot | 0 |
...
| maturity | 2020-FEB-05 |
| option quotity | 1 |
| strike | 2500 |
| underlying id | SOCIETE-GLE_X |
| underlying type | Fund |
And the option’s restriking infos is:
| Property | Value |
| floating rate | no |
| fixed rate | no |
...
| last update | <now> |
| first trading date | <now> |
| rate offset | 0.0 |
When I create the option
Then the option id should be filled in
~53 properties
~20 properties
@aloyer
Too much details ?
49. Scenario: Create an external OTC deal
Given the following option:
| Property | Value |
| delivery | Cash |
| bo strike | no |
| floor | 0 |
| forex constat | - |
| forex constat date | 1970-JAN-01 |
| forex start date | 1970-JAN-01 |
| guaranteed currency | EUR |
| guaranteed rate | 0 |
| initial spot | 0 |
...
| maturity | 2020-FEB-05 |
| option quotity | 1 |
| strike | 2500 |
| underlying id | SOCIETE-GLE_X |
| underlying type | Stock |
And the option’s restriking infos is:
| Property | Value |
| floating rate | no |
| fixed rate | no |
...
| last update | <now> |
| first trading date | <now> |
| rate offset | 0.0 |
And an external OTC deal:
| Property | Value |
| category | OTC |
| delivery | - |
| initial price | 0 |
| internal market | yes |
| last update | <now> |
...
| quantity | 6000 |
| remaining quantity | 6000 |
And the deal’s counter part is:
| Property | Value |
| confirm mode | ST |
| market maker | Nefertiti |
...
And the deal’s sales part is:
| Property | Value |
| accounting center | - |
| derogation | no |
...
And the deal’s collateral is:
| Property | Value |
| IA | no |
| currency | - |
...
When I create the option
And I create the deal with the created option
Then the deal id should be filled in
~58
~5
~58
~22
@aloyer
Too much details ?
50. Scenario: Standard option
Given a standard option with no specifics
Then the option should have the following properties:
| Property | Value |
| delivery | Cash |
| bo strike | no |
| floor | 0 |
| forex constat | - |
| forex constat date | 1970-JAN-01 |
| forex start date | 1970-JAN-01 |
| guaranteed currency | EUR |
| guaranteed rate | 0 |
| initial spot | 0 |
...
| maturity | 2020-FEB-05 |
| option quotity | 1 |
| strike | 2500 |
| underlying id | SOCIETE-GLE_X |
| underlying type | Stock |
| restriking infos | <standard> |
~53 properties
Scenario: Standard option’s restriking infos
Given a standard option’s restriking infos
Then the option’s restriking infos should be:
| Property | Value |
| floating rate | no |
| fixed rate | no |
...
| last update | <now> |
| first trading date | <now> |
| rate offset | 0.0 |
~20
@aloyer
Too much details ? use persona
Persona is checked
AND documented
51. Scenario: Create a Stock option
Given the following option:
| Property | Value |
| delivery | Cash |
| bo strike | no |
| floor | 0 |
| forex constat | - |
| forex constat date | 1970-JAN-01 |
| forex start date | 1970-JAN-01 |
| guaranteed currency | EUR |
| guaranteed rate | 0 |
| initial spot | 0 |
...
| maturity | 2020-FEB-05 |
| option quotity | 1 |
| strike | 2500 |
| underlying id | SOCIETE-GLE_X |
| underlying type | Stock |
And the option’s restriking infos is:
| Property | Value |
| floating rate | no |
| fixed rate | no |
...
| last update | <now> |
| first trading date | <now> |
| rate offset | 0.0 |
When I create the option
Then the option id should be filled in
Scenario: Create a Stock Option
Given a standard option with the following specifics:
| underlying type | underlying id |
| Stock | SOCIETE-GLE_X |
When I create the option
Then the option id should be filled in
@aloyer
Too much details ? use persona
58. @aloyer
# language: fr
Fonctionnalité:
@reseau_simplifié
Scénario: Obtenir une feuille de l'itinéraire par d'arrivée
2 Place de la Défense: 48.893195, 2.238945
Etant donné que je veux aller de "48.893195, 2.238945" au "25 rue du Louvre, Paris"
Et que je veux partir à 9h30 avec les options suivantes:
| X | Transport en commun |
| X | Le plus rapide |
| | Le moins de changement |
Alors je devrais obtenir la feuille de route suivante:
| Type | Heure | Localisation | Transport | Durée | Distance |
| départ | 9h30 | 2 Place de la Défense | Pied | ~5min | 400m |
| - | 9h37 | La Défense | RER A vers Vincennes | 10min | - |
| - | 9h47 | Châtelet - Les Halles | Pied | ~7min | 550m |
| arrivée | 9h54 | 25 rue du Louve | - | - | - |
59. @aloyer
# language: fr
Fonctionnalité:
Scénario: Rer A dans le réseau de transport simplifié
Etant donné le réseau de transport simplifié "Parisien"
Alors le Rer A devrait passer toutes les 10mins à "la Défense" à partir de 5h37
Alors les temps de transport cumulés depuis "la Défense" devraient être:
| Charles de Gaulle Etoile | 5min |
| Auber | 7min |
| Chatelet les Halles | 10min |
@reseau_simplifié
Scénario: Obtenir une feuille de l'itinéraire par d'arrivée
2 Place de la Défense: 48.893195, 2.238945
Etant donné que je veux aller de "48.893195, 2.238945" au "25 rue du Louvre, Paris"
Et que je veux partir à 9h30 avec les options suivantes:
| X | Transport en commun |
| X | Le plus rapide |
| | Le moins de changement |
Alors je devrais obtenir la feuille de route suivante:
| Type | Heure | Localisation | Transport | Durée | Distance |
| départ | 9h30 | 2 Place de la Défense | Pied | ~5min | 400m |
| - | 9h37 | La Défense | RER A vers Vincennes | 10min | - |
| - | 9h47 | Châtelet - Les Halles | Pied | ~7min | 550m |
| arrivée | 9h54 | 25 rue du Louve | - | - | - |
60. To be continued…
@aloyer
# language: fr
Fonctionnalité:
Scénario: Le métro 1 dans le réseau de transport simplifié
Etant donné le réseau de transport simplifié "Parisien"
Alors le métro 1 devrait passer dans chaque station toutes les 5mins à partir de 6h00
Scénario: Rer A dans le réseau de transport simplifié
Etant donné le réseau de transport simplifié "Parisien"
Alors le Rer A devrait passer toutes les 10mins à "la Défense" à partir de 5h37
Alors les temps de transport cumulés depuis "la Défense" devraient être:
| Charles de Gaulle Etoile | 5min |
| Auber | 7min |
| Chatelet les Halles | 10min |
@reseau_simplifié
Scénario: Obtenir une feuille de l'itinéraire par d'arrivée
2 Place de la Défense: 48.893195, 2.238945
Etant donné que je veux aller de "48.893195, 2.238945" au "25 rue du Louvre, Paris"
Et que je veux partir à 9h30 avec les options suivantes:
| X | Transport en commun |
| X | Le plus rapide |
| | Le moins de changement |
Alors je devrais obtenir la feuille de route suivante:
| Type | Heure | Localisation | Transport | Durée | Distance |
| départ | 9h30 | 2 Place de la Défense | Pied | ~5min | 400m |
| - | 9h37 | La Défense | RER A vers Vincennes | 10min | - |
| - | 9h47 | Châtelet - Les Halles | Pied | ~7min | 550m |
| arrivée | 9h54 | 25 rue du Louve | - | - | - |
63. Remove ambiguities but keep scenario short
Am I concrete enough on the expected behavior?
Signal vs noise ratio?
What if the scenario has more details?
@aloyer
Rely on Persona/Defaults…
Do Scenario Review…
64. is NOT About is About
BDD
!
"
KLa tool for test automation communication
acceptance criteriaL K behavior