Software testability
Encyclopedia
Software testability is the degree to which a software artifact (i.e. a software system, software module, requirements- or design document) supports testing in a given test context.

Testability is not an intrinsic property of a software artifact and can not be measured directly (such as software size). Instead testability is an extrinsic property which results from interdependency of the software to be tested and the test goals, test methods used, and test resources (i.e., the test context).

A lower degree of testability results in increased test effort
Test effort
In software development, test effort refers to the expenses for tests. There is a relation with test costs and failure costs...

. In extreme cases a lack of testability may hinder testing parts of the software or software requirements
Software requirements
Software Requirements is a sub-field of Software engineering that deals with the elicitation, analysis, specification, and validation of requirements for software....

 at all.

Background

The effort and effectiveness of software tests depends on numerous factors including:
  • properties of the software requirements
  • properties of the software itself (such as size, complexity and testability)
  • properties of the test methods used
  • properties of the development- and testing processes
  • qualification and motivation of the persons involved in the test process

Testability of Software Components

The testability of software components (modules, classes) is determined by factors such as:
  • controllability: The degree to which it is possible to control the state of the component under test (CUT) as required for testing.
  • observability: The degree to which it is possible to observe (intermediate and final) test results.
  • isolateability: The degree to which the component under test (CUT) can be tested in isolation.
  • separation of concerns
    Separation of concerns
    In computer science, separation of concerns is the process of separating a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. Typically, concerns are synonymous with features or behaviors...

    : The degree to which the component under test has a single, well defined responsibility.
  • understandability: The degree to which the component under test is documented or self-explaining.
  • automatability: The degree to which it is possible to automate testing of the component under test.
  • heterogeneity: The degree to which the use of diverse technologies requires to use diverse test methods and tools in parallel.


The testability of software components can be improved by:
  • Test-driven development
    Test-driven development
    Test-driven development is a software development process that relies on the repetition of a very short development cycle: first the developer writes a failing automated test case that defines a desired improvement or new function, then produces code to pass that test and finally refactors the new...

  • design for testability (similar to design for test
    Design For Test
    Design for Test is a name for design techniques that add certain testability features to a microelectronic hardware product design. The premise of the added features is that they make it easier to develop and apply manufacturing tests for the designed hardware...

     in the hardware domain)

Testability of Requirements

Requirements need to fulfill the following criteria in order to be testable:
  • consistent
  • complete
  • unambiguous
  • quantitative (a requirement like "fast response time" can not be verified
    Verification
    The word verification may refer to:* Verification and validation, in engineering or quality management systems, it is the act of reviewing, inspecting or testing, in order to establish and document that a product, service or system meets regulatory or technical standards.* Verification , in the...

    )
  • verifiable
    Verification
    The word verification may refer to:* Verification and validation, in engineering or quality management systems, it is the act of reviewing, inspecting or testing, in order to establish and document that a product, service or system meets regulatory or technical standards.* Verification , in the...

    in practice
    (a test is feasible not only in theory but also in practice with limited resources)
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK