01 - Testing overview - JUnit

  1. Testing overview

1.1 Objectives of testing

1.2 Software Testing Principles

            1.3 Software Testing Techniques

            1.4 Levels of dynamic testing

            1.5 Test Plan

1. Testing overview

Software testing is the process of analyzing software and identifying of the differences between the existing and required conditions and to evaluate the features of the software.

Testing measures the quality of the developed software. This fact supposes that there are defects in the functionality of the software waiting to be discovered.

Testing should get a high priority during any software development effort.

Most common software problems are:

  • Incorrect implementation of the business rules
  • Weak software performance
  • Incorrect results of data searches
  • Incorrect matching of data
  • Inadequate security controls
  • Confusing or misleading data
  • Incorrect file handling, etc.

Testing can be accomplished manually or by automation. In manual testing the tester has the role of the end-user and try to find bugs or wrong behavior of the software. Manual testing has some stages/levels as:

  • Unit testing
  • Integration testing
  • System testing
  • Acceptance testing

 Manual testing includes also test plan, test cases or test scenarios and exploratory testing.

 Automation testing requires that the tester write scripts and use other software to test the developed software. The test scenarios performed manually are run more times very quickly.

1.1 Objectives of testing

Testing has some objectives. First of all checks if the system meets the requirements and can be executed in the intended environment.

At every execution of a program testing has the intent to find a possible error.

Tests should not be redundant. It has to be neither too simple nor too complex.

Successful tests are those that find a yet undetected error.

The main purposes of the software testing are:

  • Verification
  • Validation
  • Defect testing

Verification ensures that the software system meets all the functionality (done by developers). Verification includes checking for documentation, code review, etc. It is known also as static testing.

Validation testing demonstrates that the software meets the requirements of the system customer (done by the testers). It is known also as dynamic testing.

The goal of defect testing is to discover defects in developed software. Tests show the presence not the absence of the defects.

1.2 Software Testing Principles

Testing a software means trying to make that software fail. Faults have to be found not to be corrected with testing.

Tests have not to replace specifications. Specifications can produce tests but tests cannot generate specifications.

The process of determining the success or failure of the tests must be automatic process. Manually investigating the results is less practical.

The testing process must include both manually and automatically produced test cases.

Testing should not be associated with intuition. The testing strategies should be evaluated through objective estimation.

1.3 Software Testing Techniques

Static Testing

This technique is done without executing the code. The requirements, design and test cases are reviewed and the possible errors are eliminated. The code is analyzed by tools in order to find defects. This method can evaluate both web or non-web applications and can detect defects that cannot be seen through dynamic web testing.

Example of defects found by tools:

  • Unreachable code or dead code
  • Programming standard violations
  • Duplications
  • Complexity

White Box Testing

Testing is conducted on the source code by developers to check if the source code is working as expected or not.

This type of testing is very economical and very helpful to reduce the defects as early as possible.

Black Box Testing

This type of testing is conducted by test engineers or experts from end-user perspective in order to check whether the application is working according to customer requirements.

Functional requirements of the developed software are covered in black box testing. The objective of the black box testing is the completeness of the customer business requirements coverage.

Gray Box Testing

Gray box testing represents the method of combination of both white box testing and black box testing. The responsible tester for gray box testing has limited access of code. He has knowledge of system and designs test cases or test data based on system knowledge.

For example, for a web application where the validation is made on the client side ( javascript ) the systems can be affected when the javascript is disabled and the server get an invalid email

Like us on Facebook