You need testers because…
…developers basically suck at testing and relying on developers to test your product will cost you money! Hey you pointy haired managers who think you can save money by cutting testing costs…are you listening?
Don’t get me wrong, I don’t think developers suck in their jobs; in fact, I know many really great developers (but, I also know and have seen the work of some hacks who call themselves developers). Great developers are usually pretty good at writing unit tests that test discrete functions. Some developers are even good at writing higher component or API level tests. Unit testing and API testing are valuable approaches to help identify certain types of problems in a new build after refactoring or bug fixing.
I don’t distrust developers; I think similar to testers they are concerned about the quality of their code and of the product they are working on. But, testers have a different mindset as compared to developers, and we have different perspectives. Some testers may write, or partner with developers for component level or API tests, but most testers generally focus on integration and system levels of testing. Using various approaches in our craft we often expose functionality issues as well as behavioral or usability issues that might adversely your customers.
For example, the other day I came across a website to make a travel reservation. When I get to the payment page I realize that I can’t complete it because it is missing 3 months.
“Hmm…this is odd,” I thought to myself. I refreshed the page thinking there might have been a glitch in getting the list of months. Ultimately, I had to call the travel company to make reservations.
At first they didn’t believe me, then they confessed they just commissioned this new website. So, I told them that after they fire the developer and hire some testers for the next go round they should also figure out why “test” is listed as a State.
Or, among other things, why this dropdown list contains seeming unrelated options, why some options are all upper case, and why one city name (scottsdale) is not capitalized. And of course our all time novice faux pas…”abc_test.”
These are just of few of the examples of the lack of perceived quality of this site. And the company really expects customers to enter personal data into this site; especially credit card information?
Now, of course testing doesn’t guarantee the absence of bugs, but I am pretty confident that most testers would have easily found these before staining this company’s reputation.
So, the next time your company thinks it can cut testing costs by having developers do the testing…point them here and say…I sure hope the developers you hire do a better job than this.
Pingback: OpenQuality.ru | Качество программного обеспечения
Pingback: Bugs That Automated Tests Aren’t Good at Finding
For me the important thing to add here is that you want this level of testing expertise *inside* your development team.
The problems stem from where the dev team is not properly cross functional. People fall into the trap of thinking “It’s a dev team, therefore it should be made up of pure techies”. Maybe to these techies a mixed case state listing is fine – they’re good coders and use case insensitive comparisons everywhere…
I would hate to see this article used to justify a separate stage to the development process. It sounds attractive to pass developed code over to a dedicated testing team who will try and find bugs, and report them back to the developers to fix later. But what you get there is a reliance on manual procedures, unecessary hand-off delays, and the bugs are still discovered too late – just this time your release is delayed rather than timely but buggy.
Separation of testing from development causes qualtiy problems that feed back on themselves – a tendency to build a QA empire and not notice that this is reducing your efficiency at developing working software. Testing – unit, integration, sceanrio, regression, usability, percieved quality, whatever – is /all/ part of development.
Pingback: The Morning Brew - Chris Alcock » The Morning Brew #812
I think the bug on the months combobox above is likely caused by a developer trying to be too helpful, by removing months already passed in the current year. You could probably book in Jan/Feb/March if you first changed the Year field to 2012 (which would be an unnatural flow of input).
I saw exactly the same bug yesterday (think it was on a Center Parcs website if I remember correctly), So maybe it’s related to a commonly used set of date controls. You’re right though, this kind of thing is exactly the type of bug you don’t find in your own code
Reminds me of those day when my team and I would test a product in the middle of night only to find unnecessary, annoying confirmation pop up windows with some text which could only be understood by developer. Same is true with shoddy testers also. I have come across testers who blindly close their eyes even the wake of most horrible defects. I feel it is your ingrained habits which make you a good developer or tester. And a good developer could be a good tester too and vice varsa.
BJ, when I was a programmer (during the freelance stage), I built a travel reservation web-site. My site didn’t had these bugs… In fact my site didn’t had ANY bug at all! Right?
Well, no, not actually. I can think today of many bugs I was not aware then…
As Ron Avitsur says, testing your own code is akin to seeing your own blind-spots.
Nice, Bj!
“But, testers have a different mindset as compared to developers, and we have different perspectives.”
Yes, exactly! When two groups have distinct roles and motivations, they approach a given task differently.
We need to remember that developers tend to test their code. That’s good! But, pretty much by definition, they are testing *what is*, rather than *what should be*.
http://strazzere.blogspot.com/2010/05/slideshow-optimistic-developers.html
Hi BJ,
Do you believe, this bug of “missing” three months in a drop down could not have or could have been found by developers unit test or API test?
or is just a case of a developer of PM in a hurry to take something “live” and a mistake somehow slipped through the cracks.
You should probably do a post on types of bugs that unit testing (or developer testing at any level) would’nt catch.
That would be a fitting reply to all those who swear by automated unit testing/API Testing.
Shrini