Review: TestCon 2016 – speaking abroad for the first time

Last week I experienced another ‘first’ in my career as a consultant: my first speaking gig abroad. The event: TestCon 2016. Location: Vilnius, Lithuania. Another first there: I’d never been to Lithuania before! I wasn’t sure what to expect, but hey, the best things in life happen when you least expect them, so I was happy to jump to the opportunity when my friends at Parasoft called me to ask me if I could act as a stand-in for one of their guys who couldn’t make it to the conference.

The conference
TestCon 2016 was the first edition of this conference, but you wouldn’t be able to tell this if you hadn’t known that before. The event was very well organized, with a good venue (the University of Applied Sciences) and excellent speaker treatment. A separate room for speakers to prepare for their presentation and to wind down afterwards was a first for me, although granted, I am nowhere near an experienced public speaker yet… And don’t forget full travel and lodging expenses were covered upfront, something that a lot of conferences could learn from. Another remarkable feat is that the organization managed to attract around 600 (yes, six hundred) attendees to this first edition. For a relatively small country with no established testing community, that is absolutely amazing. I think a lot of other conference organizers would consider themselves extremely lucky to get such a turnout. The only thing that could use some improvement next year is the number of local speakers. Of the 25 speakers, only 3 or 4 were from Lithuania. In comparison, there were 6 from the Netherlands.. I talked to one of the organizers afterwards and we agreed that hopefully this first event, which was a major success, leads to more local speakers next year.

My talk
The talk that was originally proposed by Parasoft was called ‘Deploy and Destroy Complete Test Environments: Service Virtualization, Containers and Cloud’. As this is an area that interests me as well, and in which I have experience as well as have done some writing and speaking work before, I decided to keep it and construct a story based on my own experience around it. For those of you that are interested in what I talked about, you can see the slides here:

I think my talk went pretty well, although there wasn’t too much feedback or reaction from the audience. Later I heard that more speakers experienced this (but some didn’t), so it might not just have been me, at least I hope not. It confirmed my preference for delivering workshops rather than talks though, since you let a lot more interaction and feedback from workshops due to the smaller groups and the hands-on work rather than just me broadcasting information (or sound, at least). Still, I got some questions and had a couple of good discussions afterwards, so the overall feeling I have looking back on my talk is a positive one.

Looking back
As I said, this has been my first experience as a speaker abroad, but as far as I’m concerned it will not have been my last one. Travelling, speaking and meeting interesting and fun people has been a very rewarding experience, although an exhausting one as well. The conference itself couldn’t have been organized any better (except for a couple of minor details, maybe). Also, the organization and all volunteers I have had the pleasure of meeting couldn’t have been nicer and more welcoming, and Vilnius has been an interesting city to spend a couple of days in. I’m already looking forward to the next trip, even though it hasn’t been planned yet. I’ll try and make it a workshop gig as that’s where my interests and strengths are, I believe, but I won’t say no to delivering another talk, either.

Open sourcing my workshop on WireMock

For those of you that want to jump to the good stuff directly, you can find the workshop slides, exercises and everything related here.

A couple of weeks ago I was given the opportunity to deliver another workshop before TestNet, the Dutch software testing community, as part of their fall conference. Half a year ago, I did a similar workshop for their spring conference. That workshop was on RESTful API testing using REST Assured, which I decided to make open source a little later on. I’ve received some positive feedback on that, so why not do it again?

This time, the conference was centered around test automation. The subject of my workshop this time was closely related to the main theme: stubbing test environment dependencies using WireMock.

The title slide for my workshop

As with most workshops that day, mine was set in a classroom-style space. I had somewhere between 15 and 20 participants, which I think is pretty much the ideal group size for a hands-on workshop that involves writing code. Not so many that I can’t give proper attention to all questions asked, but not a group so small you start to doubt whether the upfront investment has been worth it. As those of you who have prepared and delivered workshops before, you know that preparing them takes a lot of time. Spending all those hours and then only having two people turn up, one of whom is a coworker and the other one seems a little lost, is a bit of a bummer. Fortunately, this wasn’t the case for me, at least not this time..

The levels of experience of the participants (semi-pro tip: know your audience) ranged from people having some prior experience with stub and mock development to people that had never in their life written a single line of code before. An interesting mix, to say the least!

Workshop contents
As said, the main subject of the workshop was WireMock. I started out by telling people a little about the difficulties with regards to keeping test environments up and running and properly configured in these times of parallel development, Continuous Delivery and Testing and distributed applications. I then introduced WireMock, which I’ve done here on this site before as well. Then came four cycles of me presenting a WireMock feature, followed by exercises where the participants could try this feature out for themselves. I chose to highlight the following WireMock features in the workshop:

  • Writing a first, basic stub
  • Request matching options
  • Fault simulation
  • Creating stateful mocks

For each set of exercises, I prepared REST Assured tests that the participants could run to see if their stub implementation was correct. Call it test driven stub development if you like. This approach worked remarkably well, it definitely saved me a lot of time answering questions in the ‘is this correct?’ vein. Test green = stub good, test red = stub needs improvement. It doesn’t get any clearer than that.

Here’s an example of an exercise and the test that determines the correctness of the solution:

public void setupStubExercise101() {

	 * Create a stub that listens at path
	 * /exercise101
	 * and responds to all GET requests with HTTP status code 200

public void testExercise101() {

How it turned out
Fine, I think. Time flew by and I didn’t experience any major faults, missing or incorrect slides or things like that. The experience I’m slowly gathering by doing this more often is starting to pay off, I think. I received almost exclusively positive feedback on the workshop, so I’m a happy guy. Also, everybody seemed to have learned at least something new and enjoyed the process too, no matter whether they had prior stubbing or even programming experience or not, and that has been the most important result of the morning to me. I’m looking forward to the next opportunity for delivering this workshop.

Having said that…
All workshop contents, that’s:

  • The complete set of slides
  • All workshop exercises and their answers
  • Matching REST Assured tests to verify the stubs created

can be found on my GitHub page. As with the previous workshop I’ve published in this manner, feel free to download, adapt, extend and then deliver the workshop to your liking. I look forward to hearing your experiences.

And in case you’re interested in following a WireMock workshop, but do not want to deliver this yourself, don’t hesitate to contact me. I’ll be happy to discuss options. Also, this workshop can easily be combined with a workshop on REST Assured for a full day of API testing and stubbing goodness.

Review: TestWorksConf 2016

Last week I attended the second edition of TestWorksConf, a conference on test automation and lots of other things technical and related to testing. After the first edition last year my expectations were pretty high, since Xebia (the organisers) had set a standard with their first edition that would not be easy to match or exceed.

The first and most important change was that after the one day conference last year, they decided to add an extra academy day the day before the actual conference. I’ve seen this a lot at international conferences (the STAR* conferences from TechWell, for example, have at least one day full of workshops), but to my knowledge this hadn’t really been done before here in the Netherlands, at least not at conferences revolving around testing. Since I made a promise to myself last year to try and be a contributor instead of ‘just’ an attendee, I submitted several proposals in response to the Call for Papers. Initially, only my lightning talk proposal made the cut, but a couple of weeks later I got a call to see if I also wanted to host a workshop. Sure!

An aerial overview of the TestWorksConf 2016 main area

Day 1: Academy Day
As I said before, the first day of TestWorksConf 2016 was dedicated to half-day workshops on a wide range of topics related to testing and test automation. On the agenda were workshops on exploratory testing, mobile test automation, test-driven development and lots of other stuff, including my own workshop on RESTful API testing using REST Assured. Those of you who’ve been reading my blog for some time might have read that I’ve delivered this workshop before, but I took some time to freshen things up, add some new content and exercises and most importantly add WireMock mocks that return the answers for the tests the participants need to write in the workshop. I didn’t want to be caught by surprise by a malfunctioning API under test a second time..

The Xebia guys took the effort (a LOT of effort!) to prepare a virtual image containing all the material for my workshop and the other workshops, so participants didn’t need to configure their own PC or download and install stuff before the workshop kicked off. They did a fantastic job of that, at least in my workshop everybody was able to get it to work and to truly participate. Those of you that have delivered similar workshops before know that this is no small feat!

I also had the luxury of two amazing sidekicks in the form of Erik from Xebia and Adam from Lyft. Where else do you get the opening keynote speaker for the conference day as an assistant in your workshop? Together, we delivered what I thought was a very smooth and very pleasant workshop. As far as I could tell everybody completed at least part of the exercises I prepared. The feedback I’ve received afterwards was pretty positive as well, and I think most people learned at least a little. All in all a great afternoon.

Note that I’ll update the open source REST Assured workshop to reflect the version I delivered at TestWorksConf somewhere in the next couple of weeks, so all of you that want to take a look can do so.

Day 2: Conference Day
The second day of TestWorksConf 2016 was conference day. Similar to last year’s edition, the agenda featured a mix of workshops and presentations. New to the mix were 10-minute lightning talks, one of which was to be delivered by me. After watching Adam deliver the opening keynote of the day, I spent most of the morning talking with the guys from SpectoLabs. This meant I missed some of the workshops and talks, but it was great meeting them in person (we’ve been in touch via email before) and talk service virtualization, Hoverfly and lots of other things.

Talking service virtualization with the guys from SpectoLabs

After lunch, I spent the early afternoon talking to some other old and new acquaintances, something I think conferences are an ideal setting for. This meant I again missed some talks, but I managed to catch (parts of) other talks and heard some interesting stuff. Around mid-afternoon it was time for my own lightning talk. Delivering that I learned something really important: they’re over before you know it. I managed to tell what I wanted to tell without rushing things, but I noticed that it takes me some time to get comfortable talking, especially when I’m speaking in English (both days were all in English because of the high number of visitors from abroad, by the way). I have no problem talking to other people in English, but when delivering a talk it takes me a little bit of time to ‘warm up’, so to speak. And the thing about lightning talks is that they’re short, so there really isn’t too much time to actually warm up. Lesson well learned, time to start working on that!

Having finished my TestWorksConf duties, it was time to relax a little and listen to some of the other lightning talks, chat some more and relax some more. By that time the conference day had come to an end as well, and after a quick drink it was time for me to return home.

Even though last year’s conference set a pretty high standard, the people at Xebia have managed to raise the expectations for next year even higher with what were two days of high quality content, lots of interesting people and conversations and not to forget a great venue and even better catering. I’m really curious to see what they’ll come up with for TestWorksConf 2017..