Email Subscription Form

Saturday, November 23, 2019

...but TEST like a QA Engineer!

In last week's post, I wrote about how it is important for software testers to code like a developer.  But there is a second half of the sentence "Code like a developer...", and that is that software testers should be TESTING. 

I'm not a stickler for using the right word for testing-related concepts, which is why I use the term "test automation".  But automated testing is really automated checking.  Automated tests serve a very valuable purpose in that they can run regression checks at any hour of any day, without human intervention.  But they do not actually test the software.



A sad casualty of the very important move towards test automation is the QA Engineer.  Many large software companies don't employ QA Engineers any more, feeling sure that Software Developers in Test are all that's needed to validate the quality of their software.  And many Software Developers in Test focus solely on the automation, working from acceptance criteria in development stories and looking at the code rather than manually interacting with the software.  How is that trend working out for end users?  

Just this week, I experienced the following:  I received a (legitimate) email that I had some money to accept from PayPal.  The email contained a button to click that said "Accept the Money".  When I clicked it, I got a message that said "The previous page is sending you to an invalid URL."  

Last week when I was using a mobile app, a screen that I needed stayed permanently blank.  And in a post I wrote two weeks ago, I mentioned that while I was writing, Blogger had a page load error when I tried to add an image.  

Three weeks, three major companies, three bugs.  This is what comes from not employing people who think and act like testers.  

It's true that the whole software development team owns quality, and that quality is everyone's responsibility.  And there are also non-QA people who care deeply about certain areas of an application:
  • Developers write unit tests to check the quality of their code
  • Product Owners care about whether the feature does what it's supposed to
  • UX Designers care about whether the user journey is intuitive
  • Security testers check the software for vulnerabilities
  • Performance engineers care about the response time the application 

But only QA Engineers care so much about the quality of the application that they'll do things like:
  • Type ~!@#$%^&*()-=_+{}|[]\:";'<>?,./ into every text field to test for invalid character handling
  • Try to purchase -1, 99999999999, 1.3415, and foo of something
  • Enter a birth year of 3019 to see what happens
  • Click every button twice to check for multiple submissions
  • Click the forward and back button on every single page of a website
  • Test 48 different permutations of feature sets to be as thorough as possible 
  • Create dozens of test users with many varieties of security settings, to have scenarios ready for testing at a moment's notice
  • Become an expert on a particular feature and provide documentation and assistance to other testers
  • Test the same thing in the QA environment, the Staging environment, the Demo environment, and the Production environment to make absolutely sure that the feature is working everywhere 
  • Test every feature on every supported browser and every supported mobile device

This is why we need software testers who TEST.  We need people who will continually ask themselves "How could we break this?", "What haven't we tested yet?", and "What features will be used with this?".  We need software testers who don't rush into writing automation without first interacting with a feature.  We need software testers who remember that the goal of all their efforts is to have a user who has a positive, bug-free experience.  


14 comments:

  1. Very ablazing post
    so informative

    ReplyDelete
  2. I once encountered a major supermarket in-store customer service terminal that was so badly designed and counter-intuitive in its use that I wrote to the company's CEO to point out its faults, tell them that it was clear that no human being had ever looked at it in the development phase (because the code all worked perfectly but the workflow was complete rubbish), and that my usual charge for such a report would be £250 but how about some discount vouchers which I was trying to get printed out in the first place when I went to use the terminal!

    The reply I got was "We're replacing it with a phone app early next year", which didn't exactly fill me with confidence.

    ReplyDelete
  3. Deep insight to the life of QA engineers.. In my view the problem arises when the expectations are set differently with different stake holders

    ReplyDelete
  4. The great information that you shared. It will help all of them. Thanks for posting. Keep maintain the updates
    Data Extraction Solutions|
    Ecommerce website builder|
    Magento ecommerce development companies|

    ReplyDelete
  5. Not sure I agree with your definition here about QA Engineer. For me QA Engineer is a role that focus on defects prevention. A QA engineer can be also a Tester but I would not take your examples as only QA Engineer can think about them. In fact I see your examples as a fine choice of additional tests that a senior tester (not necessary QA) can define and use them.

    ReplyDelete
    Replies
    1. Angelos, I agree that senior testers, and other roles, can think about these test types as well. The main point of my article was to stress that software testers, regardless of what they are called (SDETs, Automation Engineers, QAs), should all be thinking about their product rather than jumping straight to automation.

      Delete

Measuring Quality

The concept of measuring quality can be a hot-button topic for many software testers.  This is because metrics can be used poorly; we've...