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.
User interface and user experience ui ux design basicsRavi Bhadauria
In this video there is a complete description for what are the basics needed for UI as well as UX. To learn these from an institute, then join ADMEC Multimedia Institute.
User Story Mapping - ein Hands-on-Workshop
Den Begriff „User Story“ hat wohl inzwischen jeder, der mit Software-Entwicklung zu tun hat, schon gehört. Für viele ist es aber nur eine andere Form um Anforderungen zu erfassen. Ist das wirklich so? Wo bleibt der Nutzer in der „User Story“? Wo ist die Geschichte?
User Story Mapping kann helfen:
- User Stories zu organisieren und zu priorisieren
- die „Geschichte“, sprich die gesamte User Experience im Augen zu behalten
- Ein gemeinsames Verständnis im gesamten Team zu entwickeln
den Projektfortschritt zu dokumentieren
Inhalt der Präsentation:
- Kurze Einführung in das Thema User Stories
- Gemeinsames Mapping eines IST-Map
- Gemeinsames Mapping einer fiktiven Anwendung
- Erfahrungen aus Praxis: wie verlief die Einführung von User Story Mapping in unserer Agentur? Wie haben wir User Story Mapping in unsere Prozesse integriert?
Sass Code Reviews - How one code review changed my life #SassConf2015Stacy Kvernmo
After writing CSS for over 10 years you'd think you would know everything there is to know, right? I couldn't be more wrong and I found out the hard way. While my first formal code review session was painfully embarrassing it was also the most important lesson I have learned throughout my career. Code reviews force you to communicate on a different level which ultimately leads to more thoughtful coding practices. When writing Sass and other pre-processed languages it is even more important that you review your code continually, which even the more seasoned front end developers may neglect at times.
Bottom line: Code reviews will make you better.
This presentation is an introduction to the fields of User Experience and User Interface design that I created for a Google Hangout talk for Saigon CoWorkshop.
User interface and user experience ui ux design basicsRavi Bhadauria
In this video there is a complete description for what are the basics needed for UI as well as UX. To learn these from an institute, then join ADMEC Multimedia Institute.
User Story Mapping - ein Hands-on-Workshop
Den Begriff „User Story“ hat wohl inzwischen jeder, der mit Software-Entwicklung zu tun hat, schon gehört. Für viele ist es aber nur eine andere Form um Anforderungen zu erfassen. Ist das wirklich so? Wo bleibt der Nutzer in der „User Story“? Wo ist die Geschichte?
User Story Mapping kann helfen:
- User Stories zu organisieren und zu priorisieren
- die „Geschichte“, sprich die gesamte User Experience im Augen zu behalten
- Ein gemeinsames Verständnis im gesamten Team zu entwickeln
den Projektfortschritt zu dokumentieren
Inhalt der Präsentation:
- Kurze Einführung in das Thema User Stories
- Gemeinsames Mapping eines IST-Map
- Gemeinsames Mapping einer fiktiven Anwendung
- Erfahrungen aus Praxis: wie verlief die Einführung von User Story Mapping in unserer Agentur? Wie haben wir User Story Mapping in unsere Prozesse integriert?
Sass Code Reviews - How one code review changed my life #SassConf2015Stacy Kvernmo
After writing CSS for over 10 years you'd think you would know everything there is to know, right? I couldn't be more wrong and I found out the hard way. While my first formal code review session was painfully embarrassing it was also the most important lesson I have learned throughout my career. Code reviews force you to communicate on a different level which ultimately leads to more thoughtful coding practices. When writing Sass and other pre-processed languages it is even more important that you review your code continually, which even the more seasoned front end developers may neglect at times.
Bottom line: Code reviews will make you better.
This presentation is an introduction to the fields of User Experience and User Interface design that I created for a Google Hangout talk for Saigon CoWorkshop.
Intro + Examples
Human Interface Principles
Platform Characteristics
UX Guidelines
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
A word “design” has a very broad meaning and is used in nearly every business or industry. We always have an intuitive awareness of what this is about though. But when we talk about UX and UI design terms, everything is getting a lot more complicated.
What is UI UX design? Is it a generic term? Or UX and UI are two separate concepts? If they are autonomous notions, so why are they always used together? In this article I want to answer all your questions concerning this topic.
https://spdload.com/blog/ux-vs-ui-design/
Introduction to Flutter - truly crossplatform, amazingly fastBartosz Kosarzycki
Intro: Flutter meaning rapid variation of electronic signal recently became Dart's framework name for mobile development. This presentation is a short introduction into a cross-platform solution covering iOS/Android. During this 45 minute period you'll learn what is flutter, where it came from and what it's for.
Kate Williamson and Cait Vlastakis Smith — UX Designers at Centerline Digital — explore the differences between UX and UI.
Good UX is the manifestation of deeply understanding people.
Learn more at: http://www.centerline.net
Women have a rich history in computer technology, yet many of the top tech-savvy females are seemingly forgotten from the history books.
Forgotten women in tech history shares the stories of a few of the most important women in the field of computer science, since its humble beginnings.
in these slides i have explained the difference between MVC, MVP and MVVM design patterns. slides includes definition, explanation and then implementation with code examples. it is a comparison oriented presentation.
A new .NET update is coming around. It will transform .NET development by providing features that should have been around a lot sooner! We can forgive the delay in this update given the fact that Microsoft is including the .NET Multi-Platform App UI (MAUI).
This new framework will aid developers who work mainly to develop mobile applications but also want other options open to them. A major benefit of using the MAUI is the ability to develop mobile applications that are no longer platform-dependent.
Introduction to using SpecFlow tool for testing REST API. For beginners that are at least a bit familiar with test automation, and gives some details and hints.
Jackson Lee, Joshua Tan, Jasmine Battu on September 29, 2023
✨Unlock Your Creative Potential with Figma! Get ready to dive into the world of UI/UX design with our exciting workshop in collaboration with the ICCIT Council.
Whether you're a complete beginner or already have some design experience, this event is tailored just for you!
This event will cover creating accessible user interfaces design using Figma, and basic user experience principles that are usually taught in upper-year CCIT courses.
No prior experience is required; our goal is to provide a welcoming environment for everyone to learn and grow. Don't miss out on this unique opportunity to enhance your UI/UX skills and connect with like-minded peers. Mark your calendar, invite your friends, and see you there! 👋
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
Intro + Examples
Human Interface Principles
Platform Characteristics
UX Guidelines
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
A word “design” has a very broad meaning and is used in nearly every business or industry. We always have an intuitive awareness of what this is about though. But when we talk about UX and UI design terms, everything is getting a lot more complicated.
What is UI UX design? Is it a generic term? Or UX and UI are two separate concepts? If they are autonomous notions, so why are they always used together? In this article I want to answer all your questions concerning this topic.
https://spdload.com/blog/ux-vs-ui-design/
Introduction to Flutter - truly crossplatform, amazingly fastBartosz Kosarzycki
Intro: Flutter meaning rapid variation of electronic signal recently became Dart's framework name for mobile development. This presentation is a short introduction into a cross-platform solution covering iOS/Android. During this 45 minute period you'll learn what is flutter, where it came from and what it's for.
Kate Williamson and Cait Vlastakis Smith — UX Designers at Centerline Digital — explore the differences between UX and UI.
Good UX is the manifestation of deeply understanding people.
Learn more at: http://www.centerline.net
Women have a rich history in computer technology, yet many of the top tech-savvy females are seemingly forgotten from the history books.
Forgotten women in tech history shares the stories of a few of the most important women in the field of computer science, since its humble beginnings.
in these slides i have explained the difference between MVC, MVP and MVVM design patterns. slides includes definition, explanation and then implementation with code examples. it is a comparison oriented presentation.
A new .NET update is coming around. It will transform .NET development by providing features that should have been around a lot sooner! We can forgive the delay in this update given the fact that Microsoft is including the .NET Multi-Platform App UI (MAUI).
This new framework will aid developers who work mainly to develop mobile applications but also want other options open to them. A major benefit of using the MAUI is the ability to develop mobile applications that are no longer platform-dependent.
Introduction to using SpecFlow tool for testing REST API. For beginners that are at least a bit familiar with test automation, and gives some details and hints.
Jackson Lee, Joshua Tan, Jasmine Battu on September 29, 2023
✨Unlock Your Creative Potential with Figma! Get ready to dive into the world of UI/UX design with our exciting workshop in collaboration with the ICCIT Council.
Whether you're a complete beginner or already have some design experience, this event is tailored just for you!
This event will cover creating accessible user interfaces design using Figma, and basic user experience principles that are usually taught in upper-year CCIT courses.
No prior experience is required; our goal is to provide a welcoming environment for everyone to learn and grow. Don't miss out on this unique opportunity to enhance your UI/UX skills and connect with like-minded peers. Mark your calendar, invite your friends, and see you there! 👋
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.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
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.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
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.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
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).
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
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