John Ferguson Smart

John's latest articles

BDD in Action: Advanced BDD Test Automation

Posted by John Ferguson Smart

Join John Ferguson Smart in Madrid this June at Expo:QA and learn the finer points of Advanced BDD Test Automation practices In this workshop with John Smart, author of BDD in Action, you will be introduced to the principles and practices of applying software engineering design practices to test automation, looking at concepts such as…

Read More

Cukenfest london – Open space and workshops

Posted by John Ferguson Smart

Gherkin Refactoring Patterns Good Gherkin is easy to read but hard to write. And while there are many tips and tricks for writing good Gherkin, often teams still struggle to keep their scenarios clean, informative and readable. In this talk, we will take a practical look at some real-world Gherkin scenarios, and see why they…

Read More

National Software Testing Conference

Posted by John Ferguson Smart

John Ferguson Smart is an international speaker, consultant, author and trainer well known in the Agile community for his many books, articles and presentations, particularly in areas such as BDD, TDD, test automation, software craftsmanship and team collaboration. John is the author of the best-selling BDD in Action, as well as Jenkins: The Definitive Guide…

Read More

Condottieri e Artisti – Mercenaries and Artists in the IT industry

Posted by John Ferguson Smart

It was the time of Da Vinci and Michelangelo. It was also the time of Machiavelli and the Medici. Artists working on timeless masterpieces crossed paths with mercenary captains, contracted to do a very specific job. In this keynote talk, John Smart will address important questions with deep implications for any IT team, or any…

Read More

Getting started with REST API testing with Serenity and Cucumber

Posted by John Ferguson Smart

This tutorial show you how to get started with REST-API testing using Serenity and Cucumber 4. Get the code Git: git clone https://github.com/serenity-bdd/serenity-rest-starter.git cd serenity-rest-starter Or simply download a zip file. The starter project The best place to start with Serenity and Cucumber is to clone or download the starter project on Github (https://github.com/serenity-bdd/serenity-rest-starter). This project…

Read More

Getting started with Serenity BDD and Cucumber 4

Posted by John Ferguson Smart

Serenity BDD is a library that makes it easier to write high quality automated acceptance tests, with powerful reporting and living documentation features. It has strong support for both web testing with Selenium, and API testing using RestAssured. Serenity strongly encourages good test automation design, and supports several design patterns, including classic Page Objects, the…

Read More

Page Objects that Suck Less – Tips for writing more maintainable Page Objects

Posted by John Ferguson Smart

Page Objects are one of the most widely used test automation design patterns around. Most QA engineers have used a variation of Page Objects at some point. However, it is often misunderstood and used poorly, which can result in test automation code that is fragile and hard to maintain. In this article, we will look…

Read More

The Serenity Dojo courses just became a whole lot more job-worthy!

Posted by John Ferguson Smart

In 2019, the Serenity Dojo will be integrating with Accredible. Accredible is one of the most widely recognised digital credentialing platforms. From January 2019 onwards, when you complete one of the Serenity Dojo courses, you will receive a digital certificate that you can download and use as evidence of your training. You can even post…

Read More

Environment-specific configuration in Serenity BDD

Posted by John Ferguson Smart

When we write acceptance tests, we often need to run them against different environments. Managing the URLs for each environment by hand can be cumbersome, especially when there are not just web pages, but also REST end points, databases etc to think about. Fortunately, Serenity BDD provides a lot of flexibility in configuring environment-specific options….

Read More

Serenity BDD and JIRA – a 5 minute primer

Posted by John Ferguson Smart

Serenity BDD provides a number of ways you can integrate your acceptance tests with JIRA. In this article, we look at a few of the more common ones, focusing on integration with Serenity BDD and Cucumber. Adding links to JIRA in your Serenity reports The first and easiest integration with JIRA is to get Serenity…

Read More

Byte-Sized Serenity BDD – Episode 1

Posted by John Ferguson Smart

https://youtu.be/9CSrBMYbfdE In this first episode of Byte Sized Serenity BDD, we look at a new feature: Transitionary Screenshots.

Read More

So you say you are doing BDD? The story of the whiteboard and the nail gun

Posted by John Ferguson Smart

“BDD is what makes you BE agile, instead of just doing agile” It isn’t hard to find a team that says they are doing Behaviour Driven Development, or BDD. This isn’t too surprising, since, when done well, it is an extremely effective way of delivering high value, high quality solutions to your users. Unfortunately, the…

Read More

Creating Tasks in Serenity Screenplay

Posted by John Ferguson Smart

Serenity Screenplay helps us write cleaner, more elegant and more maintainable code, and Serenity 2.0.13 has added some great improvements in this area. Read on to find out more! One of the most powerful aspects of Serenity Screenplay is the way it documents user interactions with the system in a clean and readable way, both within…

Read More

REST API testing with Rest-Assured and Serenity-BDD – a primer

Posted by John Ferguson Smart

REST API testing an increasingly important part of modern software architectures. And in a world where speedy delivery is of the essence, comprehensive automated tests are not an option. From a testing perspective, understanding REST APIs and how to use them is vital, even if you aren’t writing tests for an API directly. Testers can…

Read More

What’s new in Serenity 2

Posted by John Ferguson Smart

Serenity BDD is a library that helps you write better automated acceptance criteria, and produce better living documentation and executable specifications. In this article, we will look at the key new features in Serenity BDD 2.0. Introduction Serenity BDD is a test automation and reporting library that is used in conjunction with other testing libraries…

Read More

How can I reuse my gherkin scenarios?

Posted by John Ferguson Smart

A Serenity user recently wrote to me with the following question: Is there anyway way to reuse Scenarios? Imagine that I’ve created a feature called “WelcomePage” with a Scenario called “Login” with the steps to Login to some webapp. Now, in a different feature file, on the Background part, use like a WelcomePage.Login (Feature.Scenario) and,…

Read More

BDD Discovery Pitfalls – When the gherkins hide the garden

Posted by John Ferguson Smart

In this article, we will take a look at a real-world example of BDD scenario refactoring. Sue’s team had just received a new story to work on. Sue’s team works in an international bank, in the regulatory department: they are building a workflow application that makes it easier for auditors to review risky or suspicious…

Read More

Testing REST APIs with Cucumber, Rest Assured and Serenity BDD – a tutorial

Posted by John Ferguson Smart

Nowadays, applications rely more and more on well designed, well documented and well tested APIs, and the number of these APIs is steadily increasing. Simply writing test scripts for our REST end points is no longer enough – our APIs need not just tests, but living documentation. The Screenplay pattern is a powerful way of…

Read More

Working with REST APIs using Serenity Screenplay

Posted by John Ferguson Smart

An extract from The Serenity Book The Screenplay pattern is an approach to writing automated acceptance tests that helps us write cleaner, more maintainable, more scalable automation code. A Screenplay test talks first and foremost about the tasks a user performs, in business language, rather than diving into the details about buttons, clicks and input…

Read More

BDD is a disruptor

Posted by John Ferguson Smart

Remember when the iPhone came out? Remember how Steve Jobs pitched that it “Changed Everything”, the first time? Maybe he was exaggerating a little, but there is no doubt that the iPhone was a game-changer. It changed the way we thought about what a telephone should do. The iPhone was what we call a market…

Read More

Living Documentation: it’s not just about test reports

Posted by John Ferguson Smart

What is Living documentation Living Documentation comes from the world of Behaviour Driven Development, and is closely related to the idea of Executable Specifications. But what do we mean by “living documentation”? Living documentation is, as the name suggests, both documentation, and living. It is documentation. It describes how an application works, and what business rules affect…

Read More

Working with AngularJS apps in Serenity BDD

Posted by John Ferguson Smart

AngularJS applications have their own challenges when it comes to WebDriver test automation. The asycnhronous nature of Angular apps makes testing these applications particularly tricky when using traditional WebDriver-based technologies. In the JavaScript world, Protractor provides an elegant solution to the problem of testing AngularJS apps. Protractor supports angular-specific locators and knows how to wait…

Read More

High Performance Teams and the Three Strands of Value

Posted by John Ferguson Smart

Teams don’t actually deliver value. They increase their customers’ capability to generate value. And the key to increasing this capability is not churning out features. It is learning about the problems the customers are trying to solve, and about the best ways to solve these problems. Techniques like Scrum do place a strong emphasis on…

Read More

Tell me what you know – a different way of looking at requirements discovery

Posted by John Ferguson Smart

The legacy of the linear requirements process When I started out in software development, we had a thing called a Requirements Specifications Document. Business Analysts would spend a very long time gathering the requirements, organising them, and writing them down in a large Word document. Over time, folk found this approach to be inefficient and…

Read More

Learn BDD test automation with Cucumber and Serenity at the Serenity Dojo

Posted by John Ferguson Smart

“Cucumber and Serenity are the Dynamic Duo of BDD test automation” Learn real-world BDD test automation practices with Cucumber and Serenity BDD, online and at your own pace. Behaviour Driven Development, or BDD, is an extremely effective software delivery practice that helps teams collaborate better and focus on delivering features that really matter. Cucumber is…

Read More

Engage! Bringing teams together to deliver software that makes a difference

Posted by John Ferguson Smart

John delivers a Keynote at the IMWorld 2017 conference in Romania on the topic of bringing teams together to deliver software that makes a difference:

Read More

Intent-Driven Development – the hidden key to BDD

Posted by John Ferguson Smart

Intent-Driven Development. It’s not a new agile fad – it’s just articulating an approach that works well for a lot of experienced practitioners. Whether they know it or not. When I train and coach development teams, I like to talk about Intent-Driven Development. Don’t worry – Intent-Driven Development is not the latest agile trend. Rather,…

Read More

Persona Step Libraries in Serenity BDD

Posted by John Ferguson Smart

Serenity 1.6.3 comes with a new step library feature called Persona Step Libraries. Persona Step Libraries help you make your test code more intuitive and more readable. You can check out the full release announcement on our new Rocket Chat forum. Serenity has always tried to make it easy to organise your test code into appropriate…

Read More

All you need to know about Serenity BDD Step Libraries

Posted by John Ferguson Smart

In Serenity 1.6.0, we have refactored how step libraries are managed, to make them more intuitive and easier to understand. Basic step libraries In Serenity, we use step libraries to better organise our test logic into reusable components. Step libraries are often used to represent actors or persona who interact with the application. For example,…

Read More

Exponential Learning – the key to effective Lean/Agile practices

Posted by John Ferguson Smart

In lean/agile software development, learning is not a byproduct; learning is the most valuable output. To up our game, we don’t just need to learn how to build and deliver better software. We need to learn how to learn better. And one of the keys to learning better and faster is measuring how well we…

Read More

How not to prepare test data in JBehave and Cucumber

Posted by John Ferguson Smart

Preparing test data is hard, avoiding duplication and unnecessary setup time are common issues in all test automation. But it is especially important when we automate acceptance criteria using BDD tools such as JBehave and Cucumber. Duplicating setup logic in each scenario can lead to cluttered and hard-to-read scenarios. And having to inject the same…

Read More

Announcing the Serenity Dojo’s “BDD with Cucumber and Serenity” online course

Posted by John Ferguson Smart

Great news! We have launched our brand new BDD with Cucumber and Serenity course! Two modules (about 45 minutes of video) are currently online, with 9 more modules planned for the coming months, with the first one free to try out. Those of you who have enrolled in the The Serenity BDD Combo Package will…

Read More

The Art of Building Autonomous Teams

Posted by John Ferguson Smart

If you are a large organisation trying to become “agile”, autonomous teams seem to be the Holy Grail. Spotify-style squads are where we want to be. We all want our teams to be lean, mean, agile machines, delivering business value wherever they go. But agile transformation is hard. It isn’t something you can turn on…

Read More

Screenplay with Serenity BDD: the next stage in automated acceptance testing

Posted by John Ferguson Smart

I spoke recently at the CraftConf conference in Budapest on writing higher quality automated tests using the Screenplay pattern. The last half of the talk contains a live demo of using the Screenplay pattern with Serenity BDD. Learn how to write robust and articulate tests using the Screenplay Pattern, an innovative approach to writing BDD-style…

Read More

John Ferguson Smart comes to Dublin!

Posted by John Ferguson Smart

John Ferguson Smart, author of BDD in Action and well-known BDD thought leader, will be returning to Dublin in June for an exclusive tour of seminars, meetups and workshops. Book your place now to avoid missing out! Breakfast Seminar with John Ferguson Smart Shift-Left – Bringing Requirements Discovery and QA Together to Deliver Software that…

Read More

In the “three amigos” band, the BA sets the tune. But it shouldn’t always be that way

Posted by John Ferguson Smart

During Requirements Discovery and Definition activities, products owners and business analysts lead the dance. The ideas they propose, the problems they present, and the solutions they suggest, set the tone for the requirements that are discovered and ultimately the solution that will be delivered. This can be good or bad. Done well, you can instil…

Read More

Broad brushes and narrow brushes: there’s more to BDD than Given/When/Then

Posted by John Ferguson Smart

IT teams today are under constant pressure to deliver more value sooner, and Behaviour Driven Development (BDD) is one of the more effective ways to help teams deliver the high quality software that their business needs. When they adopt BDD, many teams look to tools like Cucumber to help them. But BDD isn’t simply about…

Read More

BDD, Microservices, and Serenity BDD

Posted by John Ferguson Smart

Introduction Many people still associate Behaviour Driven Development (BDD) and automated acceptance testing with User-Interface tests. But BDD and automated acceptance criteria works equally well for service-level tests, notably for Microservices. In fact, automated acceptance tests for Microservices are easier to write and much quicker to run than UI-based tests. In this article, we will look at…

Read More

Feature Mapping – a simpler path from stories to executable acceptance criteria

Posted by John Ferguson Smart

Introduction Writing good acceptance criteria is one of the keys to effective software delivery. But it’s hard. This article looks at Feature Mapping, a new technique that can help teams write higher quality acceptance criteria more easily. An Executable Specification is a Definition of Done that you can run as a test. In Behaviour Driven…

Read More

Generating focused reports with Serenity BDD

Posted by John Ferguson Smart

Many Serenity users that I work with and talk to have projects with a very large number of tests, spread over many functional areas and many different teams. It is useful to have an overall view of all of the test results, but it is also useful to limit the test results to show only…

Read More

Configuring different output directories with Serenity BDD and Maven

Posted by John Ferguson Smart

Serenity BDD is an open source automated testing library geared towards writing high quality, highly maintainable automated acceptance testing, and using these acceptance tests to produce world-class living documentation. In this article, we look at how to get Serenity to generate its reports in different directories, in both simple and multi-module Maven projects. By default, Serenity…

Read More

Serenity Tricks with Java 8

Posted by John Ferguson Smart

Java 8 came out back in 2014, but I still find many teams not making as much use of it’s features as they could. Arguably the biggest new feature in Java 8 were Lambda Expressions, which finally brought a taste of functional programming to the Java world. In this article, I want to give a…

Read More

A Test Pyramid Heresy

Posted by John Ferguson Smart

The Test Pyramid is a staple in Test Automation theory, and is used by many teams as the basis of their test automation strategy. But does it still work for modern development practices? Are there better and more efficient ways of thinking about test automation today? One of the more well-known models in the Test…

Read More

A day (or a sprint) in the life of a BDD team

Posted by John Ferguson Smart

Introduction Behaviour Driven Development is a collaboration practice that uses conversations around concrete examples and requirements, expressed in an executable form, to deliver higher value software more effectively. In this article, we walk through a typical BDD process. While every BDD team is different, and mature teams adapt and refine their process to suit their…

Read More

Serenity BDD Tip: fine-tuning screenshots in your living documentation

Posted by John Ferguson Smart

One of the distinguishing features of Serenity BDD is its powerful reporting capabilities. If you organise and structure your tests well, Serenity can help you turn your tests into a sort of light-weight functional documentation, describing both what your application does in high level terms, and how users use the application to achieve specific goals….

Read More

The role of QA in a DevOps world

Posted by John Ferguson Smart

If you believe what you hear, DevOps is the latest “big thing”. According to a recent survey, high performance teams practicing a DevOps culture deploy 30 times faster and have 60 times fewer failures than low performing teams. Companies having adopted DevOps have been reported reducing the average time it takes to get a feature…

Read More

I don’t ask devs to commit, and neither should you

Posted by John Ferguson Smart

I’ve seen the ‘C’ word floating around the Agile blogosphere again recently – yes, “Commit”. And I’m not talking about Git. I’m talking about that stick that incompetent scrum-masters use to beat their team members into submission so they can look good in the eyes of their managers. You see, “commitment” to delivery individual stories…

Read More

The five stages of BDD (and Agile) Adoption

Posted by John Ferguson Smart

An article by John Ferguson Smart and Jan Molak. More and more organisations are looking to Behaviour Driven Development (BDD) and related practices, as a way to gain or maintain their competitive advantage in software delivery. This is generally a good thing, and the teams I see that succeed in embracing a BDD and Agile…

Read More

The Project Management Triangle must die!

Posted by John Ferguson Smart

By John Ferguson Smart and Jan Molak “On time, in scope and in budget”. This is the refrain of countless project managers on their LinkedIn profiles: it is the badge of the successful project manager, and they wear it with pride. It is also a misguided and dangerous idea that invariably encourages a short-sighted and…

Read More

Beyond the 10,000 hour myth – how we really acquire skill

Posted by John Ferguson Smart

As the old saying goes, “Practice makes perfect”. Indeed, a well-established piece of lore, popularly known as “The 10,000 hour rule”, states that to be an expert in any domain, you need to have practiced it for at least 10,000 hours. This rule was coined by Malcolm Gladwell in his book “Outliers” in 2008. According…

Read More

Better Automated Acceptance Tests With Serenity Screenplay

Posted by John Ferguson Smart

The Screenplay Pattern is a powerful and elegant approach to designing and implementing automated tests, providing a number of improvements over more traditional approaches such as the Page Objects model. Automated tests written using Serenity are faster to write, easier to read and easier to maintain then more conventional approaches. On one recent project, using…

Read More

What are your automated tests really worth?

Posted by John Ferguson Smart

An article by John Ferguson Smart with Antony Marcano and Andy Palmer Only the blissfully ignorant or the insanely confident would forgo automated testing in a modern development project. But automated tests have a cost, in terms both of development and maintenance. In this article, we take a look at the economics of automated tests,…

Read More

The Three Pillars of Trustworthy Test Automation

Posted by John Ferguson Smart

An article by John Ferguson Smart, Antony Marcano and Andy Palmer Few will deny the importance of Automated Acceptance Testing in modern software development. A high quality set of automated acceptance tests helps you deliver valuable features sooner by reducing the wasted time spent in manual testing and fixing bugs. When combined with Behaviour Driven…

Read More

© 2019 John Ferguson Smart