Fri 24 Aug 2007
As months go, this has been a tough one.
As weeks go, this has been a good one.
I have, for quite some time now, been involved with a very large client who is creating a massive SOA system. Concurrently, the organization is moving from being very decentralized, to being much more centralized. The two are not unrelated – this kind of project requires massive amounts of coordination that the organization previously did not support. Growing pains abound.
In an odd quirk of luck, I am on the performance test team here, although it is safe to say I do a LOT of cross functional work, especially in the area of automation. For months now, the test team has labored to test a particular application in this system. While in some circumstances, this application may perform well, in the broader context of the entire SOA system it really has to work in, it is a hurtin puppy. In almost 10 years of consulting, testing, and automating, this is the most challenging, frustrating, irritating circumstance I have ever found myself in. At conferences, over dinner, on phone calls, and via Skype, I have spoken at length with colleagues about the problems, challenges, personal issues, and frustrations. My thanx to all of them for helping me keep my head screwed on straight, and especially to Michael Bolton, who literally spent over 12 hours on Skype with me on one of my absolute worst days, convincing me not to throw in the towel and walk away. Were it not for them, I may not be writing this…
Three days ago was a watershed day. After weeks of chasing down a particular defect that the performance automation team considered a showstopper for further automation, repeating results, gathering data, refining our understanding, analyzing myriad charts and graphs to help the dev team understand root cause, the dev team finally pronounced that their app was fine, and our scripts were breaking it. (Much of this blog will read like a classic tale of every testing parable we all know…except this really just happened to me) So, stepping up to that challenge, three days ago we turned off all of our automation tools, took the entire test team for one day (all 10 of us) and began manually pushing the application into a corner. With 10 people in a couple of hours, we logged hundreds of errors…not hundreds of defects, mind you, many of the errors were the same defect over and over, but that was exactly our point as performance testers…it keeps breaking the same way over and over under incredibly light load. Complete vindication. Absolutely every single bad behavior we had documented in our automated tests came to the fore under this manual assault. And with that, we were suddenly on the map. Now not only did our bosses boss know what we were finding, but his bosses bosses boss did as well. We were suddenly center stage in the spotlight…in a metal chair…at a barren table…in a room with no windows…you get the picture.
The dev team, not to be taken that easily, immediately proclaimed it was our test environment that was to blame. (Never mind that we had spent millions building a test environment that much more closely matched the target real world deployment than what they were developing in). So two days ago, we switched off of the performance test environment onto the functional test environment, and did the same thing all over. Same results.
The dev teams next response was that our testing methodology was flawed, and we were purposely setting the application up for failure. They informed us that they were going to do their own version of our manual assault, in their environment, using their test methodology, to prove that we were purposely breaking their baby to make them look bad. This announcement was immediately followed by a request from our bosses bosses bosses boss, politely asking if we would be so kind as to monitor the developers testing process. Ouch. So yesterday the dev team spent several hours proving that in any environment, no matter how delicately you touch it, it simply falls over and cries.
By now, you have probably inferred (correctly) that the relationship between dev and test is strained. That is a whole different article, but yes, it is. But even given that, this is a MASSIVE success for the testing team. I am a firm believer that the role of the test team is to provide valuable information to management to allow them to make informed decisions about releasing software. Until three days ago, I felt like this train was running to the station, no matter what we said. Now, we have incredible visibility, management is listening, and I am fairly certain that this application will undergo extensive adjusting before it sees the light of day. It is a brave new world. Next week, the offsite contract developers have been invited in to help us “understand” this behavior that now cannot be ignored any longer. It is not an invitation they can decline. This test team has turned a juggernaut running at full throttle 90 degrees off course…an absolute miracle in my experience…and ultimately, a very satisfying experience. This application ultimately will have a very direct impact on the quality of life of a large group of people, people I actually care about personally. It really needs to be good. And I finally feel like I may have made a difference.
In our industry, on the blogs, in the newsgroups, at the conferences, in conversations, we constantly decry how bad things are, how much we are ignored, how futile our efforts often seem. I am very happy to present what I believe, at least for now, is a true success story. I would like to see more of these. I think it would help raise the spirits of some of us, and under the heading of “You catch more flies with honey” may actually help improve our professional lot in life. So if you have your own success story, I invite you to post it here as a comment to this blog. Large or small, anything that says “Hey, testing made a positive difference here”, bring it on.
And now, I am going to go bask in the newfound glory of my fame…because I know by Monday it will all be gone again.
Happy testing.