Practices
  Home arrow Practices arrow Page 2 - The Art Of Software Development (part ...
Dev Shed Forums 
Administration  
Apache  
BrainDump  
DHTML  
Flash  
Java  
JavaScript  
Multimedia  
MySQL  
Oracle  
Perl  
PHP  
Practices  
Python  
Reviews  
Security  
Style-Sheets  
Web Services  
XML  
Zend  
Zope  
Forums Sitemap 
IBM® developerWorks 
Dedicated Servers 
E-Commerce Hosting 
Linux Web Hosting 
Managed Hosting 
Small Business Hosting 
Download TestComplete 
VPS Hosting 
Weekly Newsletter

 
Developer Updates  
Free Website Content 
IBM Developerworks
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
PRACTICES

The Art Of Software Development (part 4): Delivering Quality
By: icarus, (c) Melonfire
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 4
    2002-09-24

    Table of Contents:
  • The Art Of Software Development (part 4): Delivering Quality
  • Code To Zero
  • Casing The Joint
  • A Man With A Plan
  • Bug-bustin'
  • The Write Stuff
  • Endgame

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
     
    ADVERTISEMENT

    Stay one step ahead of the competition. Evaluate and give feedback on some of the hottest web development tools on the market today. Make your opinion heard! Click Here

    The Art Of Software Development (part 4): Delivering Quality - Code To Zero
    (Page 2 of 7 )

    Writing code is only half the battle - the other half involves testingit. Typically, three types of tests are performed across the softwaredevelopment lifecycle.
    1. Unit testing: This involves testing the units, or individual codemodules, that make up the entire system. This type of test is performedto ensure that each module meets the individual requirements laid downfor it, and it highlights bugs or errors within each module. Typically,unit testing is not performed by the test team; rather, it is performedby the developer, or the developer's peer group.

      Unit testing is meant to confirm the functionality, data processing,logic flow and exception handling of a particular unit of code. In mostcases, it involves supplying the code unit with a variety of input dataand verifying that the output produced is as per requirements. Errorsthat are encountered can be rapidly fixed by the developer in thisphase, before the code moves to the system test team for more exhaustivetesting. Unit testing thus serves as the first defense in the battleagainst software flaws.

    2. System testing: In this second phase, the integrated system is testedto verify that all the modules within it are working properly,communicating with each other where required, and satisfy allinter-module dependencies. This second level of testing highlights flawsin the linkages between modules, and also serves to verify the completefunctionality of the system as it will be delivered to the customer.

      Typically, system testing is performed by a separate test team, whichinstalls the software in an independent test environment and proceeds toverify it using the test plan previously decided. This type of testingis intended to find flaws in the communication between modules, and alsobugs within each module that may have been missed during the developer'sunit testing. The test team may also provide feedback to the developmentteam on the usability and performance of the software being tested; thisfeedback may be used to improve the product during subsequent testcycles.

    3. Acceptance testing: As the name implies, an acceptance test is thetest that the software must undergo in order for it to be formallyaccepted by the customer. Although the test plan for this activity isdefined near the beginning of this project (you might remember this fromthe second part of this article), this test is typically organized last,once the internal tests are concluded to the satisfaction of the projectmanager.

      Acceptance testing may be performed by the customer, or by an internalteam acting on behalf of the customer. Note that it may be necessary totrain the customer on proper operation of the system prior to acceptancetesting. Depending on the nature of the application and the customer'srequirements, acceptance testing may be performed on-site, or in asimulated environment that replicates the conditions of the real one.
    Each of these phases is essential to the software development process,and plays an important role in achieving the goal of high-quality,zero-defect software. Sadly, however, many organizations neglect thisphase of the development cycle, and this is turn leads to bugs appearingat a later stage. Since it is generally understood that software bugsare erectified by the developer at no charge, the lack of adequateattention to software testing can cause project costs tomushroom...which is bad for the bottom line in the long run.

    It is for this reason that most successful companies pay rigorousattention to their quality control procedures, and ensure that processesare in place to discover and correct bugs before the software isreleased. Regardless of whether you're an independent developer or amanager of a large development team, remember to budget enough time inyour schedule for a thorough test of your software, together with timefor error rectification and re-test - your customers will thank you, andyour organization's accountants will think nice things about you.

    More Practices Articles
    More By icarus, (c) Melonfire


     

       

    PRACTICES ARTICLES

    - The System in So Many Words
    - Basic Data Types and Calculations
    - What`s the Address? Pointers
    - Design with ArgoUML
    - Pragmatic Guidelines: Diagrams That Work
    - Five-Step UML: OOAD for Short Attention Span...
    - Five-Step UML: OOAD for Short Attention Span...
    - Introducing UML: Object-Oriented Analysis an...
    - Class and Object Diagrams
    - Class Relationships
    - Classes
    - Basic Ideas
    - Choosing the Right Team
    - Trees
    - Basic Array Searching in C++

     
    Accelerating Trading Partner Performance
     
    Competing on Analytics
     
    Cost Effective Scaling with Virtualization and Coyote Point Systems
     
    Five Checkpoints to Implementing IP Telephony
     
    Hosted Email Security: Staying Ahead of New Threats
     




    © 2003-2008 by Developer Shed. All rights reserved. DS Cluster 3 hosted by Hostway