Cyclomatic complexity in program test, sequence of testing and software testability

Cyclomatic complexity measures the amount of decision logic in a single software module. It is used for two related purposes in the structured testing methodology. First, it gives the number of recommended tests for software. Second, it is used during all phases of the software lifecycle, beginning with design, to keep software reliable, testable, and manageable. Cyclomatic complexity is based entirely on the structure of software’s control flow graph.

The sequence of testing is

a.    Unit testing: Unit testing is undertaken after a module has been coded and successfully reviewed. Unit testing (or module testing) is the testing of different units (or modules) of a system in isolation.

b.  Integration testing: The primary objective of integration testing is to test the module interfaces, i.e. there are no errors in the parameter passing, when one module invokes another module. During integration testing, different modules of a system are integrated in a planned manner using an integration plan. The integration plan specifies the steps and the order in which modules are combined to realize the full system. After each integration step, the partially integrated system is tested.

c. System testing: System tests are designed to validate a fully developed system to assure that it meets its requirements.

There are three main kinds of system testing

1. Alpha Testing: Alpha testing refers to the system testing carried out by the test team within the developing organization.

2. Beta testing: Beta testing is the system testing performed by a select group of friendly customers.

3. Acceptance Testing: Acceptance testing is the system testing performed by the customer to determine whether he should accept the delivery of the system.

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 cannot be measured directly. 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.
A lower degree of testability results in increased test effort. In extreme cases a lack of testability may hinder testing parts of the software or software requirements at all.

No comments:

Post a Comment