Approaches of Software Testing

System testing

  • System testing is known as the testing behavior of the system or software according to the software requirement specification.
  • It is a series of various tests.
  • It allows to test, verify and validate the business requirement and application architecture.
  • The primary motive of the tests is entirely to test the computer-based system.
Following are the system tests for software-based system

1. Recovery testing
  • To check the recovery of the software, force the software to fail in various ways.
  • Reinitialization, check pointing mechanism, data recovery and restart are evaluated correctness.
2. Security testing
  • It checks the system protection mechanism and secure improper penetration.
3. Stress testing
  • System executes in a way which demands resources in abnormal quantity, frequency.
  • A variation of stress testing is known as sensitivity testing.
4. Performance testing
  • Performance testing is designed to test run-time performance of the system in the context of an integrated system.
  • It always combines with the stress testing and needs both hardware and software requirements.
5. Deployment testing
  • It is also known as configuration testing.
  • The software works in each environment in which it is to be operated.

Debugging process

  • Debugging process is not a testing process, but it is the result of testing.
  • This process starts with the test cases.
  • The debugging process gives two results, i.e the cause is found and corrected second is the cause is not found.
debugging process

Debugging Strategies

Debugging identifies the correct cause of error.

Following are the debugging strategies:

1. Brute force
  • Brute force is commonly used and least efficient method for separating the cause of software error.
  • This method is applied when all else fails.
2. Backtracking
  • Backtracking is successfully used in small programs.
  • The source code is traced manually till the cause is found.
3. Cause elimination
  • Cause elimination establishes the concept of binary partitioning.
  • It indicates the use of induction or deduction.
  • The data related to the error occurrence is arranged in separate potential cause.

Characteristics of testability

Following are the characteristics of testability:

1. Operability
  • If a better quality system is designed and implemented then it easier to test.
2. Observability
  • It is an ability to see which type of data is being tested.
  • Using observability it will easily identify the incorrect output.
  • Catch and report the internal errors automatically.
3. Controllability
  • If the users controlled the software properly then the testing is automated and optimized better.
4. Decomposability
  • The software system is constructed from independent module then tested independently.
5. Simplicity
  • The programs must display the functional, structural, code simplicity so that programs are easier to test.
6. Stability
  • Changes are rare during the testing and do not disprove existing tests.
7. Understandability
  • The architectural designs are well understood.
  • The technical documentation is quickly accessible, organized and accurate.
Attributes of 'good' test
  • The possibility of finding an error is high in good test.
  • Limited testing time and resources. There is no purpose to manage same test as another test.
  • A test should be used for the highest probability of uncovering the errors of a complete class.
  • The test must be executed separately and it should not be too simple nor too complex.

Difference between white and black box testing

White-Box TestingBlack-box Testing
White-box testing known as glass-box testing.Black-box testing also called as behavioral testing.
It starts early in the testing process.It is applied in the final stages of testing.
In this testing knowledge of implementation is needed.In this testing knowledge of implementation is not needed.
White box testing is mainly done by the developer.This testing is done by the testers.
In this testing, the tester must be technically sound.In black box testing, testers may or may not be technically sound.
Various white box testing methods are:
Basic Path Testing and Control Structure Testing.
Various black box testing are:
Graph-Based testing method, Equivalence partitioning, Boundary Value Analysis, Orthogonal Array Testing.

Basic Path Testing

  • Basic path testing is proposed by Tom McCabe.
  • It is a white box testing technique.
  • It allows the test case designer to obtain a logical complexity measure of a procedural design.
  • This measure guides for defining a basic set of execution paths.
The examples of basic path testing are as follows:
  • Flow graph notation
  • Independent program paths
  • Deriving test cases
  • Graph matrices

Control structure testing

The control structure testing is a wide testing study and also improves the quality of white-box testing.

The examples of white-box testing is as follows:

1) Conditional testing
All the program module and the logical conditions in the program are tested in conditional testing.

2) Data flow testing
A test path of a program is selected as per the location of definitions and the uses of variables in the program.

3) Loop testing
It is a white-box testing technique. Loop testing mainly focuses on the validity of the loop constructs.

Four different classes of loops are:
1. Simple loops
2. Concatenated loops
3. Nested loops
4. Unstructured loops