Yes, the boring part is required too

I got into an interesting chat on twitter about "Happy Path Testing". You see, in the experience of one guy, exploratory testers just don't have the patience to test requirements. They get bored and stop seeing problems when they become familiar with a UI. Well, it seems to me he is blaming several different issues on "Exploratory testers", when really they are issues with some people, and all humans. Let me break it down for you.

Issue 1: Functional Testing is part of the job.

By this, I mean testing the requirements and verifying correct behavior (I.e. "The Happy Path") is part of every testers job. There is NO exception for Exploratory testers. The difference is, with Exploratory testers this is where you start (your acceptance criteria), not where you finish. In many modern software testing groups, there is some automation in place to make sure that the happy path stays happy. This may be in FitNesse, Selenium, Unit tests, TDD, and it may be created and/or maintained by Developers, and/or testers. Usually the basic happy path is best covered by developers, and more complex combinations are covered by testers using some sort of scripts or tools, but the point isn't to automate all testing. It is simply to automate the boring testing so that humans can do what they are better at rather than running the same test the same way time after time. Also, just because the test is automated doesn't mean you never need to test it manually. It is good to test the user experience from time to time. Automation has a narrow validation scope in most cases. A human can generally detect more variance than automation can.

Today I spent several hours validating 117 XML files and out of those I had a list of 2 separate issues. It turns out there was a valid explanation of both problems. So. Did I waste my time? Am I doing a poor job? I say no. No, because this was new functionality that needed thorough testing. Even a slight problem would be quite expensive in this area, and this data change involves some math. I had to validate beyond the smallest scope to make sure that the changes didn't impact more than intended. The FitNesse tests and unit tests not only passed, but were reviewed by another developer, and a tester. Also, this was a new area for me, so I learned more by going through these files difference by difference to understand why. However, why did I stop short of validating all 580 of the files? For a great reason. After testing over 20% of the files, I didn't find even one unexpected difference, yet, I'd validated every expected change over 100 times total. It is possible that I missed a bug, however, the likelihood was low. I conferred with my fellow testers. We all found the same results with different tests. The fixes were good. Did we feel bummed out by learning this? No. We felt proud of our developers because more and more they are delivering solid code. Many times the bugs found are requirements gaps we didn't consider rather than something functionally missing or a code error. This doesn't mean that our testing skills are slipping or that we no longer have to do functional testing. It simply means our team of developers has evolved beyond the "throw it over the wall" phase.

I've worked on teams with another culture in the past. The culture where, "We don't have time to make Unit tests!" That is confusing. If you don't have time to test it, you surely don't have time for the customer to reject it, to fix it, not test it, and get it sent back again. If your excuse is that you don't have enough time, realize that you are dumping boring work, and part of your responsibility ON your exploratory testers. Don't be shocked if the best testers don't want to work with your team. Just as I'm sure you don't want to work with testers who are so limited that they can't start testing without "complete documentation", or expect hand holding, the best testers want to work with developers who have pride in the code they create. There is no joy in finding bugs that any monkey could find. The joy is in discovering a bug important enough that it SHOULD be fixed, but not because it is a developer mistake, but because it saves many users from frustration and makes the product better that it was found and fixed before it harmed any customer.

The second issue is caused by something all humans can fall victim to, not JUST exploratory testers, and not just testers, but all humans! It's congnitive bias, which there is a nice list linked to here. Anyhooo,..not specific at all to testers, but something we professional testers, along with all scientists must work to avoid.

To summarize,..the boring part IS your job as a tester. Any kind of tester. However, it is also your job to try to automate the boring part, for the simple fact that humans aren't especially good at repetitive tasks, and brain engaged testing is the best sort of testing. It may not be possible to eliminate tedious checks, but try to reduce them where you can. Also, as a developer? The boring UNIT TESTS and the discipline of doing some checks yourself before releasing code is YOUR job. It isn't to be pushed off onto the testers. We share in common that the more we automate the happy path, the more time we can spend writing interesting code, and finding interesting bugs rather than rehashing the old stuff, or finding and fixing the same bugs over and over again.
 

What did you think of this article?




Trackbacks
  • Trackbacks are closed for this post.
Comments
Page: 1 of 1
  • 18 Apr 2011 Jon Waite wrote:
    Think the wikipedia page for this is the following:

    http://en.wikipedia.org/wiki/Cognitive_biases

    Great thoughts here though. Automation is a 'tool' and as such is limited to only being a tool. Great for 'checking' things that you expect 'should' not change. Like, anything you can put into a spreadsheet. Not a great tool for exploratory testing or things that 'do' change. Like any tool, you need to know something about tool selection. As a tester, perhaps it's important to get familiar with the logic behind the code to be tested?
    Reply to this
  • 18 Apr 2011 Lanette wrote:
    Hi Jon,

    I did link to http://en.wikipedia.org/wiki/Cognitive_biases

    Not sure why it didn't work on your browser. Perhaps a bug? I totally agree with automation is a "tool", but I also use "tools" for my automated and exploratory testing. It is also our job as testers, as you point out, to understand what is going on behind the UI. Not instantly, but as we gain product expertise. This allows us not only to isolate bugs with more accuracy, but to write better test cases.
    Reply to this
  • 19 Apr 2011 Albert Gareev wrote:
    Hi, Lanette!

    Good write-up, thanks!

    In a twitter format, my answer to that guy would be - "Happy Path testing" IS a part of Claims Testing, and Flow/Scenario Testing heuristics. So what's your point, again?


    Thank you,
    Albert Gareev
    Reply to this
  • 20 Apr 2011 Carl Shaulis wrote:
    Hi Lanette,

    Another great post! There is a sentence on automation I am curious as to why you lumped tools and techniques together? Selenium and Fitnesse are tools or frameworks for test automation where as TDD and Unit testing are techniques. I can see Unit testing fitting the pattern, because it has become synonymous with JUnit. TDD is purely a "best practice". Am I missing something?
    Reply to this
  • 20 Apr 2011 Lanette wrote:
    Hi Carl,

    I consider TDD "Those tests that Devs write into code that make it fail and then make it work", and sometimes they are used in addition to or instead of unit tests. Anyhow, I was linking them to unit tests to describe the tests the developers do.

    In general, I see Unit testing as this specific thing that takes discipline, but has a way to covering the happy path that works. I see TDD in this same way, usually it's this discipline that takes time, dedication, and focus on the part of the developer, and it is a way that works. My point in lumping them together is to say that really so long as the developer has some way to cover the happy path and does that, and the testers have some way to cover the happy path and do that, overall it is a good combination. When we do the boring part as automation and maintain and run our automation consistently, we have less boring manual repeat tests. That is the kind of automation that interests me the most. I see automation (Created and maintained both by Developers and by Testers) as how I want to focus on preventing bugs (one of the way), and testing as how I want to find bugs. I wrote a blog on TDD at http://blog.testyredhead.com/2010/10/08/TDD.aspx. If you check it out, you'll understand why TDD to me is just a developer practice in my eyes so far. It can be an effective one, but most often testers aren't involved from what I've seen.
    Reply to this
    1. 21 Apr 2011 Carl Shaulis wrote:
      Thank you for the response! Currently we have a dedicated development team for the test automation efforts using a selenium based framework. We insist that our software automation engineers use TDD. Our goal is not have the automation be the cause of a failure.

      Unfortunately in my experience I am finding many development teams come up with clever excuses not to use TDD. I recently learned this development practice and I find it to be very powerful. I definitely agree that TDD takes discipline and dedication.

      Keep on posting!
      Reply to this
  • 11 May 2011 Sigge wrote:
    Thank you Lanette!

    Exactly the point you make, that the booring things should be done as well, by both programmers and testers just the same. And then it is the context of knowledge, experiences and product that can draw the line between what belongs to what person.

    Something along these lines I was trying to explain, mostly towards my fellow programmers, in my blog post: http://happytesting.wordpress.com/2011/03/29/good-programmers-check-great-ones-test-as-well/

    The important point I try to make is the pride in delivering code that really deserves to be tested by testers. Deserves in the meaning of good enough to not contain those monkey bugs.
    Reply to this
  • 13 Jun 2011 Josef Milan wrote:
    Thank you for the smashing post you created. You really packed your blog with professional content.
    Reply to this
  • 14 Jun 2011 Web Design Quote wrote:
    Generally the essential happy path is best enclosed by developers, and more difficult mixture is sheltered by testers using some sort of scripts or tools. It is good to test the user knowledge from time to time. Automation has a thin justification range in most cases. I give with my guy testers. We all set up the same results with different tests. The fixes were good. Did we feel bummed out by learning this?
    Reply to this

Page: 1 of 1
Leave a comment

Submitted comments are subject to moderation before being displayed.

 Name (required)

 Email (will not be published) (required)

 Website

Your comment is 0 characters limited to 3000 characters.