9 Types of Testing Every Tester Should Know

There are many test types available “more than 100 types”, in this article we will focus on the most important and most widely-used testing types.

Functional testing

First, we will talk about the difference between functional testing and non-functional testing. Any test that we perform can be either a functional test or a non-functional test.

Functional testing involves tests that evaluate functions that the system should perform. The functions are “What” the system should do. So if we are testing the login functionality, functional tests can be:

  • Verifying login using a valid username and password
  • Checking that the forget password button works normally
  • Verify the remember me functionality

Non-functional testing

Non-functional testing on the other hand evaluates characteristics of the system that are mostly measured using ranges. Non-functional testing is the testing of “How well” the system behaves. So if we are testing the login functionality, non-functional tests can be:

  • Verify that the login page has a good design (Usability testing)
  • Verify the behavior of the system when multiple concurrent users login to the system simultaneously (Load testing)
  • Verify that user data are encrypted and can’t be accessed by hackers “Security testing”

Another way to classify tests is to differentiate between black box testing and white box testing.

Black Box Testing

Black-box testing tests the software without knowledge about the internal structure of the system. We can apply black-box testing on both functional and non-functional testing.

So, if you test the login functionality without access to the code that is written for the functionality, this is considered black-box testing.

White Box Testing

On the other hand, white-box testing is based on the internal structure of the test object. So if you provide input to the login module while monitoring what happens inside the code based on the provided input, this is white-box testing. If you apply white-box testing to the code, you must understand the programming language that is used to build the application.

Functional, non-functional, black-box & white-box testing are types of dynamic testing because, in all these types, input is provided to the system.

Dynamic Testing

The third way to classify software testing is to distinguish between dynamic testing & static testing. Like we said earlier, dynamic testing involves providing input to the software and monitoring the output.

Static Testing

Static testing doesn’t involve any type of input provided to the system, an example of static testing is the manual review of requirements, user stories, design, or code.

The next three testing types are related to changes that are applied to the software. So let’s discuss each one of them and try to understand the similarities and differences between them.

Retesting (Confirmation Testing)

When you find a defect and report it to the developer, he should begin working on solving this defect. After the developer changes the status of the defect to fix it, you should retest the same scenario that caused the defect to occur again and ensure that the defect is solved. If the defect is solved, you change its status to approved, if it still exists in the software, you reassign it again to the developer so that he debugs it. So retesting or confirmation testing is testing of a particular bug after it has been fixed.

Regression testing

Regression testing is similar to retesting but the difference is that in regression testing you test unchanged areas. You might wonder why do we test unchanged areas of the software? They should have been already tested before.
The reason that we retest unchanged areas after modifications are made to the software is that they may be affected by changes that are applied to other parts of the software. Regression testing is an activity that consumes a lot of resources and time, this is why many organizations try to automate as many regression tests as possible.

Smoke Testing

Smoke testing is used once a new build is developed to ensure that the new build is stable or not. It consists of a minimal set of tests to test the main functionalities of the new build. If the smoke tests are passed, this doesn’t mean that the build is accepted. This just means that we can continue and execute the rest of the tests which are more thorough and sophisticated. If the smoke tests fail, the build is rejected and it is not accepted again until the smoke tests are passed.

Latest Posts