The document summarizes a presentation on test automation with Cucumber-JVM. Cucumber allows writing tests in plain text and executing them as automated tests. It supports behavior driven development by writing specifications in a natural language format. Cucumber tests can be written in various programming languages like Java, Ruby, and executed using JUnit. It uses regular expressions and annotations to map steps in feature files to code implementations.
Introduction to BDD with Cucumber for JavaSeb Rose
This tutorial looks at what Cucumber is good for—and what it isn’t. It briefly covers what behavior-driven development (BDD) is and how Cucumber helps deliver on the promise of improved communication between the business and the development team. Then it dives into how Cucumber works, the specific details of the Java version (Cucumber-JVM), and what makes it different from other similar tools. Finally, it considers how Cucumber can fit into your test automation strategy and produce "living documentation" that is always up to date. You will come away with everything you need to know to be able to decide whether BDD (using Cucumber-JVM) is for you.
This power point presentation provides details on syntax of Gherkin language and how it can be used to write accurate user acceptance criteria for user stories.
Contents:
Behavior Driven Development (BDD)
Features of BDD
BDD Tools
BDD Framework
Examples of Cucumber/SpecFlow/BDD test
Gherkin – BDD Language
The Problem
Example of Gherkin
The Conclusion
SpecFlow Feature File
Keywords for the Feature File creation
This presentation provides an overview of a Test Automation Framework with BDD and Cucumber. It also includes several open-source initiatives that Rhoynar Software Consulting (www.rhoynar.com) has been working on in the fields of QA Automation and DevOps. Lastly, it also includes links to some of the open-source projects that you can use right now for your work.
- Continuous Integration Infra a la OpenStack - https://github.com/Rhoynar/ci-infra
- An Email Verification Library in Java:
https://github.com/Rhoynar/EmailVerify
- Automatic Test Generation using Selenium WebDriver, Java and TestNG
https://github.com/Rhoynar/AutoTestR
- Barebones BDD and Cucumber Framework integrated with Java Maven and TestNG:
https://github.com/Rhoynar/qa-automation
When All Teammates Speak The Same Language
Two main problems in software development
It's all about brains
What is BDD?
BDD vs TDD vs ATDD
Three Amigos
Gherkin
Cucumber and Selenium WebDriver
How to use feature files and create steps definitions
Examples
Introduction to BDD with Cucumber for JavaSeb Rose
This tutorial looks at what Cucumber is good for—and what it isn’t. It briefly covers what behavior-driven development (BDD) is and how Cucumber helps deliver on the promise of improved communication between the business and the development team. Then it dives into how Cucumber works, the specific details of the Java version (Cucumber-JVM), and what makes it different from other similar tools. Finally, it considers how Cucumber can fit into your test automation strategy and produce "living documentation" that is always up to date. You will come away with everything you need to know to be able to decide whether BDD (using Cucumber-JVM) is for you.
This power point presentation provides details on syntax of Gherkin language and how it can be used to write accurate user acceptance criteria for user stories.
Contents:
Behavior Driven Development (BDD)
Features of BDD
BDD Tools
BDD Framework
Examples of Cucumber/SpecFlow/BDD test
Gherkin – BDD Language
The Problem
Example of Gherkin
The Conclusion
SpecFlow Feature File
Keywords for the Feature File creation
This presentation provides an overview of a Test Automation Framework with BDD and Cucumber. It also includes several open-source initiatives that Rhoynar Software Consulting (www.rhoynar.com) has been working on in the fields of QA Automation and DevOps. Lastly, it also includes links to some of the open-source projects that you can use right now for your work.
- Continuous Integration Infra a la OpenStack - https://github.com/Rhoynar/ci-infra
- An Email Verification Library in Java:
https://github.com/Rhoynar/EmailVerify
- Automatic Test Generation using Selenium WebDriver, Java and TestNG
https://github.com/Rhoynar/AutoTestR
- Barebones BDD and Cucumber Framework integrated with Java Maven and TestNG:
https://github.com/Rhoynar/qa-automation
When All Teammates Speak The Same Language
Two main problems in software development
It's all about brains
What is BDD?
BDD vs TDD vs ATDD
Three Amigos
Gherkin
Cucumber and Selenium WebDriver
How to use feature files and create steps definitions
Examples
Behavior Driven development is the process of exploring, discovering, defining and driving the desired behavior of software system by using conversation, concrete examples and automated tests.
BDD (Behaviour Driven Development) is a synthesis and refinement of practices stemming from TDD (Test Driven Development) and ATDD (Acceptance Test Driven Development). Although BDD is principally an idea about how software development should be managed by both business interests and technical insight, the practice of BDD does assume the use of specialized software tools to support the development process.
This is an introduction to BDD and the Gherkin syntax. It aims to explain:
* What's Gherkin. Why it's used. An example of all the keywords in Gherkin
* How Gherkin fits into BDD (features files, writing tests first etc)
Ngrx - A State management aka redux solution for Angular 6. Makes your clean and modular. If you have a big complex application with a lot of interaction you are right place
Test and Behaviour Driven Development (TDD/BDD)Lars Thorup
In this introduction to Test Driven Development (TDD) or Behaviour Driven Development (BDD) we give a high level description of what it is and why it is useful for developers. Then we go into some details on stubs and mocks, test data, UI testing, SQL testing, JavaScript testing, web services testing and how to start doing TDD/BDD on an existing code base.
A quick presentation on BDD in general, and Gherkin and Behave in particular. This goes on the fundamentals of Gherkin, and showcases a very simple Behave test for the well known `ls` command. The git repository for this presentation that was demoed is https://github.com/bmustiata/behave-demo .
Behavior Driven development is the process of exploring, discovering, defining and driving the desired behavior of software system by using conversation, concrete examples and automated tests.
BDD (Behaviour Driven Development) is a synthesis and refinement of practices stemming from TDD (Test Driven Development) and ATDD (Acceptance Test Driven Development). Although BDD is principally an idea about how software development should be managed by both business interests and technical insight, the practice of BDD does assume the use of specialized software tools to support the development process.
This is an introduction to BDD and the Gherkin syntax. It aims to explain:
* What's Gherkin. Why it's used. An example of all the keywords in Gherkin
* How Gherkin fits into BDD (features files, writing tests first etc)
Ngrx - A State management aka redux solution for Angular 6. Makes your clean and modular. If you have a big complex application with a lot of interaction you are right place
Test and Behaviour Driven Development (TDD/BDD)Lars Thorup
In this introduction to Test Driven Development (TDD) or Behaviour Driven Development (BDD) we give a high level description of what it is and why it is useful for developers. Then we go into some details on stubs and mocks, test data, UI testing, SQL testing, JavaScript testing, web services testing and how to start doing TDD/BDD on an existing code base.
A quick presentation on BDD in general, and Gherkin and Behave in particular. This goes on the fundamentals of Gherkin, and showcases a very simple Behave test for the well known `ls` command. The git repository for this presentation that was demoed is https://github.com/bmustiata/behave-demo .
QA Fest 2019. Дмитрий Собко. Testing Big Data solutions fast and furiouslyQAFest
Нам хорошо известно, как тестировать REST API с N эндпоинтами, с реляционными и нереляционными (NonSQL) базами данных.
То же самое и с тестированием UI. Такие фреймворки как Selenium, Selenide, Selenoid ни для кого не загадка. Более того, создать с нуля надежный, расширяемый и действительно крутой автоматизированный тестовый фреймворк для таких приложений не составляет труда.
Но как же насчет BigData проектов, которые не имеют ни back-end ни front-end в классическом понимании? Как их тестировать? Какие части покрыть тестами в первую очередь? И, кроме того, как внедрить автоматизацию и сделать ее эффективным способом для таких проектов.
Я покажу вам, как с этим жить. Как создать тестовый фреймворк для Cloud Big Data проектов с нуля. И разработать его самым оптимальным способом с использованием самых интересных технологий.
DMYTRO SOBKO, Lead automation QA engineer @EPAM.
We are well aware of how to test the REST API with N endpoints, with relational and non-relational (NonSQL) databases. Same thing with UI testing. Frameworks like Selenium, Selenide, Selenoid are not a mystery to anyone. Moreover, creating a reliable, extensible and really cool automated test framework for such applications from scratch is not difficult. But what about BigData projects that have no back-end or front-end in the classical sense? How can we test them? What parts should we cover with tests in the first place? And, besides, how do we introduce automation and make it an effective way for such projects?
Dmytro will show you how to create a test framework for Cloud Big Data projects from scratch and to develop it in the most optimal way using the most interesting technologies.
This workshop is a hands-on training where a real Zend Framework application is used as an example to start improving QA using tools to test, document and perform software metric calculations to indicate where the software can be improved. I also explain the reports produced by a CI system.
Reproducible Computational Research in RSamuel Bosch
A short presentation with pointers on getting started with reproducible computational research in R. Some of the topics include git, R package development, document generation with R markdown, saving plots, saving tables and using packrat.
What features of modern programming languages allow you to maximise creativity and express solutions to problems elegantly and efficiently. This is a summary of features of the latest languages and how they help.
Managing data for end to end Tests are always difficult. To keep tests isolated many people will drop and repopulate the database before every test execution. The Test Data Builder Pattern provides an alternative to this anti-pattern.
Baking in the cloud with packer and puppetAlan Parkinson
Provisioning machines using Puppet when scaling to meet customer demand isn't always practical. Baking machine images and deploying the image is a practical alternative but how can we do this Packer and Puppet?
One mistake many people make is running their selenium test suites with every browser combination... you don't need to! Rendering problems are probably the biggest cross browser compatibility issue, and you can't actually test for these with Functional Tests. So by running Selenium tests across many browsers you are really testing JavaScript and DOM compatibility.
Running our Selenium tests across many browsers was our JavaScript compatibility strategy, but it proved inefficient as we ended up with bugs in Internet Explorer; how embarrassing!
This is a short preview of a talk I will giving at Agile Testing Days 2014
The rise of Distributed Version Control Systems with good merge support has rehabilitated Feature Branches with many Open Source projects (OSS) receiving contributions as Pull Requests. Feature Branching is a technique where developers do all their changes separate from the mainline of code. Next they open a Pull Request to have their code merged into the mainline after being peer reviewed.
This OSS popularity for Pull requests with Git and Mercurial has been transferring to commercial projects, with many teams now adopting it internally. SCM is seen as a Developer centric domain but testers have a lot to gain. This presentation will cover an introduction to Pull Requests and demonstrate how to identify key information that can be used to as inputs to different testing techniques.
While not a direct substitute for pairing with a developer, pull requests represent an opportunity to review the code, automated testing and learn from the developers by asking questions. As each Pull Request represents a single User Story this information can help limit the scope of Exploratory based testing sessions and be utilized to further understand the risk of the changes to the system.
Many businesses are adopting Continuous Delivery because the frequent releases and low risk nature of these releases can provide a competitive cost advantage. This is particularly important in a world where many businesses can only exist and survive and are defined by software based systems.
One mistake many people make is running their selenium test suites with every browser combination... you don't need to! Rendering problems are probably the biggest cross browser compatibility issue, and you can't actually test for these with Functional Tests. So by running Selenium tests across many browsers you are really testing JavaScript and DOM compatibility.
Running our Selenium tests across many browsers was our JavaScript compatibility strategy, but it proved inefficient as we ended up with bugs in Internet Explorer; how embarrassing!
A Quick overview of Behaviour Driven Development (BDD)Alan Parkinson
Many people believe Behaviour Driven Development (BDD) is about Test Automation. It's true that BDD and ATDD tools such as Cucumber and SpecFlow are often used in Test Automation however, that is only the tip of the proverbial iceberg. This is a rather narrow viewpoint which completely misses the benefits brought about by the hugely improved requirements and time saved as well as the cost savings brought about by these changes in workflow and development methodology.
This talk was given at the Surrey Software Testing Club (STC) in Guildford.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
1. Boston Java Meetup, 13/06/2013
Test Automation
with Cucumber-JVM
Alan Parkinson
@alan_parkinson
2. Cucumber is a tool that executes plain-text
functional descriptions as automated tests
• Tests written in business-facing text
Supports over 40 spoken languages
This test is called Gherkin
• Automation written in target language
Ruby, Java, Scala, Groovy, etc.. .net, python, PHP
4. • Program does not do what it is intended
• Fixed in development/QA
• Program does what is intended
• Unstated, misunderstood or tacit
requirements
IMPLEMENTATION DEFECT
REQUIREMENTS DEFECT
Software - What can go wrong?
5. A woman asks her husband, a
programmer, to go shopping.
She tells him “please, go to the nearby
grocery store to buy some bread. Also, if
they have eggs, buy 6”
6. 50-60%of issues identified by testers can be chalked down as
Requirements Defects
100-200%more expensive to fix than other defects because
the code is already written
7. How does BDD help?
• All stakeholders involved in the discussion drives out clear and concise
specifications centred around business value.
• Write specifications in natural language so everyone is on the same page
• Turn the specification into acceptance tests that guarantees the software does
as it is intended
• Use those tests as the software evolves to guarantee that it continues to work
as intended.
• Specifications are documentation – each scenario describes how the system is
being used
8. Cucumber, The Origins
• Cucumber
Ruby
Born 2007-2008
• Cuke4Duke
First seen in 2008
JRuby
• Cucumber-JVM
Released April 2012
Java, Groovy, Clojure, Scala, Ioke, Jython, Rhino (JavaScript) and JRuby
11. Scenarios - Given When Then
Given an owner with a registered pet called “Sly“
When the owner registers a new pet called “Sly“
Then the user should be warned that the pet already
exists
12. Writing Scenario's in Cucumber
• Scenarios are organized together into features
• Each feature is represented as a plain text file.
• Feature files must have the “.feature” extension
• Each feature can contain many scenarios
14. JUnit Runner 2
• Body of the class should be empty
No @Test annotated methods
No @Before or @After methods
• Arguments can be provided with an additional
annotation
15. JUnit Runner - Arguments
@RunWith(Cucumber.class)
@Cucumber.Options(
features = "src/test/resources/features“
)
public class RunnerIT {
}
16. Step Definitions
• A single Method representing a Step from a Feature file
• The Method is annotated with information about the step it
represents
• Cucumber generates “Code Snippet's” for Step Definition it
can’t find
18. Passing and Failing
• Each step has it own result state
Passed
Pending
Skipped
Failed
• Individual step result state combined determine the
Scenarios success or failure
• Steps can be failed on exceptions or JUnit Assertion failures
19. Regex Lesson
Cucumber uses Regular Expressions to match steps to
definitions.
@When("^we want to stop traffic$")
^ Matches the starting position
$ Matches the ending position
20. Capturing Arguments
@Given("^an owner with a pet called "Sly"$")
public void an_owner_with_a_pet_called() {
…
}
@Given("^an owner with a pet called "([^"]*)"$")
public void an_owner_with_a_pet_called(String name) {
…
}
21. Capturing Arguments 2
• The pair of brackets is a capture group
• Everything captured is passed to method parameter
• Cucumber will automatically convert to the method
parameter type
• Equal number of method parameters and capture groups
22. Type Conversion
• If the captured string is not in the correct format for type
conversion an error will be thrown
• Use regular expressions to capture the correct format string
for the type
Note: Escape regular expression characters with backslash
23. Typical Capture Groups
(.+) Good for capturing strings and dates
"([^"]*)" Captures a string within Double quotes
(d) Capture decimal numbers only
(d+.d+) Capture floating point numbers
(true|false) Captures a Boolean value
24. Date Formats
@Given ("^today is (.+)$")
public void today_is(Date date) {
….
}
Dates are recognized if it’s a format from the DateFormat class
25. Date Formats
SHORT is completely numeric, such as 12.13.52 or 3:30pm
MEDIUM is longer, such as Jan 12, 1952
LONG is longer, such as January 12, 1952 or 3:30:32pm
FULL is pretty completely specified, such as Tuesday, April 12,
1952 AD or 3:30:42pm PST.
27. Tag use cases
• Grouping Scenarios together
Identify slow running test that shouldn’t be run frequently
Identify tests that require a particular library or server
29. Running Scenarios without a Tag
Cucumber can exclude Scenarios with a particular tag by
inserting the tilde character before the tag
For the following command will run all Scenarios without the
WebDriver tag
@Cucumber.Options(
tags = {“~@WebDriver”}, … )
30. Tag expressions – Logical OR
Separate a list of tags by commas for a Logical OR tag
expression
@Cucumber.Options(
tags = {“@WebDriver,@email”}, … )
31. Tag expressions – Logical AND
Specifying multiple tag arguments creates a logical AND
between each tag expression.
@Cucumber.Options(
tags = {“@WebDriver”, ”@email”}, … )
32. Tag expressions – AND OR
Run scenarios that are tagged with @WebDriver or @email
but not @slow
@Cucumber.Options(
tags = {“@WebDriver,@email”, “~@slow”}, … )