Make your own free website on Tripod.com
Software Quality Testing







Web Testing  |  About me
Software Quality Testing


What is Software Testing all about ???

 Software Testing is finding an Error or Fault in a software. OR The execution of a program to find its faults.
 It can be done in many ways and by using many differnent tools. It is mainly related to the quality of the software/end product.


Software Testing Principles : To remove as many defects as possible before test since the quality improvement potential of testing is limited.

What are the Types of Software Tests
  * Unit Testing (White Box).
  * Integration Testing.
  * Function Testing (Black Box).
  * Regression Testing.
  * System Test.
  * Acceptance and Installation Tests.


Unit Testing (White Box)
  * Individual components are tested.
  * It is a path test.
  * To focus on a relatively s mall segment of code and aim to exercise a high percentage of the internal path.
  * Disadvantage: the tester may be biased by previous experience. And the test value may not cover all possible values.


Integration Testing
  * Top-down Integration Test.
  * Bottom-up Integration Test.


Top-down Integration Test
  * The control program is tested first. Modules are integrated one at a time. Emphasize on interface testing.
  * Advantages: No test drivers needed.

 Interface errors are discovered early.
 Modular features aid debugging

    * Disadvantages: Test stubs are needed
     Errors in critical modules at low levels are found late.


Bottom-up Integration Test
  * Allow early testing aimed at proving feasibility.
  Emphasize on module functionality and performance.

    * Advantages: No test stubs are needed.
     Errors in critical modules are found early.

    * Disadvantages: Test drivers are needed.
      Interface errors are discovered late.


Function Testing (Black Box).
  * Designed to exercise the to its external specifications.
  * Testers not biased by knowledge of the program’s design.

    * Disadvantages:
      The need for explicitly stated requirements.
      Only cover a small portion of the possible test conditions.


Regression Testing
  * Test the effects of the newly introduced changes on all the previously integrated code.
  * The common strategy is to accumulate a comprehensive regression bucket but also to define a subset.
  * The full bucket is run only occasionally, but the subset is run against every spin.

    * Disadvantages:
      * To decide how much of a subset to use and which tests to select.


What is Test Planning
  * Define the functions, roles and methods for all test phases.
  * Test planning usually start during the requirements phase.

  * Major test plan elements are:
  * Objectives for each test phase.
  * Schedules and responsibilities for each test activity.
  * Availability of tools, facilities and test libraries.
  * Set the criteria for test completion


Test Execution & Reporting
  * Testing should be treated like an experiment.
  * Testing require that all anomalous behavior be noted and investigated.
  * Big companies keep a special library with all copies of test reports, incident forms, and test plans.


Real-Time Testing
  * Real-Time testing is necessary because the deployment system is usually more complicate than development system.
  * Rules apply for testing real time system.
  * Evaluate possible deadlocks, thrashing to special timing conditions.
  * Use tests to simulate hardware faults.
  * Use hardware simulation to stress the software design.
  * Design ways to simulate modules missing in the development system.




The correct definition of Software Quality Assurance goes something like:-

     The function of software quality that assures that the standards, processes, and procedures are appropriate for the project and are correctly implemented.

This definition is taken from Software Definitions at NASA and more are as follows :-

Software Assurance: The planned and systematic set of activities that ensure that software life cycle processes and products conform to requirements, standards, and procedures [IEEE 610.12 IEEE Standard Glossary of Software Engineering Terminology]. For NASA this includes the disciplines of Software Quality (functions of Software Quality Engineering, Software Quality Assurance, Software Quality Control), Software Safety, Software Reliability, Software Verification and Validation, and IV&V.

Software Quality: The discipline of software quality is a planned and systematic set of activities to ensure quality is built into the software. It consists of software quality assurance, software quality control, and software quality engineering. As an attribute, software quality is -
(1) The degree to which a system, component, or process meets specified requirements.
(2) The degree to which a system, component, or process meets customer or user needs or expectations [IEEE 610.12 IEEE Standard Glossary of Software Engineering
     Terminology].

Software Quality Assurance: The function of software quality that assures that the standards, processes, and procedures are appropriate for the project and are correctly implemented.

Software Quality Control: The function of software quality that checks that the project follows its standards, processes, and procedures, and that the project produces the required internal and external (deliverable) products.

Software Quality Engineering: The function of software quality that assures that quality is built into the software by performing analyses, trade studies, and investigations on the requirements, design, code and verification processes and results to assure that reliability, maintainability, and other quality factors are met.   

Software Reliability: The discipline of software assurance that :-
(1) Defines the requirements for software controlled system fault/failure detection, isolation, and recovery.
(2) reviews the software development processes and products for software error prevention and/ or controlled change to reduced functionality states.
(3) Defines the process for measuring and analyzing defects and defines/ derives the reliability and maintainability factors. 

Software Safety: The discipline of software assurance that is a systematic approach to identifying, analyzing, tracking, mitigating and controlling software hazards and hazardous functions (data and commands) to ensure safe operation within a system.  

Verification: Confirmation by examination and provision of objective evidence that specified requirements have been fulfilled [ISO/IEC 12207, Software life cycle processes].  In other words, verification ensures that “you built it right”.

Validation: Confirmation by examination and provision of objective evidence that the particular requirements for a specific intended use are fulfilled [ISO/IEC 12207, Software life cycle processes.]  In other words, validation ensures that “you built the right thing”.

Independent Verification and Validation (IV&V): Verification and validation performed by an organization that is technically, managerially, and financially independent. IV&V, as a part of Software Assurance, plays a role in the overall NASA software risk mitigation strategy applied throughout the life cycle, to improve the safety and quality of software.      













Copy using right-click. Created by abhishek.agawane@gmail.com.  All rights reserved.