The monthly dose for BDD addicts… In May #bdd, #specflow and #cucumber stories from the Appium Team, Shane Auckland, Seb Rose, John Ferguson Smart & me.
Dear BDD Addicts,
I was in the Netherlands early this month. It was a business trip for conducting a SpecFlow training at a bigger company there. I have my travel routine. I know what to pack and how to minimize my luggage. I take the things only that are really necessary. In the morning of the first day, while walking to the venue, I happened to drop my phone and it fell to the ground. The screen broke and the touch stopped working. The phone itself was functioning, I could see the emails and twitter notifications coming, I just could not do anything with the phone. This reminded me of the cases where all automated tests pass, but the application itself is still unusable. It is pretty frustrating seeing this from the “other” side. Sometimes it is worth thinking about quality from the user’s perspective as well.
This newsletter is a collection of interesting posts, articles and events about behavior driven development, SpecFlow, Cucumber and also test automation and agile testing. I’m following many channels, but surely not all. So if you have seen something that fed your addiction, just send me the link with a few comments to firstname.lastname@example.org.
So here is your dose for May 2017…
[Process] Requirements discovery is not a one-way street
Behavior Driven Development has got many faces, but probably the most exciting thing is to use it for discovering and specifying requirements. But what does discovery mean? Is it like learning about the requirements in small steps, like drinking a glass of water drop by drop? Well… delaying details until they are really necessary is an important part but requirement discovery is more than that. As if the water drops went back sometimes… Hard to imagine, but we don’t have to. In his post John Ferguson Smart explains the different drivers of the discovery process. Requirements discovery is not a one-way street — as he says.
Requirements should be discovered, not dictated (John Ferguson Smart, @wakaleo)
[Automation] Driving stars
There are pretty interesting changes in user interface automation nowadays. You may have heard about the headless chrome driver probably — I will share more details about that later. Another interesting news is how the WebDriver interface can be used to automate non-web applications. With Microsoft’s contribution now there is a WinAppDriver that can automate Windows Desktop applications, finally turning WebDriver into a Star-Driver that can automate anything. (The post is by T.J. Maher who includes an interview by Joe Colantonio with Dan Cuellar, a summary on his conf talk that was made with a contribution of Yosef Durr, Stuart Russell and Dan Cuellar.)
Yosef, Dan and Stuart ready for talk!
[Process] TDD vs. BDD
The relation of TDD and BDD is an evergreen topic. The more you learn about these technologies, the more you can discover their relationship in detail. Many of you have heard about the TDD Red-Green-Refactor cycle, but what does “Write a failing test” really mean? And how do these tests lead us to BDD? Seb Rose summarizes all this in a blog post.
Introduction to TDD and BDD (Seb Rose, @sebrose)
[Process] TDD and BDD for legacy applications
The usual examples for demonstrating BDD are green-field projects. But we all face the challenge from time to time: how all this would work in a legacy project. Getting a legacy project back into a healthy state is certainly not easy, but still, the most typical problem is that we don’t even give a try. Make small steps, be realistic, and use the BDD/TDD techniques to build up a safety net. This is also what Shane Auckland suggests, but make sure you read his post for the details (the post uses the term “StoryBDD” and “SpecBDD” for things I use “BDD” and “TDD” for, but the essence is clear).
Add value to legacy code using agile tools (Shane Auckland, @shanethehat)
[Learn/SpecFlow] Why to use context injection
Context injection is a very powerful state/data sharing method, but it requires a little bit of practice to get fluent in it. Is it worth the efforts? In which situations should you use context injection over defining state accessors in base classes?This post summarizes both options and gives you some hints about the usage.
SpecFlow Tips: Baseclass or Context Injection (Gaspar Nagy, @gasparnagy)