Why waste time testing, developers can deliver 0 bugs…

While I have had this conversation at nearly every company I have worked at, I do not believe that testing is a waste of time nor do I believe that you can deliver 100% bug free code ever.    I recently saw this great post which got me thinking:  Top ten most infamous software bugs of all time.

  • Yes, you can deliver software, even Enterpise software with no QA.  QA is all about risk management, helping you to better understand what you are about to ship, where the risk areas are and gives you a certain sense of comfort.  You can go without this if money is tight but there is major risk with this approach.
  • Developers should just write code with 0 bugs.   This is ideal of course, and, perhaps even feasible when you look at the world in the micro level of individual functions.  Unit testing, of course, should help provide a solid level of comfort here but it is only a piece of the puzzle.  The bugs that will bite you hardest come from the interplay of functions, from incomplete understanding of requirements, from poor performance.  Individual developers focused on individual features will not catch these.
  • Unit testing is the answer, get 100% code coverage and dump the QA team.  Same basic problems as noted above.  Good unit testing takes time and you are often spending higher $$s on the developer resources than on the QA resources to get the same level of coverage.  There is definitely an argument that automation is worthwhile, which I completely agree with.  However, it comes down to managing expenses and in most startup environments it’s cheaper and nearly as cost efficient to have a good QA team on board than to have your developers writing large amount of unit tests.

Thankfully, I have not had this discussion at my current company.  We have a good QA team and developers that are investing a proper amount of time on their unit testing.  We are also striving to live by my Engineering Tenants which keeps us focused on doing the right things.
Let me know what you think. Have you ever worked in an organization successfully delivering software that did not have a QA team?

-John

About these ads

10 Responses to “Why waste time testing, developers can deliver 0 bugs…”

  1. Vivek Kumar Says:

    Dear Sir/ Madam

    Please refer to your requirement for Software Quality Assurance Engineer.I Vivek Kumar want to introduce myself as a freelancer QA/Tester from Delhi, India. I am having more than 5+ years of experience in Manual and Automated Testing, I am looking for some work in Software Testing . I have a high speed broadband connection and telephone lines available for calling US and UK.

    Please find enclosed my resume for your reference and if you have any requirement

    which matches to my profile please let me know.

    Looking forward to hear from you soon.

    Thanks and Regards

    Vivek Kumar

  2. Tester’s Dilemma | Techdoer Times Says:

    [...] testing is in fact waste, what does that mean for us poor testers! It can’t be true, or not always or not everybody will do the right [...]

  3. Inder P Singh Says:

    John

    You have made good points in your post.
    Keep in mind that defects in the use of
    software may results from any of the following:

    1. Application defects

    2. Defects in the data

    3. Defects in the underlying system or
    components/ services used by the application

    One would expect the developers to be
    primarily concerned only about the application
    defects (# 1 above) since the other types of
    defects fall outside their purview.

    Unit testing alone is not sufficient. Unit
    testing is not suited to discover all
    important defects in the following:

    1. System performance

    2. System security

    3. System usability

    In order to answer your question, an
    organization that successfully delivers
    working software does need QA. Building
    software is a complex affair with many steps,
    interactions, dependencies and individuals
    (with different styles of thinking, skill
    levels and knowledge levels) involved in the
    process. Even if there is not a dedicated QA
    team, some practioners have to take on the
    role of QA to assure quality in the software.
    It all starts with getting the requirements
    right and clear and being disciplined
    throughout the entire software development
    life cycle.

    Inder P Singh

  4. Should you “throw it over the wall” or implement QA hand-offs? « John Moore’s Weblog Says:

    [...] right schedule, at the right quality.  This team believed in the nonsense that I discussed in this post.  As I recall, the team never shipped a new product (after more than 3 years) and the team’s [...]

  5. John Moore Says:

    Thanks Chris, I agree with you. Each member of the team has responsibility for product quality and use different approaches to find different types of issues.

    -John

  6. workorganized Says:

    Bug free code is only possible for the most simple of applications, and what customer would be paying for such a simple piece of code? Even if I could imagine bug-free code for software of any usable complexity, there are still the issues of interoperability as well as the other “ilities” (usability, reliability, scalability etc). Unit testing is not going to find these types of issues.

    I see QA as complementary and additive to developer testing efforts, not as a replacement for them.

    Chris

  7. Top posts for the month of February « John Moore’s Weblog Says:

    [...] Why waste time testing, developers can deliver 0 bugs… [...]

  8. John Moore Says:

    LinkedIn shifted this to the job area so I have copied/pasted the information here below:

    Comments (16)
    Ketan Trivedi
    Sr. Programmer Analyst at iFuturistics Inc
    I think that developers are writing bug-free code nowadays, because there is no job opportunity for QA this time.
    Posted 15 hours ago | Reply Privately
    Bashir Magomedov
    Software Engineer at KLA-Tencor
    I think that all developers should write test for their code, better prior writing code, and run all tests each time the intend to change it. But anyway QA are also required. They should perform manual or script-based testing, maintain errors database, write scripts and reports… all that is too time-consuming to be done by developers :)
    Posted 13 hours ago | Reply Privately
    Aamir Ansari
    Software Programmer at Centrum Direct Limited
    I think Developers can write bug free code,but there is a need for QA to test thoroughly because as a developer we think like a developer, but the user can’t think like a developer, so some one has to be there to test the program like a naive user do. So user can make a mistake that Developers don’t.
    Posted 9 hours ago | Reply Privately
    John Moore
    VP of Engineering
    This is one of those conversations that will always drive heated debate. Keep the conversation flowing here, on my blog, or just within your companies.

    -John
    Posted 8 hours ago | Delete comment
    Guillaume Imbert
    Software Engineer
    A lot of people are confusing unit test, integration test and “poo” acceptance testing. Again a proof of this.
    Posted 7 hours ago | Reply Privately
    Radhakrishna Banavalikar
    Consultant – Microsoft Technologies, MCP, MCTS
    QA is more of a part of philosophy based on THE fact that: No programmers can call their baby ugly. It also serves a notion of professional approach to customers (in case of consulting and mainly product development firms).
    Posted 7 hours ago | Reply Privately
    James Knowles
    Owner, Unwind Software Ltd
    You will always need QA because developers will never ever be able to see what a user will actually do with there applications in practice. Classics of this are that a User will push buttons outside of sequence of what the developer unit tested for. For example push the View button first rather than the search button first then View. Not all testing can also be befored by unit testing some of the testing is just not possible and you need a range of people views in QA to make sure a product comes out tested fully. Qualtity products comes from a mixed team with different sets of skills.
    Posted 3 hours ago | Reply Privately
    Wiebe Tijsma
    Software Architect and Engineer
    Who needs a VP of engineering when your developers could easily lead the company? :)
    Posted 3 hours ago | Reply Privately
    Steven Lowe
    IT Consultant, Architect, and Coach
    quality assurance should be built into the development process; in the “waterfall” methodologies this was the function of the QA team or department, but trying to instill quality after the software was written is like trying to put toothpaste back into the tube – it’s possible, but tedious and wasteful. Much better to build quality into the process from day one, using test-driven development (TDD) et al.
    Posted 3 hours ago | Reply Privately
    Lance Robinson
    Sr. Systems Analyst at Frontier Communications
    QA is a good safety net to make up for the operational gaps, or inherent ‘blindness’, that exists between different depts/phases.
    While my unit may perfectly fit the requirements presented me by the architect, who’s to say that he/she did not miss something from the req analysts? QA is less about individual developers/components and more about assuring the results of an entire project. It ‘tests’ all phases of a project from conception to delivery and is not ‘targeted’ at developers, even though they are usually the ones that must clean up any ‘mess’ found during QA. I am curious to see how many defects or issues are usually found via QA that are NOT attributed to coding errors (or developers), as opposed to the number that are?
    Please don’t confuse this with unit testing.
    Posted 3 hours ago | Reply Privately
    Wesley Wilson
    Development Manager at ChanneLinx, Inc
    John, as you say in your blog post, totally bug-free code is impossible in an enterprise application. Unit testing with good code coverage eliminates the majority of bugs before they ever get checked into source control. And automation of those tests catches most that do get checked in.

    I think automated unit tests are far more cost effective than having a QA team deal with the bugs that tests can easily catch. Much of the ROI of unit testing comes from the better design that unit tests encourage.

    No unit test can determine if the UI is intuitive or if the feature being tested meets the customer’s expectations. In my opinion, automated unit testing frees up a QA team to focus on real-world testing with non-trivial data and usage of the application, as well as preliminary acceptance testing.
    Posted 3 hours ago | Reply Privately
    John Meyer
    Sr. Software Engineer at GolfChannel.com
    Unit testing/TDD helps the developers ensure their code does what they want it to do and that they can refactor confidently because tests will fail if they break that functionality. QA’s job is to ensure the product does what the specs require and to be another layer of integration testing.
    Posted 3 hours ago | Reply Privately
    Christopher J Tallos
    Senior Software Engineer at National Marrow Donor Program
    Quality of a project starts with good database and OO design coupled with unit testing and followed up by Quality Assurance testing. I’ve worked at too many companies that spend time on a roller-coaster ride going round in circles on projects. The amount of time and money wasted on Development and QA to try and fix things after the due date was enormous. If you ever see yourself in this situation you need to take a close look at the architecture of your application and question your architects and developers and never question if QA is necessary, because it is in too many situations.
    Posted 3 hours ago | Reply Privately
    John Moore
    VP of Engineering
    I am glad that I’ve been able to put out a question leading to this much conversation, keep it flowing. If you have a chance to leave comments on my original blog posting please also do so as I’d to have my other readers benefit from this conversation.

    http://johnfmoore.wordpress.com/2009/02/24/why-waste-time-testing-developers-can-deliver-0-bugs/

    -John
    Posted 2 hours ago | Delete comment
    Brian Owens
    Technical Recruiter at Softworld Inc
    There aren’t any QA opportunities?? Could have fooled me.
    Posted 2 hours ago | Reply Privately
    George Hassan III
    Sr Software Engineer at iConnect
    Trying to define yourself is like trying to bite your own teeth.
    -Alan Watts

    Trying to QA your own code is like trying to Define yourself.
    -Me.

    Really developers know way too much about how it was designed to work. You just can’t undo that properly and apply how it will work / be used.
    Plus all the other reasons listed above.

    I’ve seen some that can do both jobs, but oh so rarely. And never at the same time.
    Posted 58 minutes ago | Reply Privately

  9. Mustafa Balsara Says:

    QA is important. Developers would code the application but would not do justice to the requirements while Unit Testing. They would be too code-concentrated rather than business concentrated. Though as technology advances and Test Scripts and cases get automated through automation tools we would see a decline of the tribe.

    The business users are more confident on an Application when it is QA approved.

  10. Lance R. Says:

    QA is a good safety net to make up for the operational gaps, or inherent ‘blindness’, that exists between different depts/phases.
    While my unit may perfectly fit the requirements presented me by the architect, who’s to say that he/she did not miss something from the req analysts? QA is less about individual developers/components and more about assuring the results of an entire project. It ‘tests’ all phases of a project from conception to delivery and is not ‘targeted’ at developers, even though they are usually the ones that must clean up any ‘mess’ found during QA. I am curious to see how many defects or issues are usually found via QA that are NOT attributed to coding errors (or developers), as opposed to the number that are?
    Please don’t confuse this with unit testing.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 26 other followers

%d bloggers like this: