Software test planning,strategy and types

Software Test Planning

System test planning:

System testing is very expensive.Half the system development budget may be spent on testing.Careful planning is required to control testing costs.
Test planning is related with forming standards for the testing process rather than explanning product tests.Test plans are not only the management documents.Test plan also gives us information to staff who are responsible for affirming that suitable hardware and software resources  are present to the testing team.
Test plan should consist of significant amounts of contigency so that slippages in design and implement may have no effect and staff assigned to testing can be used in other activities.


Testing Strategies

A testing stretegy is a general way to the testing process.Different testing strategy may be used according to the type of system to be tested and the development process used.The testing stretegies are as:
  • Unit testing
  • Top down testing:Top down testing where testing begins with the most abstract components and moves to end.
  • Regration Testing:It is the re-execution of some subset.
  • Bottom up testing:Where the testing starts with the basic components and moves to begining.
  • Thread testing:Which is used for systems with various processes where the processing of a transaction threads is path through these processes.
  • Smok Testing:It is commonly used when decrease fold together software products are being developed.
  • Stress Testing:Which depends on stressing the system by going beyond its stated limits and hence how well the system can cope up with overload situations.
Note:Large systems are normally tested using a combination of these testing straitegies rather than any single way.

Explanation of Types of Testing:

There are mainly three types of testing.which is listed below,
types of software testing

  1. Unit Testing:Unit testing give stress on verification of the smallest unit of software design i.e. the software component and module with the help of the component level design description as a guide,important controls path are tested to findout errors within the boundary of the module.The unit test is white box oriented and the step can be performed in parrellel for various components.The module interface is tested to affirms that information properly flows into and out of the program unit under test.
unit testing image

       2)Integration Testing:Integration testing is a well organized technique for constructing the program structure. while at the same time performing tests to find out errors envolved with interfacing . The aim is to take unit tested components and build a program structure that has been stated by design.Acollection of errors are occured when complete program is tested as a whole.Correction is difficult because isolation of causes is difficult by the large expansion of complete program.Once the errors are corrected ,new once appear and the process continuous in a endless loop.Incremental integration is the contrast of the big bang way.The program is built and tested in small increments.As a result errors are simple to separate and correct.The interfaces are more likely to be tested completely and a organized test way may be tested.
integration testing image
   3)System Testing:system testing is made up of the following steps:
  • Program Testing:A program shows the logical elements of a system.for a program to run comfortably,it must compile and test data correctly and combines in properly with other programs.Obtaining an error free program is the responsibility of the programmer.
  • String Testing:Programs are related to one another and communicate in a total system.Each program is tested to view whether it act according to related programs in the system.
  • System testing:System testing is designed to detect error that were not found in previous tests.This consist of forsed system failure and validation of the total system as it will be implemented by its users in operational environment.
  • System Documentation:All design and test documentation should be approved and inputed in the library for the future reference.The liabrary is the central place for maintainance of the new system.
  • Thread testing:Thread testing is a testing strategy which was derived for testing real time systems.It is an event based method where tests are according to the events which trigger system actions.Thread testing is a testing strategy which may be used after processes or objects have been separately tested and combined into sub-systems.
  • Stress testing:Stress testing executes a system in a way that requires resources in abnormal quantity,frequency or volume.
system testing image
ok friends i am discussing what is verification and validation in software construction in my next blog.

Black box and white box testing

BLACK-BOX Testing


Black box testing relies on the specification of the system or modules which is being tested to derive test cases .The system is black-box whose behavior can only be determined by studying its input and the related outputs.
Another name for this is Functional testing because mathematical functions can be specified using only their input and outputs.
black box testing image
Black Box Testing Approach


Problems with black box testing

The key problem for defect tester is to select input that have a high probability of  being member of the set. In many cases,the selection of these test cases based on the previous experince of test engineers.They use domain knowledge to identify test cases which are likely to reveal defects.

Black-Box Testing techniques

There are various Black-Box Testing techniques are available:
  1. Equivalence parttioning techniques: This is black box testing method that decompose the input of a program into classes of data from which test cases can be derived.Test case design for equivalence partitioning is based on an evaluation of equivalence classes for an input condition.If a set of cobects can be linked by relationships that are symmetric,transitive and reflaxive, an equivqlence class is present.An eqivalence class represents a set of valid or invalid states for input conditions.
  2. Boundary value analysis techniqes:For reason that are not completely clear,the large nuber of errors tends to occur at the boundaries of the input domain rather than in the center.It is due to this reason that BVA(Boundary Value Analysis) has been developed as a testing techniques.BVA result in a selection of test cases that exercise bounding values.This is complements of equievalence partitioning.It focusing compleatly on input conditions.BVA derives test cases from the output domain as well.
  3.  Comparision Testing:Comparision testing is a type of black-box testing.when multiple implementations of the same specification have been prouced,test cases designedusing other black box techniques are provided as input to each version of the software.If the output from each version is same,it is assumed that all implementations are correct.If the output is different ,each of the applications is investigated to determine if a defect in one or more versions in responsible for the differece.Comparision testing is not completely safe.

White-Box Testing

White-box testing is a test case design method that uses the control structure of the procedural design to derive test cases. It is also known as Stuctural testing.Using white box testing methods,the software engineer can derive test cases that
  • Guarantee that all independent paths within a module have been exercised at least ones.
  • exercise all logical decisions on their true and false sides.
  • execute all loops at their boundaries and within their operational bounds and 
  • exercise internal data structures to ensure their validity.
white box testing image

Why white box testing

The advantage of structural/white-box testing is that an analysis of the code can be used to find how many test cases are needed to guarantee a given level of test coverage. A dynamic analyser can then be used to measure the extent of this coverage and help with test coverage design.

Path testing:

Path testing a white box testing strategy whose objective is to exercise every independent execution path through the component.If every indpendent path is executed then all statements in the program must have been executed once.All conditional statements are tested for both true and false cases.
The starting point for path testing is a program flow graph.A flow graph consists of nodes representing decisions and edges showing flow of control.The flow graph is constructed by replacing program control statements by equivalent diagrams.
If there are no go to statements in a program.It is a straight forward manual or automatic process to derive its flow graph.
flow of white box testing
Flow of white box testing

Software Testing

Testing


"Software testing is the process of exercising a program with the specific intent of finding errors prior to delivery to the end user."
in another word,
Testing is a collection of events that can be planned in advance and performed systematically.
or,
Software testing is a process of executing a program or application with the intent of finding the software bugs.
or,
Software testing is a process of validating and verifying that software program or application or product,meets the business and technical requirements that guided it's design and development.
software-testing-image-pic
Softwre Testing

Why testing


While performing a software development project, errors can be injected at any stage during development.No techniques is perfact and it is expected that some of the errors of earlier phases will finally manifest themselves in the code. Hence code developed during coding activity is likely to have some requirements errors and design errors in addition to error introdused during coding activity.Testing is the phase where errors reemaining from all the previous phases must be detected.

Process of Testing

Systems should not be tested as a single,monalithic unit except for small programs.Large systems are built out of sub systems which are made up of procedures and functions.The testing process should therefore moved forward in stage where testing is performed incrementaly in parallel with system implementation.
The most widely used testing process made up of five stages:
  1. Unit testing
  2. Module testing
  3. Sub-system testing
  4. System testing
  5. Acceptance testing
The sequence of testing process event is component testing,integration testing then user testing.
As defects are find out at any one stage,they need program modifications to correct them and this may need other stages in the testing ss to be repeated.

testing process

Objective of Testing

A number of rules that can serve well as testing objectives are:
  1. Testing is a process of executing a program with the purpose of finding error.
  2. Agood test case is one that has a high probability of finding an as-yet undiscovered error.
  3. Asuccessfull test is one that uncovers as-yet undiscovered error.
Our objective is to design tests that systematically uncover different classes of errors in minimum
amount of time and effort.

Testing Principal
  1. All tests should be traceable to customer requirement.
  2. Tests should be planned long before testing begins.
  3. The pareto principal applies to software system.
  4. Testing should begin  "in the small" and progress towardstesting "in the large".
  5. Exhaustive testing is not possible.
  6. To the most effective,testing should be conducted by an independent third party.