Testing Approaches and Levels in Software Engineering

Testing Approaches and Levels in Software Engineering

A test needs to check if a webpage can be opened in Internet Explorer. This can be easily done with manual testing. But to check if the web-server can take the load of 1 million users, it is quite impossible to test manually. There are software and hardware tools which helps tester in conducting load testing, stress testing, regression testing.

Testing Approaches

Tests can be conducted based on two approaches –

  • Functionality testing
  • Implementation testing

When functionality is being tested without taking the actual implementation in concern it is known as black-box testing. The other side is known as white-box testing where not only functionality is tested but the way it is implemented is also analyzed. Exhaustive tests are the best-desired method for a perfect testing. Every single possible value in the range of the input and output values is tested. It is not possible to test each and every value in real world scenario if the range of values is large.

Black-box testing

It is a software testing method in which the internal structure or design or implementation of the item being tested is known to the tester. It is carried out to  the internal structure or design or implementation of the item being tested is not known to the tester that is test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case, has a set of input values and respective desired results. On providing input, if the output matches with the desired results, the program is tested ‘ok’, and problematic otherwise. In this testing method, the design and structure of the code are not known to the tester, and testing engineers and end users conduct this test on the software.

Black-box testing techniques:

  • Equivalence class – The input is divided into similar classes. If one element of a class passes the test, it is assumed that all the class is passed.
  • Boundary values – The input is divided into higher and lower end values. If these values pass the test, it is assumed that all values in between may pass too.
  • Cause-effect graphing – In both previous methods, only one input value at a time is tested. Cause (input) – Effect (output) is a testing technique where combinations of input values are tested in a systematic way.
  • Pair-wise Testing – The behavior of software depends on multiple parameters. In pairwise testing, the multiple parameters are tested pair-wise for their different values.
  • State-based testing – The system changes state on provision of input. These systems are tested based on their states and input.

White-box testing

It is conducted to test program and its implementation, in order to improve code efficiency or structure. It is also known as ‘Structural’ testing. In this testing method, the design and structure of the code are known to the tester. Programmers of the code conduct this test on the code. The below are some White-box testing techniques:

  • Control-flow testing – The purpose of the control-flow testing to set up test cases which covers all statements and branch conditions. The branch conditions are tested for both being true and false, so that all statements can be covered.
  • Data-flow testing – This testing technique emphasis to cover all the data variables included in the program. It tests where the variables were declared and defined and where they were used or changed.

Q Distinguish or deference between Black Box Testing and White Box Testing

Black Box TestingWhite Box Testing
In this software testing in which the internal structure or the program or the code is hidden and nothing is known about it.In this testing the software in which the tester has knowledge about the internal structure or the code or the program of the software.
It is mostly done by software testers.It is mostly done by software developers.
No knowledge of implementation is needed.Knowledge of implementation is required.
It can be referred as outer or external software testing.It is the inner or the internal software testing.
It is functional test of the software.It is structural test of the software.
This testing can be initiated on the basis of requirement specifications document.This type of testing of software is started after detail design document.
No knowledge of programming is required.It is mandatory to have knowledge of programming.
It is the behavior testing of the software.It is the logic testing of the software.
It is applicable to the higher levels of testing of software.It is generally applicable to the lower levels of software testing.
It is also called closed testing.It is also called as clear box testing.
It is least time consuming.It is most time consuming.
It is not suitable or preferred for algorithm testing.It is suitable for algorithm testing.
Can be done by trial and error ways and methods.Data domains along with inner or internal boundaries can be better tested.
Example: search something on google by using keywordsExample: by input to check and verify loops
Types of Black Box Testing: 
 A. Functional Testing 
 B. Non-functional testing 
 C. Regression Testing 
Types of White Box Testing: 
 A. Path Testing 
 B. Loop Testing 
 C. Condition testing