After it was announced that Tricentis had acquired SpecFlow from TechTalk, colleagues and friends kept asking me two questions: “Why Tricentis?” and “Why now?” The short answer was always: “We have known each other for a long time, and it was simply the right moment.” Keep on reading for the longer answer from the point of view of the SpecFlow team.

Christian Hassa, founder and Managing Partner of TechTalk
Christian Hassa
Christian Hassa, founder and Managing Partner of TechTalk

None of this happened by coincidence – the roots of our collaboration date back more than 10 years. I first met Wolfgang in 2003, when he was running a testing services company. As we were both based in Vienna, we had many clients in common, and discussed possible opportunities to work together. However, this was long before the Agile hype – these organizations were in perfectly shielded silos, and we never got through the silos to collaborate.

Fast forward to 2007: TechTalk (the company I founded) had grown and we were one of the first service companies in the region to apply Agile methods to large organizations. I met Dan North at an Open Space retreat in Arosa, where we discussed the challenges of continuous acceptance testing in Agile delivery, and Dan introduced his idea of Behavior Driven Development. I was excited at the prospect of trying out BDD in some of our projects.

TechTalk was facing two major challenges at the time – the need for a short turnaround time for specifications and, in particular, regression testing was work-intensive. We also realized that traditional automated testing would not help in the newly evolving Agile world. This encouraged us to try out Cucumber for .NET (Cuke4Nuke) in late 2008, and while the concept was promising, running a Ruby tool on Windows with .NET caused us a lot of pain. So we instead decided to implement our own native .NET version of Cucumber. Initially, the Cucumber team wasn’t too keen on a native .NET version, which is why we were asked to pick a different name, which is why we came up with the name “SpecFlow”. We later reconnected with the Cucumber team and SpecFlow became the official replacement for Cuke4Nuke.

SpecFlow was now official and live. Excited about our new baby, I attended Microsoft PDC in 2010 where I met Grigori Melnik, at that time leading the Patterns and Practices group at Microsoft. He listened patiently to my SpecFlow intro and concluded, “This is great, but you’re on the wrong platform. .NET enterprise developers are not ready for this yet; maybe in 10 years they’ll be ready for this.” At first I thought he just didn’t get it, but then I learned that Grigori had already written a paper on the subject together with Robert C. Martin.

In retrospect, Grigori was right – we had a steadily growing user base for SpecFlow, but it grew very slowly. In most of the cases, these initiatives were driven by local Agile experts who worked closely with their teams in a similar way as we did at TechTalk.

I then met Wolfgang again when his new company, Tricentis, moved into the same office building in Vienna. (Funnily enough, Tricentis also moved into the same Budapest offices where a large part of the SpecFlow team is based). Tricentis and TechTalk’s clients still had a large overlap, but while I was having a hard time explaining how Agile software delivery helps reduce risks and increase competitiveness, Wolfgang knew exactly how to pitch Tosca to the same target group. Tosca facilitated testing on huge core legacy systems, and I was impressed by Wolfgang’s technical expertise and ability to connect with senior management. It was clear to me that Tricentis was onto something.

By 2017, Agile was officially booming and had arrived in the enterprise space. SpecFlow had grown to a respectable user base, and we were starting to see more and more large organizations adopting it. In 2018, I heard from Wolfgang again. To my surprise, Wolfgang didn’t know that SpecFlow was our baby. In fact, he had first heard of it from a client on the other side of the world (Australia!). But once he learned that TechTalk had created SpecFlow, we started brainstorming ways to grow in the enterprise market. Knowing Wolfgang’s sense for trends in enterprise software development, I concluded that SpecFlow needed a strategic partner to support the next steps towards broader adoption. The time had come to sell SpecFlow and to partner up with Tricentis moving forwards.

One of my first tasks after the acquisition was to present SpecFlow at Tricentis’ executive staff meeting. One of the attendees was their newly hired Chief Product Officer: Grigori Melnik! He had predicted that SpecFlow was ten years ahead of its time back in 2010, and here he was ten years later, joining our venture. Once again, this confirmed to me that SpecFlow has found the right home to grow, and also that SpecFlow’s time had finally come.

Click here to read more about this story from the point of view of Wolfgang Platz, founder and Chief Strategy Office at Tricentis.

Stay tuned for part 3, where Grigori Melnik will share his side of the story.

There are situations in life where good things are closer to you than you would think – and never has that been more true than in the case of how SpecFlow found a new home.

Wolfgang Platz, founder and Chief Strategy Officer of Tricentis tells the story of how SpecFlow became the latest addition to the Tricentis family.

Post by Wolfgang Platz, founder and CSO of Tricentis

The first time I learned of SpecFlow was back in 2013 when a well-known Australian bank decided to invest in Behavior Driven Development (BDD). The bank was looking to combine SpecFlow with Selenium to automate their tests. This wasn’t the first time I had heard of Specification by Example and BDD, but I was unaware that there was an open source BDD project for .NET.

A few months later, SpecFlow came onto our radar a second time when a large US insurance firm was again looking to automate tests with Selenium. So we decided to follow these implementations closely, discovering that the idea behind BDD was well-received by users – mainly developers and testers using it extensively to write scenarios – but noticed that there were teething problems relating to the automation with Selenium. The takeaway for us was that SpecFlow works, and the idea is sound. But driving script-based automation, which is at the heart of Selenium, was not as easy as it could and should be.

Fast forward to 2018, when we decided to look into BDD again. We recognized that BDD was undeniably an up-and-coming methodology. The momentum behind Agile Development and DevOps was driving the adoption of Cucumber and its .NET variant SpecFlow. I took the opportunity to get in touch with the creators, with SpecFlow being of particular interest. SpecFlow’s focus on .NET meant that it was widely used in the customer enterprise landscape.

This was when I stumbled upon the first strange coincidence: SpecFlow originated in Vienna – not normally the first place that comes to mind as a hotbed of innovation in IT – and also the location of Tricentis’ European headquarters. And not only was the SpecFlow team based in Vienna, they were actually located in the same office tower as Tricentis! Furthermore, I already knew Christian Hassa – a true celebrity in the Agile and DevOps space – but was not aware that he was also behind SpecFlow. Chris, you are too humble!

SpecFlow originated in Vienna – not normally the first place that comes to mind as a hotbed of innovation in IT – and also the location of Tricentis’ European headquarters.

Over the following months, Chris and I started to discuss the ideas behind BDD in more detail, as well as discussing the future. We realized that connecting SpecFlow with the superior automation capabilities in Tricentis Tosca has the potential to be a real gamechanger. And as our thoughts got more and more concrete, we reached the point where we discussed bringing the two solutions together.

During our discussions I also learned that the SpecFlow team were facing another issue. Over time, the user base had expanded, and more and more corporations were adopting SpecFlow to automate their tests. This brought a new set of challenges for SpecFlow+ with it, in particular regarding licensing for larger numbers of enterprise users. Once again, this was an area where Tricentis was already established and seemed a good fit.

Since 2009, SpecFlow has gathered a massive open source community, with more than 9.6 million downloads and a user base that continues to grow at more than 3,000 downloads per day.

via Tricentis Press Release

But the happy coincidences were not over yet. It turned out that the SpecStar team (the team behind SpecFlow and SpecMap) also had members in Budapest. Tricentis also has a presence in Budapest, and, believe it or not, it turned out that both teams were again located in the same building! I don’t really believe in fate, but this really got me thinking, and it definitely seemed like a good omen.

And so it was that in January of this year, SpecFlow became part of the Tricentis family, something we are very proud of. For Tricentis, acquiring the leading BDD solution for .NET extends our range of community products, while for SpecFlow the change means new opportunities and tackles some of the more pressing issues facing the team. Given the physical proximity of Tricentis and the SpecFlow team (who are still based in the same offices as before), we expect the integration to happen quickly and to go smoothly. All the teams involved are excited about what the future will bring, as are Chris and I. We look forward to ushering in a new era for SpecFlow, and will keep you posted as we move forward together.

Click here for part 2 with Christian Hassa, originator of the SpecFlow project

We are excited to announce that SpecFlow has been acquired by Tricentis.

When TechTalk first introduced SpecFlow back in 2009, our goal was to help both small and large teams improve collaboration, facilitate test automation and build up a shared understanding of their software systems.

Since 2009, SpecFlow has been downloaded nearly 10 million times and today is the go-to solution for .NET developers looking to implement Behavior-Driven Development.

Now we are excited to announce that SpecFlow and SpecMap have been acquired by Tricentis, the leading international software vendor for software testing.

“I’m extremely proud of the community that SpecFlow has fostered over the years”, says Christian Hassa, owner and Managing Partner at TechTalk. “TechTalk is happy to have found a partner in Tricentis who is committed to the BDD community and to significantly expanding our vision for SpecFlow while keeping it independent.”

Why now?

Behavior-Driven development (BDD) is growing more popular than ever – the adoption of DevOps as part of companies’ digital transformation is driving the need for fast and reliable testing and test automation earlier in the development cycle. Agile practices enable teams to deliver valuable software to end users in shorter cycles, while the established practice of formulating tests using Given-When-Then scenarios helps stakeholders build up a shared understanding.

However scalability is a widely known challenge with BDD. This is an area where Tricentis greatly benefits the SpecFlow team and BDD community with its rich experience in providing software testing solutions for both small and large teams. For Tricentis, SpecFlow offers a unique opportunity to accelerate and shape the adoption of BDD within the enterprise market, while keeping its ear to the ground and drawing upon SpecFlow’s ties with established players in the BDD community.

What does this mean for the community?

SpecFlow will remain an open source project that is free to use by the community. Partnering with Tricentis enables us to operate a dedicated team to further drive innovation, maintain the project and quickly integrate pull requests from the community.  You will see more good things faster!

We are thrilled to announce that partnering with Tricentis will also allow us to offer SpecFlow+ and SpecMap licenses to all members of the BDD community free of charge – starting now!

“Our recent acquisition of TestProject clearly demonstrates the reach of the open source community and success that can be achieved by providing the right solution without commercial barriers. With SpecFlow and SpecMap we are significantly increasing out commitment to the Agile community”, says Wolfgang Platz, founder and Chief Strategy Officer at Tricentis.

You can request your free license key here:

What does this mean for current SpecFlow+ customers?

Starting from today, SpecFlow+ licenses are available free of charge for any number of users. As an existing customer you can continue to use your current licenses. More details will be announced soon.

If you have any further questions, you can contact us by sending a mail to support [at] specflow.org.

We look forward to partnering with Tricentis and helping more teams from around the world collaborate!

To make it easier to create new SpecFlow projects, we have created a project template that you can access with dotnet new. As with all templates, you need to install them first before you can use the templates. More information on installing templates can be found here.

Note: You need the .NET Core SDK installed to use templates.

To install the template, execute the following command from the command line of your choice:

dotnet new -i SpecFlow.Templates.DotNet

Once the installation is complete, you can create new project with the following command:

dotnet new specflowproject

This creates a .NET Core 3 project with the same name as the current folder. SpecFlow+Runner is configued as default test runner. You can define a different test runner or target framework using the following optional parameters.

  • framework: the following values are supported:
    • netcoreapp3.0 (default): .NET Core 3
    • netcoreapp2.2 : .NET Core 2.2
    • net472: .NET 4.7.2
  • unittestprovider: can be one of the following:
    • specflowplusrunner (default): SpecFlow+ Runner
    • xunit: XUnit
    • nunit: NUnit
    • mstest: MSTest

Example:

dotnet new specflowproject --unittestprovider xunit --framework netcoreapp2.2

This creates a new project with XUnit as the unit test provider, and targetting .NET Core 2.2. The project is created with a pre-defined structure that follows best practices. The project includes a single feature file (in the Features folder) and its associated steps (in the Steps folder).

Item templates

In addition to the project template, we added also some item templates to the template pack, which includes the following:

  • specflow-feature: .feature file in English
  • specflow-json: specflow.json configuration file
  • specflow-plus-profile: Default.srProfile (SpecFlow+Runner configuration)

If you have additional ideas for the templates, please open a GitHub issue here.

Big thanks go out to our intern Manuel for creating these templates!

Over the past months, many users asked us about SpecFlow merchandising. In particular, we have had requests for stickers for conferences/meet-ups. We have therefore decided to make 2 packages available to the SpecFlow community, one for conferences/meet-ups, and one for contributors to the open source project.

For Conferences, Training, and Meet-ups

SpecFlow has many enthusiastic users from all over the world who regularly get together to share experiences. If you are organizing an event related to SpecFlow or BDD/ATDD/SbE, we can send you a conference package consisting of SpecFlow swag in the shape of various stickers and SpecFlow flyers.

For Contributors

Have you contributed to the SpecFlow open source project and want to show your commitment to the project? As a thank you for contributing, we can send you some SpecFlow stickers so you can help spread the word – and maybe even encourage others to contribute.

We hope that you have had a productive year! Given the way the holidays fall this year, we will only be able to provide limited support from 20 December 2018 until the the second week of January. The whole SpecFlow team at TechTalk will be away from 24 December 2018 until 7 January 2019.  Support will return to full capacity on 10 January 2019.

If you are unlucky to have to be work during this period, we thank you for your understanding. Remember that you can always turn to the Google group for help from other members of the community.

Happy Holidays!

We are pleased to announce that Xray, a test management solution for JIRA, now supports SpecFlow+ Runner. Many software development teams work with JIRA, but integrating SpecFlow with JIRA can be challenging. Xray helps out by allowing you to manage tests in JIRA, generate the corresponding feature files, and import your test results so they are visible in JIRA itself.

When using Xray, you can choose to edit and manage your scenarios in Jira, or continue working with feature files within your source repository. Both these methods are described here.

If you choose to manage features in JIRA, you can generate the necessary .feature files using the Export to Cucumber option in the user interface:

 

If you choose to manage your features files as part of your repository, there are a few steps you should take, including tagging tests with an ID to ensure they are always mapped to the same test in Xray. These steps are covered towards the end of the page.

In order to generate test results that can be viewed in JIRA, you will need to output your test results as a JSON report using SpecFlow+ Runnner. A suitable template is included with SpecFlow+ Runner (located under Templates in your project’s SpecRun.Runner packages folder). This report can then be imported into JIRA to view the tests’ status there.

If you are interested in finding out more about Xray, there is a short video overview available here. You can find more detailed information, including pricing, on the Atlassian marketplace. There are also regular webinars that walk you through the Xray’s features.

Gaspar Nagy – who has been involved with SpecFlow since its inception – and Seb Rose – a core member of the open source Cucumber project – have teamed up to publish Discovery – Explore behavior using examples. This is the first book in a series on BDD. Gaspar had the following to say about the motivation behind writing the book, and the type of content you can expect.

 

When it comes to BDD, there are generally 3 types of people:

  1. Those who do not know what BDD stands for at all (how sad!)
  2. Those who know BDD, and claim to implement it with their team, but where it turns out that their focus is only on the tools
  3. Those for whom BDD is a holistic approach

The initial idea was for a SpecFlow book that would essentially be a port of the “Cucumber for Java” book: a collection of technical tips etc. In other words, yet another technical book. While working on the core, it quickly became apparent that a SpecFlow book would never be complete without mentioning the collaborative aspects of BDD. So we ended up diving deeper into the BDD realm. At some point we made a decision: let this book be about BDD, instead of SpecFlow. In fact, let there be a BDD book series!

Why? Because in our opinion the BDD process can be divided into 3 stages:

  1. Discovery: explore and discover details through examples
  2. Formulation: convert examples to scenarios
  3. Automation: write test automation code

My painful experience is that the earlier a team adopts BDD, the better results they get. So why not give teams a helping hand (or even a compass) right at the start, in the discovery phase? We decided that this would be the essence of the first book in the series.

It took several months of intensive work with Seb to complete the 5 chapters of Discovery. At about 100 pages, it is relatively short, and said to be an easy read, so you could read it on a plane. The book is written for everyone: developers and testers, as well as product owners and test managers. Discovery – Explore behavior using examples is also tool-agnostic: the emphasis is not on the technical process but on the collaborative aspect. The book covers the following:

Chapter 1 provides an introduction to the nature of BDD, where the important elements are explained.

Chapter 2 is an important chapter about structured conversation, providing hints on how testers and business stakeholders can be better involved in meetings, and how a shared understanding of the requirements can be achieved. A number of techniques, in particular Example Mapping (introduced by Matt Wynne), are described here through imaginative use cases.

Chapter 3 is about examples, and how there are more than just Given/When/Then test cases.

Chapter 4 covers tips on how a BDD approach can fit your project, regardless of whether you use Scrum, Kanban or any other framework.

Chapter 5 is all about how to sell BDD to business stakeholders, and make them interested in BDD. It includes tips on how to demonstrate that BDD is more than a mere technique applicable only to the tasks of developers and testers. Illustrative examples ensure that business stakeholders can relate to the advantages and share a common understanding as to why BDD is good for the entire team, saving time and effort on bug hunting. In order to reap the biggest benefits of BDD, the business side should be involved in the entire process from the start to finish.

Get your copy and let the discovery begin! You can find it on Amazon/Leanpub through http://bddbooks.com!

 

The stable SpecFlow V3 has been released! Check out our latest blog post!

Please also read this announcement on upcoming breaking changes for all users.

We have been working on adding .NET Core support to SpecFlow. You can follow the current status here. If you are interested in using SpecFlow together with .NET Core, we would appreciate your input, feedback and even code contributions.

Our current estimates mean that we hope to be able to release a version of SpecFlow with support for .NET Core by Q3 of this year. The more testers and contributors we have, the quicker the process should be.

If you are interested in helping out, please visit the .NET Core Support sub-project on GitHub. Tasks tagged with “request-for-comment” are task where we are especially keen on getting feedback from the community. We would of course appreciate relevant feedback on the other tasks as well.

 

If you would like to contribute, please contact @SabotageAndi on GitHub first to prevent multiple contributors working on the same task. Not all issues on GitHub are worked out in full detail. In particular, issues with the “Request-for-comment” label or “[RFC]” in the title are not finalised. These tasks still require more discussion and evaluation. If you are able to contribute to the discussion, please do!

 

Microsoft is introducing package identity verification for packages on nuget.org. This will allow developers to reserve particular ID prefixes used to identify. This in turn should help users identify which packages have been submitted by the owner of the ID prefix.

We have submitted a request to reserve the “SpecFlow” NuGet package prefix, which is used to identify official SpecFlow and SpecFlow+ packages. This will mean that new packages with the SpecFlow prefix can only be submitted by TechTalk, and will indicate that these packages are official.

We have also requested the SpecFlow.Contrib prefix be made publicly accessible for developers who want to release their own packages for SpecFlow. If you want to submit your own package for SpecFlow whose name begins with “SpecFlow”, you can use this prefix. This will indicate to users that the package is intended for use with SpecFlow, but is a third-party contribution.

These changes will not affect existing packages using the SpecFlow prefix that have already been submitted to nuget.org. If you are the owner of such a package, you should be able to update the package as usual. You may however want to change the name of your package to reflect the new convention.

 

In summary, here are the prefixes we have requested:

  • SpecFlow.*
  • SpecRun.*

 

You can find out more about the idea behind package IDs on the nuget.org blog.