Bitsoft Systems Inc  

Balancing on-site consulting and

offshore development...

Services

» Embedded Systems » Electronics Manufacturing » Tools & Utilities » Gaming for Learning » Software Testing » Mechanical Engineering

A. Organizational Approach to Testing

At Bitsoft, every project has the following general team organization, although the project size may dictate that a single individual handles several of the roles.

  • Project lead .
  • Design/Development lead and team members .
  • Test lead and team members (part of the Verification and Validation team - a pooled resource ).
  • QA member/s (pooled from company resources and reporting directly to the QA organization in the Company) .
  • Configuration Control member (again from pooled resources).

B. Development/Testing Strategy

Based on the nature of the project, an overall product test plan is prepared. This addresses both management issues (staffing, time schedules) and technical issues (tools, standards, guidelines)

Product/package level testing

With the Software Requirements Specifications (SRS), the design team proceeds with the design (top level, component level, and module level). With the same SRS, the test team prepares Product Level Test Procedures and test cases. Essentially, this is black box testing. Testing attempts to find errors in the following categories:  

  • Incorrect or missing functionality .
     
  • Interface errors (either hardware interface or software interface) or external database access errors .
     
  • Performance errors.
     
  • Initialization and termination errors.
This testing is automated as much as possible. The test team writes test drivers and test stubs, prepares input data, computes expected output, writes output comparators, etc. If required, a database is used.



Component level testing

Once the component level design documents are ready, the test team prepares component level test procedures and test cases. Essentially, this is also black box testing. Testing attempts to find errors mentioned in product level testing ( but at component level ) as well as errors in the following categories :  

  • Errors in data structures .
  • Interface errors between several components.
  • Access errors (addressing, shared, public, private, dependency, etc.) .
  • Memory leaks .  

Various black box testing techniques like Equivalence Partitioning, Boundary Value Analysis, Cause-Effect Graphing, Random testing, Error Guessing, and User-profile testing are used. Again this is dynamic analysis. The testing is completely automated with the test team writing test drivers, test cases, etc.
 

Module or Unit level testing

(In our experience, this step is very critical and is often ignored. Most of the time, the programmer superficially does it herself. Good structural testing always pays dividend.)  

  • This testing is done once the module/Unit coding is done. Both the design and test teams take part in this testing, though the primary responsibility lies with the test team.

  • In this step both static and dynamic analysis of the code is carried out.
     
  • Static analysis of the code is done first. Some of the methods we use for static analysis are :
     
    • Data flow analysis (to identify undefined or un-initialized variables, variables declared but not used, redundant operations data reads from locations not previously written into, etc ).
       
    • Control flow analysis (to identify multiple entries and exits, redundant paths and unused code, unreachable code, etc.)
       
    • Information flow analysis (dependencies between input and output variables, use of unused data when forming output values, use of incorrect variables to compose output variables, etc.)
       
    • Complexity Metric Analysis (McCabe's complexity metric). We have experience in using McCabe's testing tool.
     
  • After static analysis, the team performs dynamic analysis. Here "Structural" or "White Box" testing is done on the unit code. This involves a reasonable amount of complete path testing, branch or decision testing, condition testing, and loop testing

Bitsoft Systems,Inc
PO Box: 270324,
Fort Collins,
CO 80527-0324, USA
TEL: +1 303-775-1928
info@bitsoftsystems.com
Home About Us Services Why Bitsoft? Careers Sitemap Contact Us
Copyright © 2008. Bitsoftsystems. All Rights Reserved.