These are probably the mostly used testing techniques:

Black Box Testing

Black box testing is the testing of methods/functions/procedures without knowing what is in the internal code. You would only know what to input, and what the expected outcomes should be. So to speak, no knowledge of the programme/application is required to do this kind of testing.

Advantages

  • The testers do not require any knowledge on the product being developed
  • The testing is done from the user's points of view
  • The programming and testing are done by different persons

Disadvantages

  • Testing all possible input streams is unrealistic because it would take a lot of time.
  • May leave a lot of things untested due to the fact that the tester does not know what happens in the code inside the method
  • Test cases may be hard to design due to lack of knowledge from the tester's side in black box testing

White Box Testing

White box testing is known as clear box testing and glass box testing. The technique in white box testing is to have a very good knowledge of the internal code. The testers need to know what the product does, what the code really does because they need to examine the output values as well as the values within the methods/procedures/function.

If the tester, does not know the code well, this kind of testing will be a failure and not accurate at all. It is ideal to do this kind of testing during the Unit Testing phase when the coding is finished.

Advantages:

  • Helps in making the code better and more efficient.
  • Should reveal errors/bugs in code

Disadvantages:

  • The tester needs to not only have a good knowledge of the code, but needs to view the source code while testing.
  • Cost: A skilled tester is required

In order to have good testing though, it is advised to make use of both Black box and White box testing

Gray Box Testing

Gray Box Testing is the combining of black box, and white box testing. It involves having access to internal data structure and algorithms, but the testing is still done at a user's level, therefore as black box testing. It is said to be mostly used in web services applications since the Internet is quite stable.

Advantages:

  • The testers do need to have the source-code while testing.

Disadvantages:

  • The testing is done based on limited knowledge of the internal code.
  • Difficult to resolve bugs as the internal code is not known and it is not easy to determine from where the problems are coming  

Unit Testing

Unit testing is when a tester, tests every method/function/procedure seperately. This is done to make sure that the most vital methods work as expected.

Once the methods are tested one after the other, these are then put in groups according to what they do to form components. Then, these are tested using Integration Testing. This will be tackled in the next part.

Advantages:

  • Improves design
  • Reduce cost of change because  bugs are seen instantly

Disadvantages:

  • Time consuming.
  • Testers need alot of patience.
  • Not recommended at the beginning of the development.The methods/procedures/functions that were tested seperately in Unit Testing are combined and tested as a group. Integration testing is mostly use to check the performance, reliability of a product and to check whether the requirements have been met.

Integration Testing:

 

Advantage:

  • It is important to test in groups before testing the application as a whole because you can find code problems earlier in the project.

Disadvantages:

  • Boring, monotonous
  • Time consuming