It’s that time of year again for me – conferences. I love this time of year, because I think conferences can be very valuable. The tough part is deciding which ones to go to, since I can only take so much time away from my real work to indulge in my ongoing professional development. But this year, that decision is a little easier.

I have always been a fan of CAST. It is a great conference, with a unique format that fits my personality very well. But this year, the list of speakers and presenters is absolutely next to none.

To start with, the Keynote speakers are all legends in their own rights, including Brian Fisher, Robert Sabourin, and Cem Kaner. But for me, the opening keynote speaker is the real draw…Jerry Weinberg. Jerry is a legend, a consultant’s consultant, a prolific author, and mentor to many of us consultant type software testers. For me, the mentoring has all been through reading his books and hearing the stories and legends from my colleagues who have had the pleasure of meeting him. And that is why I am so excited that he will be there…I will finally get to meet the legend.

In addition to Jerry, the other keynote speakers are also legends, and while I have had the pleasure of meeting them previously, I always enjoy hearing them speak, and never fail to learn something new and broaden my thinking when I get the chance to spend time with with.

But wait!!! There’s more!!!

In addition to outstanding keynote speakers, the tutorials and track sessions also read like a who’s who of the current testing profession, including Scott Barber, Julian Harty, Hung Nguyen, Michael Bolton, Jonathan Kohl, Adam White, Doug Hoffman, Adam Goucher, and more. While not all of these folks are legends yet, most of them are well on their way. These are the brightest, sharpest, deepest and most creative minds in software testing today.

If you’re looking for a conference that has substance, where the name of the game is NOT filling up your plastic bag with free give aways and getting your bingo card punched, then you could find no better conference than CAST.

So while I doubt there will be a red carpet, limo’s or paparazzi, I assure you this will be the most star studded CAST you’ve ever seen. We hope to see you there!

David

Share/Save/Bookmark

I recently went to a conference, my favorite, StarEast.  For many reasons, I have been laying low this year, so for the first time in many years, we did not participate in the vendor expo, and I did not submit a presentation.  I was simply an attendee.  However, since we have been so heavily involved for so many years, when I checked in I was pleasantly surprised to receive a small gift for being an alumnus, an insulated coffee mug with this years conference logo on it.

Now, I am a caffeine addict, so I was very happy with this surprise and knew I would make good use of it over the next few days at the conference.  However, I am not part of the coffee generation.  Hot tea is my fix of choice.  So, next morning at breakfast, I dropped two tea bags into my new bright shiny cup, filled it up with almost boiling water, and walked over to my table.  As I sat down, I put the cup on the table next to my plate, and as my hand left the cup…it moved!!  It wobbled away from my hand, and the previously calm surface began to ripple in that telltale fashion that immediately precedes a cups imminent disastrous toppling.

With my brain feverishly trying to calculate the odds of an entire cup of boiling hot water spilling onto what passes for a bistro table in hotel breakfast bar and somehow miraculously not ending up mostly in my lap, I quickly and desperately reached out and grabbed the cup again.  With the disaster averted, I caught my breath, relaxed, and let go of the cup again, careful not to hit it with my hand or anything like that this time around.

It wobbled again.

And so the tester in me took over, and I began to investigate this behavior.  I soon discovered that the bottom of the cup was slightly convex, not so much that it was actually likely to fall over, but enough to make it wobble somewhat.  Enough to be disconcerting.

This made me wonder, Why had I never seen this before?  Why had I never even thought of it?  So I began looking at other cups.  Turns out, there is a fairly standard method of preventing this.  Most cups have a lip on the bottom, a raised edge around the perimeter of the cup that is ground, or shaved, or planed, or in some way mechanically adjusted to make the cup sit flat, in spite of the fact that the cups actual bottom, due to the nature of materials cups are made of (glass, ceramic, wood, plastic) is not flat at all.  But MY cup, apparently, chose to not employ such a design philosophy, instead apparently relying on its ability to actually BE flat on the bottom.

Bad Choice.

So this made me wonder, whose fault is this?  I am fairly certain that the folks at SQE did not say “Oh, yeah, and make sure it wobbles.”  On the other hand, I’ll also bet they did not say “Oh, yeah, and make sure it sits flat.”  They would have had no more reason to say this than they would have had to say “Oh, yeah, and make sure it can actually hold some liquid.”  These things are known, understood, taken for granted…and that is fine.  They should be.

As software testers, we need to understand that that same reality applies in our world as well.  Some things are just understood.  Within any given context there are a collection of well defined implied requirements for an application.  There is no reason to state those requirements explicitly.  To do so only adds clutter.  This is important for testers to understand.  It is this very fact that makes the following statement patently absurd:

“I can’t test your application;  you have not given me all of the requirements.”

Of course they haven’t, and they shouldn’t, and it isn’t likely that they ever will.  And for any tester to make that statement is simply insulting to the rest of us.  There is tons of testing that can be done in the absence of ANY explicitly stated requirements, and certainly in the abscense of the complete set of all explicitly stated requirements.  A requirement only needs stating for testing if it in some way violates an existing implied requirement.

Here is an example:  In any Windows application, there is a button in the upper right hand corner with an “X” on it.  Clicking this button closes the application.  However, in recent years, there is a growing trend to attaching a different behavior to this button, specifically to close the GUI, but leave the application running, and place an icon in the SysTray for user access.  Now, if I am given an application to test, and I find no documentation on what that button should do, am I powerless to test that button?  Of course not…I simply presume it will follow the implied requirement of actually closing the application.  If I test it and it does that, all is well.  If it minimizes the application to the SysTray, then I would ask the developers to state the requirement so that the ambiguity could be resolved.  If it did anything other than those two behaviors, I would call it a defect and move on with my testing.

So as I sit here drinking my morning tea….umm, my FIRST cup of morning tea…out of my new, bright, shiny wobble cup, I am constantly reminded of this fact.  It is somehow comforting.

Hey, you don’t suppose the folks at SQE planned it that way all along, do ya?

Share/Save/Bookmark

I have taken a long break from blogging, and that ends now.

And as is common, the catalyst for my newfound energy and enthusiasm is a conference — StarEast, to be specific.

I have taken a year out of being visible to try and repair some things in house.  Version 5 of TestExplorer is in Beta, and will hopefully be released by the end of June.  It will be Vista compatible…no, it will be a Vista compliant and friendly application…as well as having many new features.  We are standing up a new website, www.testexplorer.com, to seperate the marketing efforts for the product side our business from the consultancy side.  There will be a few new products coming soon also.  All very exciting.  All very timestaking.  So I have been silent.

But now it is time to refind my voice…to get back in touch with the real world out there…to interact with people who share the same daily frustrations and victories that I do.

When I walked into the Rosen last week, it was with much trepidation…I had been largely silent and inactive for almost a year.  How quickly do you get forgotten in this industry?  How much forgiveness is there for getting swept up in your own thing, and not contributing to the community?  Questions that were quickly answered…within 15 minutes of walking in the door, half a dozen different folks had waved me over to say hello, have a drink, sit and talk and catch up.  Within two hours, I stopped talking and just looked around for a moment to soak it in…I was sitting around with Jon Bach, Michael Bolton, Rob Sabourin, Antony Marcano, Ben Simo, Elisabeth Hendrickson, Richard Bender … we were all sitting and talking and joking and having a great time.  It was exactly what I needed.

I did not have a booth in the expo, nor did I present this year…first time in 4 years for both…but I simply needed to soak up the karma, and settle down, before this last big push to release.  And it was great.  I made some new friends, caught up with old ones, and have a wealth of new ideas.  Here are some things you will see me blog about in the near future..

  • Cups should sit flat
  • The strength of community
  • The growth of community
  • Quality is a relationship
  • A witch is not a duck
  • Why do we call Testing QA?
  • What do you take away from a conference?
  • Have Fun!!
  • Recording and Reporting in storytelling
  • Side Door Testing

And finally, something for this blog;  the importance of teamwork.  While we often discuss and debate the pros and cons of pair testing and pair development, anyone who was with us Thursday night in the bar got to see Rob Sabourin and Antony Marcano put on a tutorial in teamwork that was just astounding.  In minutes, the two of them, working together, accomplished a feat that most of us individually would have dismissed as unattainable — and not only that, but they had great fun with it, and entertained everyone else who was watching.  Bravo, gentlemen!!  A great example of testing at it’s best, truly.

It is good to be back.  And as part of our ongoing evolution, you will now notice the built in ability to share our blog posts in many ways.  I encourage you to do just that, if you enjoy what you find here.  I also encourage you to join and contribute, and help me build a community of like minded testers.  All feedback is good feedback…but what else would a sirius tester say?

David

Share/Save/Bookmark

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.

Share/Save/Bookmark

Last week, I went to the Better Software Conference in Vegas.  I hate Vegas;  but that’s not what this is about, the title notwithstanding.

As many of my posts keep saying, I love going to conferences.  Conferences are breeding grounds for new ideas and critical conversations with people who are not already infected with the context of your current situation.  (You ever try to talk with someone about how you’re doing things, when they have been right there with you doing it the same way for just as long?  That conversation gets stale soon…)  So it follows, one down side to conferences is that there are so many people to talk to, and so many ideas, that you run out of time before you run out of conversation.

This was the first time I had been to the Better Software Conference;  and it’s content is slightly different than my norm, and it is far from where I live.  Because of that, most of the folks I normally see at conferences would not be there.  But this meant that I would have more time to spend with those who were.  One of those was Michael Bolton.

Now if you don’t know Michael, he is a very interesting person;  smart, very well read, and a deep philosopher of testing.  His insights can be keen, appropriately sharp and sarcastic, and always thought provoking…all good things, IMHO.  

So I went to see Michaels presentation, “First to Market or First to Fail”.  It was really an amazing presentation, covering much more territory than it’s name implies…and it made some wonderfully descriptive corollaries between technology and biology, and why things catch on and thrive (like the flu) and why they eventually don’t anymore (like smallpox).

Near the end of the presentation, we did an exercise where we considered a new and emerging technology, and made lists of how we think it might affect and change the balance of the status quo in the future.  The technology we all, as a class, chose, was the iPhone.  

As we talked during the afternoon, and over dinner, I related some of my personal biases on this particular issue.  As a father of two young daughters, I have watched amazed as the cell phone has radically changed the entire social landscape of teens in our culture.  While describing this to Michael, I made the comment “It’s absolutely viral!”…which, of course, brought the context of the conversation right back to the comparisons he had made in his presentation.

So for me, for Sirius SQA and TestExplorer, the question becomes “How do we become absolutely viral?”  As bad as it sounds, it is the equivalent of unbridled commercial success.  How do you mutate and adapt until you have become something that no one can do without.  That is the challenge for us.

If you have looked at TestExplorer, if you are a customer, if you just glanced at the website…we would love to hear from you.  Right here…publicly, freely…What caused you to develop an immunity or a resistance to our message and our products or services?  What would entice you and compel you to look again?  What would make it so good that you absolutely could not live without it?  Evolve or die…an age old lesson, and we are feeling rather evolutionary at the moment.

Sadly, Michael left the conference early, so I will have to bug him over the next few months as I go over his material from the conference proceedings and come up with new questions.  But I did find other new ideas to fill my time…that will be another blog for another day, though.

Until then, get your shots updated, and be careful as you approach that next newfangled piece of whiz bang technology…it could be contagious!!

Sincerely,

David

Share/Save/Bookmark

Last week, I was driving around, and my 7 year old daughter was in the back seat with me.  We were chatting as we drove along (her mind tends to wander and bounce around) when she suddenly made some comment about something she had observed.  I was immediately struck with the depth of insight her comment carried with it, and thought to myself, “Oh, I must write a blog about that – that is so relevant to what we do!”

I can’t remember what she said.

So why am I writing the blog anyway?  Because there is still a lot of lessons to be learned here.

First, if you’ll just trust me for a moment in the fact that whatever it was she did say was in fact startlingly profound, is that fact that you never know when these things will happen…when an observation, out of context, will cause an earth moving jolt of realization about how the universe hooked something else together, and suddenly you have a seemingly unrelated insight that is huge.  So since you never know when these things are coming, you have to be on the lookout for them at all times…and that is no small task.

Second, and a corollary to the first, they will often happen at a most inopportune time.  You will think to yourself, “Oh, this is so profound, I will certainly remember it, so there is no reason to stop the very important thing I am doing right now and deal with it.”  I could have jotted down whatever it was my daughter had said…but somehow, continuing to drive the car through downtown traffic seemed more important at the moment.

Third, no matter how good you are, it always helps if someone has your back.  I consider myself a fairly observant guy…I am a software tester, trained to spot all those little idiosyncrasies that the developers miss.  I take pride in being good at what I do, and work diligently to train my mind to pay attention to little details, incongruities, broken assumptions and premises, and all manner of minutiae that drive my friends insane.  And yet, I missed whatever it was she saw.

Fourth, there is no time machine.  It really bothers me at a personal level that my little girl said something that I considered very intelligent and important, and now, I cannot remember what it was.  I would give almost anything to be able to dial the clock back, sit in the seat again, and try to pay enough attention this time to not forget, to somehow find a way to engrave it in my memory so strongly that it could not escape…but that simply will never happen.  It is gone, and gone forever.

Now I rarely use the blog to blatantly hawk our own products, but all of these reasons are exactly why TestExplorer was created in the first place.  Because as software testers, especially as manual, exploratory, sapient testers, we deal with these issues constantly.  In the middle of something that is crucial and has a deadline of last week we will suddenly see something unrelated and think we will get back to it later and when the dust finally settles all we remember is that there was something we wanted to get back to later.  TestExplorer logs these things for us, retains the context, lets us go back in time and review them when it is convenient for us, and with more than enough detail to thoroughly investigate them.  So if, as you read this, little voices in your head were yelling “Yes! Yes!  That is me exactly!”, then I would encourage you to take a look at TestExplorer, and see if you think it can help you in this regard.  And if it can’t, I would encourage you to tell me why, so I can change that.

Beyond that, on the heels of Fathers Day, I would encourage those parents out there to take heart…your not the only one who forgot one of those little gems that pop out every now and then.  Enjoy them in the moment is all I can say.

Share/Save/Bookmark

A few weeks ago, at StarEast, I was talking with Antony Marcano and Rob Sabourin about agile processes, and asked a question that has become a perrennial favorite; Can you be agile if you are not creating and executing loads of automated unit tests?

The reason this has become a favorite question of mine is that it is very germane to us at Sirius SQA. We try to do things in a very agile way (note that I always use the lowercase version of the word), and we have tried on 3 separate occasions to implement a strong automated unit testing program, and failed. While it ultimately does not matter…our processes are what they are, no matter what label you do or do not apply to them…it has long bothered me that we were missing such a large piece of what we aspired to.

Sadly, after a bit of discussion, Antony and Rob both agreed that without the unit tests, it really isn’t agile…whatever it may be. And so we began to talk about why it had failed for us in the past. To put it in a nutshell very tightly, we do a lot of non-OOP coding; we have many libraries that are purely libraries of functions and procedures. This is problematic because most of the prepackaged frameworks for unit testing are very strongly aligned with OOP methodologies, if not downright reliant on them. So as we tried to implement these frameworks, we were continually frustrated by an inability to get to the level of detail we wanted to get to, and produce the results we needed. That, at this point in the conversation, was my perception of why things had gone wrong. Rob Sabourin began to challenge a few of my beliefs, and simply pointed out that while many of the pre-packaged frameworks were heavily OOP aligned, unit testing was nothing new, and that it sounded like we just needed to grow our own framework. With this as a starting point, the conversation meandered through the evening over a few drinks, and in the morning I was once again committed to making this work. And so I began to pick through the still smoldering ashes of my efforts from less than 6 months ago, culling those parts that seemed valuable, and purging those that did not. By the end of the day, I had a reasonable framework and a small hand full of tests.

I showed what I had done to Antony, and he began to offer very specific advice on details of implementation, syntax, how test code should look relative to prod code, features, and, probably most important, the pain and common problems of retrofitting an agile unit test process into an existing code base that was not written to support it. It turns out that much of the pain we had experienced from our first efforts was not so much from a lack of OOP, as it was from a lack of designing and writing code explicitly to be tested by automated unit tests.

By the next day, I had greatly expanded and simplified the test code, and doubled the number of tests. Here is an example of the code for a simple test:

LogIteration(’1: Defect Report is Generated’);
MyReportForm := TfrmReport.Create(NIL);
IO_OpenTest(TestFileName);
MyReportForm.GenReport(Self);
ReportHasLines := (MyReportForm.rvReport.LineCount > 34);
CheckTrue(’A Report Has Content’, ReportHasLines);
FreeAndNil(MyReportForm);
DumpTempDir;

Note the first line; the output for the test is written to an editor for review, and the LogIteration marks the beginning of a different variation of a given test; within a test, there will normally be many of these variations, with different properties being manipulated to various valid and invalid values, to test error trapping and various states of valid execution. This particular test only checks that the report has more lines than the standard header; if it does, then a report with content was generated, which is all this is checking. In addition to CheckTrue, there is also CheckFalse, CheckString, and CheckInteger; Because of the highly visual nature of TestExplorer, we are contemplating a CheckBitmap as well.

At this point, I was fairly certain this could grow wings and fly. However, another challenge for us with unit testing is that through the years, at least 90% of the problems we have had in the real world have been with multithreading and performance constraints. Static unit testing would never find these issues…run one at a time, these routines all worked perfectly, which is why the problems got past us in the first place. So, for the first week after the conference, we tried to expand the idea to a multithreaded consideration, where we could run multiple instances of unit tests simultaneously, to force multi user load conditions. This ultimately turned out to be quite a challenge, since working with the code at the very low (individual function) level we wanted to test meant creating global state variables which were global to the entire test framework, and having multiple instances of the test manipulating those state variables led to chaos. This feature will require more architecture to be viable, and has been postponed for now.

But in truth, it may be that that was yet another false precept. The problems that were created by heavy load were problems; the fact that they only manifested themselves under extreme circumstances that were impossible to reproduce on demand and almost impossible to monitor does not change the basic reality of the fact. And with the framework that we now had in place, we found we could begin to emulate some of those situations, by forcing invalid state conditions and file conditions in process. In some instances, this required refactoring some of the code to be test - aware, and actually interact with the test framework when being tested; but this has become a very powerful tool in the last two weeks.

Our framework as it stands now is bare bones, but very functional, and returning tons of value for the investment so far. We have made adjustments on almost every function we have tested…many in ways so subtle and small that they will never be noticed by an end user at all, but we know that the code is getting cleaner and tighter. In others, we have made startling discoveries of minor logic flaws that have never showed up in production, but only by the grace of God.

As a tester turned developer, this has now become almost addictive. I won’t claim that we write the tests first yet, but it is an iterative concurrent process where we create the base code, then begin to test the outer edges, and refine from there. We are currently creating a new utility for V5, our Vista release, that will export stand alone videos from test sessions with an encapsulated player that will emulate the integrated video replay from TestExplorer; this will be fully unit tested as it is developed. As we refactor for Vista compatibility, we are striving to unit test everything we touch, at least to a happy path level. We hope to hit all public functions heavily, and dive into the lower level stuff as needed. It takes time, but it is a very satisfying experience to finally see our aspirations take flight in this regard.

So, other than bragging, what is the point here? Everyone knows unit testing is good, nothing new there, so what’s the big deal? Well, there is a philosophy that says there is nothing new under the sun, and I think sometimes in IT that is a good thing for us to remember. So even from the very title of this entry, I have not tried to present anything new, but rather have reached back and made allusions to something very old, ancient mythology. Mythology is about life teaching lessons to men, and I seem to be getting a fair amount of that this year…and the biggest lesson I keep getting is, don’t give up. Success can be found in the ashes of failure for those who don’t quit. This week my unit testing is finally working well…and that is good enough for me. I will take solace in that and face tomorrows battles tomorrow.

David

Share/Save/Bookmark

Few things in life are certain, and in software testing, even fewer.  Like our modern political system, the community of software testers is fractured and splintered.  And while we may draw bold lines around big camps such as Context Driven or Factory, Manual or Automated, Exploratory or Scripted, within any of those major camps there is fierce competition.  This can leave us poor individual testers wondering if there is in fact nothing solid for us to hold onto.  But there is… 

Now those who know me know that I am a strong proponent of conferences.  In the first place, they are usually a lot of fun.  But beyond that, they are a unique opportunity to get together with some fabulously interesting poeple and talk about all manner of things.  For this reason, for me, the best part of the conference is normally what happens down in the bar after the days official events are done.  But there is one conference where this is not true. 

 The Conference of the Association for Software Testing is a unique event among conferences.  At most conferences, the rules of etiquette of an elevator apply…you go in, pick your spot, be quiet for the duration of the journey, mutter something polite as you leave, and barely remember anything about the whole experience 5 minutes later.  So what makes CAST different?  In a word…Debate.  You see, before you’re even allowed to take the stage at CAST as a presenter, you have to agree to a few rules, specifically, that as soon as you begin speaking, you are fair game for anyone in the audience.  And the audience members, they are encouraged to challenge you and engage you in professional, respectful, but quite possibly heated and passionate debate.   

So why would any presenter want to subject himself to that? Well, for those of us who would, it is because having your ideas challenged is how you grow intellectually.  Being forced to defend your ideas, your beliefs and precepts, makes you confront them, examine them and quite possibly address their flaws and weaknesses.  This, folks, is what conferences are for…CONFERRING!  For my money, a day in this kind of emotionally charged, intellectually raw petri dish of ideas slugging it out in a Darwinian fight to the finish is far more valuable than a day in a staied, stoic tutorial.  This is where ideas are born, formed, forged and hardened.  There are some other unique things about CAST…it is young, and small, and not as vendor centric as many other conferences.  I also count these as pluses…in an environment like this, if you don’t make some new friends, and actually spend some time getting to know them, it is because you were trying not to. 

Being young and small and not so vendor centric has it’s drawbacks as well though…you’re not as well known, advertising is expensive, good speakers can be hard to entice…and so getting a good crowd to come to such a conference can be a challenge. 

I think Jon Bach, the Conference Chair for this year, has done an awesome job of overcoming those challenges.  In fact, I think if you look at the list of presenters from last years archives and this years schedule, you will be very impressed.  But I saw Jon last week at StarEast, and in one of our conversations I heard him mention that overall attendance was still not at the level he wants to see.  So I am trying to help get the word out.  Because, you see, in addition to whatever else I may be in a professional or business sense, at my heart and soul, I am a tester.  I want to understand things;  I want there to be structure and order;  and yet I have an almost perverse sense of wonder and awe at the way the universe routinely dashes those concepts against the cliffs and boulders of ambiguity and misunderstanding.  And the only reasonable thing I can do in the face of that is to try harder to understand more…to debate, to listen, to speak, to broaden my view of the universe, and hopefully maybe someone else’s as well.  To have…and to keep…an inquisitive mind. 

If this is how you think…if this is how you feel inside…well, then you are likely a good tester.  And that…THAT…is the solid thing for us to hold onto.  That above all else, software testing needs an inquisitive mind, and an inquisitive mind needs to be challenged and fed.  No matter what school you claim, no matter what method you use, no matter whose shirt you wear.  If you agree with this, then CAST has something for you.  And better yet, CAST offers something to you…a chance to be a part of something special at it’s inception;  to contribute in a unique way.  A chance to help it grow out of it’s infancy. If you have read this far, then you are at least cuirous about what kind of conference I could be so passionate about.  And so I would simply invite you to come and see for yourself.  Bring a friend.  Tell others on your team about it…heck, bring your whole team!!  Tell your online friends to drop by the site, blog about it, help get the word out.  It won’t always be this small;  it won’t always be this intimate;  it won’t always be this cheap.   

I was there last year, and I thought it was absolutely amazing.  In the middle of a presentation James Bach was giving on tester certification, someone with a different viewpoint rebutted what James was saying.  What followed was an intellectual exchange that puts any presidential debate you have ever seen to shame.  (By the way, each presentation has a facilitator to help manage the process)  As the ideas ebbed and flowed, it became apparent that this conversation was not going to conclude in its allotted time.  In accordance with their stated process, conference organizers quickly checked in with follow on speakers for that day, and schedules were adjusted and accommodations made so that the debate could continue on, and everyone with an opinion was given ample opportunity to express themselves.   

I will be there again this year, guaranteed. Consider it CAST in stone.

Share/Save/Bookmark

Star light, Star bright
First star I see tonight
I wish I may, I wish I might
Get some decent sleep tonight.

I just got back from STAR East late last night, and I am exhuasted yet energized, much like you might feel after a good hard workout. It was, as always, a wonderful time to reconnect with old friends, meet new friends, eat, drink and be merry.This year, I got to meet Antony Marcano, founder of Testing Reflections. He is an all around great guy, and I came away from our many conversations with a renewed dedication to active blogging again, and a fresh perspective on how my company can better deploy unit testing that has true value for us on our own applications, something that has long been a rough spot for me. I also got to meet Shrini Kulkarni, an active member of the Yahoo Software Testing Group. It was great to be able to put a face to a voice in the blogosphere, and in the few brief conversations we had I got the best new idea from the entire conference from Shrini…there will be more to come on this as I push from idea to implementation, but this is the kind of stuff that makes conferences great.

I got to spend a fair amount of time with Ben Simo, whom I met at STAR West last year; I did not know of Ben before that, but since our meeting I have paid attention, and he is also active in the Yahoo Software Testing Group, and I think he has some great real world testing stories to tell. (Sorry I missed your presentation man…life as a vendor)

Speaking of life as a vendor, a special thanx to Scott Barber for helping me in the expo booth…I could not have done it without you.

One of the big parts of this years conference for me was the additional 2 days I spent working with James Bach towards the goal of being able to teach the Rapid Software Testing class. It is always great to spend time with James, who I count among my friends, and this was particularly enjoyable, as time spent with a good friend, time spent in strenuous intelectual exercise, and time spent preparing for yet another new chapter in my professional life. Many thanx to James for taking that time from his busy schedule and devoting it to me.

At the conference, I played the roll of vendor on the expo floor, did a vendor track presentation, and did the RST work with James. Over the next two months, I have three other conferences / workshops to attend, and am presenting and participating in all of them, beyond just being an attendee. Those who do conferences can understand what an enormous amount of preperation and work that is for a three month time span, in addition to having a day job and trying to maintain a family life. Quite honestly, I rolled into this conference feeling thinly spread, tired, and not really looking forward to the next three months. But I come out of it revitalized, more optomistic, and full of new ideas. This is the beauty of conferences…it is so easy to fall into the grind of hiding in your cube and working like a dog and just trying to get by that you can loose the inspiration that you were working for in the first place. Conferences can help you reconnect with that. If you are serious about trying to be a really good tester, I strongly recomend you find a way to attend a conference every now and then.

A final note, and foreshadow to my next post. I also got to spend some time with another good friend, Jon Bach. Among other hats he wears, Jon is the Conference Chair for CAST 2007. While STAR East is, in my opinion, the Big Show of conferences of it’s type, there are other types of conferences out there. If you are looking for something smaller, if you are looking for something less vendor oriented, if you are looking for something truly unique and inspiring, I encourage you to check out CAST. It is so unique that I am going to dedicate my next blog entry entirely to it, but for now, have a look at it and mark your calendar.

Sincerely,

David

Share/Save/Bookmark

Good morning, class. Today, we are going to learn a new word – Heuristication. Heuristication is a state of sophistication in dealing with and applying Heuristics as an element in an overall test methodology.What does Heuristication look like? How can you identify it? Well, in order to answer those questions, first we have to understand what heuristics themselves are.

A heuristic is a fallible method for solving a problem. “Fallible?”, you may ask, “Why would I want to use something that’s fallible?” Well, lets look at a slightly different wording of that same idea…a heuristic is a general rule of thumb that works most of the time. Now we can begin to see the value. It is general, and works most of the time, so it can provide a solution quickly, without thinking very hard or very long about it.

Here is an example of a good heuristic…15% is a good tip for your waiter. Now, a waiter may immediately argue that 18% is more appropriate, but the point is to solve a problem quickly without having to think too hard, and 15% is much easier math. On the other hand, if you are wining and dining a major client in the fanciest restaurant in town, 15% may not be even close to appropriate. So in that case the rule fails. So it is a general rule that supplies a fast easy solution to the problem most of the time, but it may not provide the right solution all of the time.

So if that is a heuristic, then what is heuristication?

The first symptom of heuristication in a tester is the displayed ability to draw from a long list of heuristics they carry around in their head. Depending on the tester, they may display this very emphatically as they test, for example “I can’t reproduce that bug right now, but the Dead Bee heuristic tells me I can’t just ignore it until I have strong evidence that it has been repaired.” On the other hand, they may apply heuristics in a way that is not obvious to the observer, but when questioned about their tactics, can immediately justify them. For example, when given a product, with little experience with that product, and scant documentation, and being asked to ascertain it’s suitability for release, a tester may embark on a series of seemingly random activities; but when you ask him why he is doing what he is doing, he will reply “Well, I am applying a heuristic that says if I validate every functional claim made in the marketing material and on the web site, since I have no other better source of information to tell me what the application should do, then it is suitable for release to end users, who also will have no other more specific guidance.”

That is a decent level of displayed usage, but the term Heuristication also implies the ability to synthesize new heuristics out of your own experiences. A great example of this is the The Gilbertian Squirrel Dodge, a heuristic of mine that reminds me not to react out of panic. This heuristic was created when a squirrel ran right into my foot while trying to run away from me. This ability to create new heuristics is vital, because a heuristic needs to be a personal thing. It should not be just a checklist of things to do, but a collection of ideas, each of which embodies and evokes strong mental images and emotional and cognitive reactions. These additional elements help anchor the heuristic in our mind, and provide strong frames of references for it’s use, as well as cognitive mappings which should serve to bring the heuristic to our attention at the time when it’s use is appropriate. But they also help to transfer the knowledge to others. Just like stories have been used for centuries to transfer information, such as history and lineage, because they put that information in a frame of reference that has emotion and entertainment entertwined, so a good heuristic, when shared, will pass along a good idea, but it will also ensure the person hearing it remembers and understands by virtue of the way the idea is presented. So the ability to create strong heuristics is a requirement for Heuristication.

But we must not forget that a heuristic is a fallible method for solving a problem, and that possible fallibility must be evaluated before the heuristic is applied. Just as under tipping the waiter in the fancy restaurant could be disastrous for the business deal you are trying to win, applying any heuristic at the wrong time could create more problems than it solves. So another element of Heuristication is the ability to critically consider a heuristic in the context of it’s proposed usage, and determine whether or not it truly applies. This takes practice and experience…Heuristication cannot be purchased in a bottle. Like any skill, it is something that evolves from work. A heuristic encapsulates a problem, a frame of reference, and a plausible solution, all in one package. Before implementing the solution, it is imperative to insure that the problem and frame of reference are properly applicable. James Bach’s commented to me after reading the original post, “This is what I think elevates the phrase “heuristic reasoning” above the everyday idea of rules of thumb and guidelines.”

Finally, Heuristication requires a knowledge of other well founded heuristics, in addition to your own. Not only should you be able to create, and pass along, heuristics, but you should also be able to receive and assimilate them. Ultimately, groups of heuristicated testers will develop a common lexicon of heuristics that can be used in any testing environment, with any other sufficiently heuristicated testers, whether they have worked together in similar situations before or not. Much like the old joke where the office staff had been together so long that rather than telling entire jokes, they simply recited the punch line, and everyone laughes, a tester, when with a group of other heuristicated testers, pondering a test problem, should be able to simply say “Dead Bee”, or “ Remember the Squirrels”, and mental light bulbs should light up all over the room, because the heuristic carries such a strong mental model with it that everyone immediately sees and understands the relevance, the point being made, and the implications for what needs to happen next. There is very little debate…much of the debate has already occurred long ago, and the heuristic encapsulates that debate, and much of the proving out of the validity of the concept being put forth. By bringing us to a known starting point, at the very heart of the debate already, the heuristic becomes a powerful, time saving tool.

So when we Pirate the Cicada Killer Wasp
client that we didn’t see coming, and begin to Paint The Room, only to ultimately Remember The Squirrels, perhaps we will have better luck keeping in mind that FCC Cuts Vids, rather than Kid Tested, Mother Approved, SanFrancisco Depot, Krushpic Shtemple (A Romanian hockey all-star), and Feds Fescura! (A popular workers rights chant in ancient Rome).

Because the point, after all, is to quickly find a solution to the current problem.

Sincerely,
David

(Many thanks to James Bach and Mike Kelly for their comments and suggestions)

Share/Save/Bookmark

Next Page »