Thomas Sundberg is an independent consultant based in Stockholm, Sweden. He has a Masters degree in Computer Science from the Royal Institute of Technology, KTH, in Stockholm. Thomas has been working as a developer for more than 20 years. He has taught programming at The Royal Institute of Technology, KTH, one the leading technical universities in Sweden. Thomas has developed an obsession for technical excellence. This translates to Software Craftsmanship, Clean Code and Test Automation.
Thomas is a frequent speaker at different conferences and developer venues.
Thomas runs a blog where he writes about programming, Software craftsmanship and whatever problem he wants to share a solution about. It can be found at http://thomassundberg.wordpress.com/
Cucumber has been around a long time in the Ruby world. It is a popular tool that allows development teams to describe how software should behave in plain text. The text is written in a business-readable domain-specific language and serves as documentation, automated test and development-aid - all rolled into one format. Cucumber-JVM has been available to the Java community a few years.
I will present BDD and discuss why you should use it, when you should use it and when you shouldn't use it.
After the why and when, it is time for the how. I will develop an example where we can see how a model will grow from the desired external behaviour. The developed model doesn't yet have a GUI. I will extend the example with a GUI without changing the wanted behaviour and test it using WebDriver.
Feature: Create plain text requirements that are executable
In order to create a common understanding of our system
As a developer, tester or business analyst
I want to to create examples that can be executed
Scenario: A system need to be developed to show BDD
Given a requirement
When we develop a model
Then we have a working system
Scenario: Add GUI to the system developed
Given a model
When we add a user interface
Then we will not need to change the specifications
I will finally show you how this can be fitted into your continuous integration/delivery system and thus be a crucial part of your automated acceptance test suite.
Developers are the translators between ideas and code. They translate ideas about functionality to code so the end users can benefit from a usable program. This translation has to be done in a careful and responsible way. It should be done by a responsible developer.
What is a responsible developer then?
It is a developer that writes clean, testable and maintainable code. A developer who can explain and describe his work. Someone that knows that he grows by helping his fellow developers and never settles for second best.
I will discuss the properties of a responsible developer and suggest ways you can improve to become a responsible developer.