Today in the “What you always wanted to know about Testing and Quality Assurance” I will answer questions from the outsourcing category. Since this is a hot topic for me, I hope not to rant too much at it, but let’s see.Continue reading What you always wanted to know about Testing and Quality Assurance – Outsourcing
Continuing the What you always wanted to know about Testing and Quality Assurance series, we will take a closer on Agile Test Management today. Please note that I consider the term Agile Test Management to be an oxymoron. The team is self-managing in Agile, and there is no dedicated manager role to grant the team enough power to manage itself. This surely needs lots of trust – especially when transitioning from a more traditional environment. but is essential to any team effort.Continue reading What you always wanted to know about Testing and Quality Assurance – Agile Test Management
Last week I attended the CONQUEST 2010 conference. As I was invited to be part of an experts panel, I answered some questions from the conference attendees about testing, quality, and how all of this works. In particular I was invited as an expert on Agile testing. The session was voice recorded, in order for the transcript to be provided online in a few weeks. Since it will be on German and we had to restrict our answers to two minutes, I asked the organizers, Karin Vosseberg and Andreas Spillner, whether I may translate the questions to English and publish them on my blog, and got the permission to do so. So, this is the first set of questions (from the CONQUEST 2010 attendees) and answers (from myself). The first set of questions is filed under the topic “Testing as a profession”.
While visiting the CONQUEST 2010 in Dresden, Germany, I noticed something while wandering the large pavements in this city. Each time I had to cross the streets at traffic lights, I noticed that I had to stop, press the button for the lights to turn green – after some time. This morning on my way from the hotel to the conference place, it struck me, that this steadily slowed down my own progress. Each time I had to stop at the traffic lights, I was considering what needed to be improved in order for me to make more progress on my way to the conference building.
That was when I realized that the buttons on the traffic lights needed to be pressed each time. If I didn’t press it, the lights for the walkers wouldn’t turn green. This is a clear difference to some of the lights I know from home in Bielefeld (which does exist, just saying). There were pseudo-buttons which you could press or not press, but the lights still turning green. The difference to Dresden now is, that as I was approaching another traffic light, I needed to stop, press the button and wait for the lights to switch, if there wasn’t already someone waiting for it – which turned out to be rarely the case; thus the waiting.
Then I realized, that the button in fact is a similar to a quality gate in more traditional processes. At each gate you have to wait, you have to synchronize back with other parts which are then integrated. But in either case, you seem to have to wait. Then I asked, how would a pseudo-button for quality gates look like? Well, that’s easy, if you do small steps, tiny improvements, and integrate early, often, or even continuously, then you have a pseudo-button. In fact this is the case on Agile projects. You get the feedback from the unit tests during test-driven design. You get the feedback from the story-tests before checking in your changes to the code base. You then get the feedback from the CI-server which runs the tests. On another step you get the feedback from Product Owner and stakeholders during the iteration demonstration or sprint review meeting.
Now, all these feedback loops exist as an automated quality gate. You get the feedback, that you broke something, and you immediately know on what you have focus your immediate attention. On the other hand, when you don’t get any feedback, you also know that everything might be fine, and can continue your work. (This should be the case most of the time.) Quality Gates are automated to large extends in Agile development for good.
Personally, I arrived at my new company, and already got some new duties to fulfill. One of them was to get a GWT application under test. Since I made great experiences with Robot Framework and its Selenium Library while automating ParkCalc a while back, I decided to try it out for the application.
Besides all of the awkwardness coming form not generated ids on the xhtml of the web-pages, I finally got a first spike solution to run. After some more refactoring steps, I decided to provide some automation of the tests, so that my colleagues are able to work with it as well. Since the application is developed with eclipse in Java, I wanted to use a similar infrastructure to get the tests automated. Thereby, I decided to try out the packaged jar file of Robot Framework 2.5.x. This went amazingly smooth. Since I had to integrate the Selenium Library with the jar file, I was wondering, if this will be reusable, and what I need to do for it. The UserGuide describes, that I should repackage the jar, but this step I wanted to explicitly avoid.
Instead, I took a closer look. In order to try out the simplest thing that could possibly work, I created a lib directory in the eclipse that I had created, and added the jar file to that lib directory. Inside the lib directory I created a Lib directory (with upper case L), where I copied the SeleniumLibrary directory from my local installation, containing the python files necessary for the integration as well as the Selenium Server library in it’s own lib directory.
I was amazed that this was all I needed to do in order to integrate the Robot Framework jar file (which encapsulated jython) with the Selenium Library. I even tried to rename the installed Selenium Library just to be sure, that this was indeed all I needed to do, and was amazed when I found out that the packaged jython already created .class files for the Selenium Library python classes.
All I then needed to do, was to create an ant build script, which simply invokes the jarfile, and now I can call this from the build server of our continuous integration system. Wonderful, isn’t it?
Some while ago, J.B. Rainsberger posted a case for slack, and that you might be sabotaging your peoples training. I think it was Kent Beck who pointed me to the self-similarity of nature in eXtreme programming explained. In this post I’m going to take a closer look on how we learn, and how nature is self-similar in this regard, and what we may derive from this.