Chapter 8 : System Testing and Implementation - SAKET-SK/Online-Electronic-Store-Project GitHub Wiki

Software testing is a critical element of software quality assurance and represents the ultimate review of specification, design and coding. In fact, testing is the one step in the software engineering process that could be viewed as destructive rather than constructive.


STRATEGIC APPROACH TO SOFTWARE TESTING

The software engineering process can be viewed as a spiral. Initially system engineering defines the role of software and leads to software requirement analysis where the information domain, functions, behavior, performance, constraints and validation criteria for software are established. Moving inward along the spiral, we come to design and finally to coding. To develop computer software we spiral in along streamlines that decrease the level of abstraction on each turn.

A strategy for software testing may also be viewed in the context of the spiral. Unit testing begins at the vertex of the spiral and concentrates on each unit of the software as implemented in source code. Testing progress by moving outward along the spiral to integration testing, where the focus is on the design and the construction of the software architecture. Taking another turn outward on the spiral, we encounter validation testing where requirements established as part of software requirements analysis are validated against the software that has been constructed. Finally we arrive at system testing, where the software and other system elements are tested as a whole.

image


Unit Testing

Unit testing focuses verification effort on the smallest unit of software design, the module. The unit testing we have is white box oriented and some modules the steps are conducted in parallel.

  1. WHITE BOX TESTING

This type of testing ensures that

  • All independent paths have been exercised at least once
  • All logical decisions have been exercised on their true and false sides
  • All loops are executed at their boundaries and within their operational bounds
  • All internal data structures have been exercised to ensure their validity.

To follow the concept of white box testing we have tested each form .we have created independently to verify that Data flow is correct, All conditions are exercised to check their validity, All loops are executed on their boundaries.

  1. BASIC PATH TESTING

The established technique of flow graph with Cyclomatic complexity was used to derive test cases for all the functions. The main steps in deriving test cases were:

  • Use the design of the code and draw the corresponding flow graph.
  • Determine the Cyclomatic complexity of the resultant flow graph, using the formula:

V(G)=E-N+2 or V(G)=P+1 or V(G)=Number Of Regions

Where V(G) is Cyclomatic complexity, E is the number of edges, N is the number of flow graph nodes, P is the number of predicate nodes. Determine the basis of a set of linearly independent paths.

  1. CONDITIONAL TESTING

In this part of the testing, each of the conditions was tested for both true and false aspects. And all the resulting paths were tested. So that each path that may be generated under a particular condition is traced to uncover any possible errors.

  1. DATA FLOW TESTING

This type of testing selects the path of the program according to the location of definition and use of variables. This kind of testing was used only when some local variable were declared. The definition-use chain method was used in this type of testing. These were particularly useful in nested statements.

  1. LOOP TESTING

In this type of testing, all the loops are tested to the limits possible. The following exercise was adopted for all loops:

  • All the loops were tested at their limits, just above them and just below them.
  • All the loops were skipped at least once.
  • For nested loops, test the innermost loop first and then work outwards.
  • For the concatenated loop, the values of the dependent loops were set with the help of the connected loop.
  • Unstructured loops were resolved into nested loops or concatenated loops and tested as above.

Each unit has been separately tested by the development team itself, and all the input has been validated.