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.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
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.
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar
The European Union Agency for Law Enforcement Cooperation (Europol) has suffered an alleged data breach after a notorious threat actor claimed to have exfiltrated data from its systems. Infamous data leaker IntelBroker posted on the even more infamous BreachForums hacking forum, saying that Europol suffered a data breach this month.
The alleged breach affected Europol agencies CCSE, EC3, Europol Platform for Experts, Law Enforcement Forum, and SIRIUS. Infiltration of these entities can disrupt ongoing investigations and compromise sensitive intelligence shared among international law enforcement agencies.
However, this is neither the first nor the last activity of IntekBroker. We have compiled for you what happened in the last few days. To track such hacker activities on dark web sources like hacker forums, private Telegram channels, and other hidden platforms where cyber threats often originate, you can check SOCRadar’s Dark Web News.
Stay Informed on Threat Actors’ Activity on the Dark Web with SOCRadar!
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.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
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
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.
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.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
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.
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.
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.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
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