April 24, 2014
Modern applications are interconnected, depending on public services from one or more external applications. At the same time, applications change often. Their public services are very likely to change also. When this happens, our application has to continue working correctly.
How can we know it does? The answer is by having automated tests for all external services used. How does such a test look? How is it written? What technologies/skills do we need? Who is going to implement it? These are tough questions, but Aimee Rivers has shown us that the answers are easier than they seem in her talk from I T.A.K.E. Unconference 2013.
Who’s going to build the test?
The usual problem when trying to answer this question is that developers don’t like to write tests and testers might not have the necessary technical skills. Still, someone has to be the lucky person to do it and according to Aimee, the DIT (Developer in Test) will be the one.
Now you may wonder what is a DIT? Is it another role in the development team? It turns out that it is not a new role. Before watching Aimee’s video, I have used the name “agile programmer” instead because the DIT is a programmer who likes to:
- do analysis with the business people by having the BDD-like conversations
- write acceptance tests using Gherkin or any other domain specific language
- automate these acceptance tests
- design the solution using unit tests
- develop using unit tests
- write integration tests
- automate regression tests
- do manual exploratory tests when needed
- collaborate with the whole team (business analysts, testers, Ops) for making the work visible, easier and more enjoyable
How does a test look like?
For the following story:
As a visitor to Bucharest
I want a weather report
So that I know what clothes to wear
Aimee presents the automation of a test case using Cucumber, Gherkin and Selenium. You can see the process in the video, but here’s a short description:
- First, she is writing the test case scenario using executable specifications:
<blockquote>Given that weather is raining
When I look at the weather for “Bucharest”
Then I should see the weather is “light intensity shower rain”</blockquote>
- Then, she implements the scenario’s steps definitions using Cucumber.
- She uses Selenium IDE for testing that the correct message has been displayed on the web page.
What skills should a DIT have?
The test automation example from above highlights some of the necessary skills that Aimee and any other developer in test need:
1. Enjoys and knows how to write executable specifications
2. Knows how to translate these executable specifications into code
3. Knows how to use automated tests solutions like Selenium
4. Is familiar with BDD
5. Enjoys collaborating with the whole team including the business analysts
6. Enjoys testing both using and not using code
My favorite quote from the video is that “A developer in test” is like a bass guitarist. Aimee Rivers is a bass guitarist: the developer in the team that “encourages, motivates her colleagues and keeps people together.” She even encourages developers to write tests themselves. She makes work fun. I want to enjoy work as much as she does, so I intend to follow her advice.
Aimee takes pride in connecting the programmers with the testers. Even though she does not want to show it, she is an exceptional representative of the Software Craftsmanship movement.
The Software Craftsmanship movement will be highly represented at I TAKE Unconference where we come together as an European development community to learn techniques to work better while better enjoying the work. You will learn, share, understand more about software development. Prepare for special moments that only programmers can appreciate (don’t tell anyone, but we’re planning a “language beauty contest”). Get your ticket now and join the 100 European software craftsmen who registered until today!