Course Content
Introduction to Manual Testing & QA in Web Development
Introduction to Manual Testing & QA in Web Development
Types of Software Testing
Intoduction
There are many different types of Software Testing, each of which is specific to testing a certain domain of the application.
The two main dichotomies of Software Testing are Functional and Non-Functional testing.
Functional Testing encompasses various testing methods aimed at testing the functionality of the program and ensuring that all the features of the application work as expected. This includes Unit Testing, Integration Testing, System Testing, and a few others, all of which will be explained in the upcoming sections.
Non-Functional Testing methods test aspects of the application beyond its functionality. This may include testing for usability, accessibility, responsiveness, compatibility, security, and maintainability.
The following diagram summarizes how software testing types can be categorized in a hierarchy:
Testing Approaches
Apart from the above mentioned testing methods, we need to understand a few additional terminologies which are commonly used in Software Testing. There are three additional groups under which various types of tests are categorized, namely Blackbox, Greybox, and Whitebox Testing.
Types of Software Testing
Additionally, Software Testing is generally divided into two parts: Manual Testing and Automation Testing.
Manual Testing
Manual Testing is the process of manually executing test cases by using the application as a user. Minimal or no code is required for Manual Testing. It may involve using helper tools to perform certain kinds of tests, which we will explore in the upcoming sections. Most commonly, a Manual Tester doesn't need to know about the inner workings of the code, and hence Manual Tests are usually either a Black Box or Grey Box, however, it is possible for the tests to be White Box.
Automation Testing
Automation Testing is the process of performing tests primarily by writing code. The tests are executed through code instead of manually using the program. This can involve writing code to automate the process of using or feeding input to the application, or writing code to verify the structure of the code. Automation Testing is typically Greybox or Whitebox since in most cases, writing effective automated tests requires some knowledge of the inner workings of the application.
Understanding Terminologies
All of these terms can be confusing at first, however, we can understand them with an example.
Let's consider Unit Testing. Although Unit Testing will be explored in detail in the upcoming sections, we will briefly look at it to understand the different terminologies.
In Unit Testing, units or components of a software application are tested in isolation to ensure they behave as expected. These units can be functions, methods, classes, modules, or any other discrete and testable part of the software.
Consider we have a web application that has a login / registration system. The tester has to check the functionality of the registration system's input fields, which can be considered as a unit since it's one specific part of the application, dedicated to performing a specific operation - that is, taking input from the user. Hence it is referred to as a Unit Test.
We know that Unit Tests check the functionality of the application, therefore it is definitely a Functional Test.
To decide whether it's Blackbox, Greybox, or Whitebox, we need to know more about the testing approach.
In each of the above three cases, the way the tester is performing tests decides whether they are Manual or Automation Tests. If the tester is performing tests through code or some automation tool then it will be considered as Automation Testing, otherwise, it will be categorized as Manual Testing.
Thanks for your feedback!