Loading

Concurrent testing


What is concurrent testing?

Concurrent testing is performed to test the stability of a software product when the multiple number of users access and utilise its services, at a same time. This helps in getting a rough idea of the problems arising out of multiple usages such as increased response time, crashes, deadlocks and throughputs.

Also known by the name of "multi-user testing", the basic purpose of carrying out the concurrent testing, over a software product, is to evaluate and assess its concurrency quality, so as to deal with the load of multiple users, accessing and using the software product, simultaneously, in an efficient and effective manner.

What's the need for concurrent testing?

The need arises from the use of concurrent programs. These programs run a number of processes simultaneously and are involved in sharing of information. This sharing of information is responsible for partial control of order of execution of tasks in the hands of the program. If there happens to be any change in the sequence of execution of these processes relating to the same data, then it may produce incorrect or indeterminate results.

This indeterminate nature of results may result in repeatability of errors not only at the software development stage but also at the client side for concurrent programs. This also discourages debugging activities as it will introduce more variations and result in additional problems. Concurrent testing ensures the reliability of concurrent programs when they are run repeatedly under identical conditions with different results.

How to perform it?

The procedure for performing the concurrent testing, is similar, to that of manual testing methodology. It, generally, involves following steps, in a sequential manner, to carry out the concurrent testing.

  • Outlining, the need & scope, for performing concurrent testing.
  • Studying and analyzing the design document.
  • Test cases are designed and test environment, is being set up.
  • Two individuals are assigned and are seated adjacently, to execute the test process/cases, simultaneously, with consulation to each other.

Techniques in concurrent testing:

  • Code reviewing:

    This involves checking of embedded codes and their structures.

  • Static Analysis:

    This covers an evaluation of the entire coding structure before they are executed.

  • Random testing:

    This method increases the coverage area by randomizing test inputs. At a time 4-5 threads are tested. This also includes better structuring of programs to limit concurrent interactions.

  • Fuzz testing:

    More like a hit and trial method, this approach involves randomly feeding large amounts of incorrect data and then wait to monitor if the system comes out with bugs.

  • Con test:

    This test covers the deficiencies of unit testing and removes synchronization faults in multi threaded JAVA programmes.

Merits

Below mentioned are, some of the advantages,of using concurrent testing.

  • Effective technique, to evaulate a system, to identify and deal with certain issues, such as, data race, data corruption, dead lock, live lock, and many such problematic issues.
  • Ensures, the reliability and robustness among the software applications.

Challenges of concurrent testing:

  • Building test cases for finding loopholes in concurrent programs is no child's play and requires the help of hardcore programmers.
  • Likelihood of introducing new errors in the application code is pretty high during the course of concurrent testing.

Although, concurrent testing, may not be required, for each and every software product, keeping in account, the scope of its simultaneous use, by the number of users, but is a must requirement, for the system, equipped with the concurrency features.