This article offers a brief and direct approach to a series of key aspects around software testing. Here you can find information regarding the most common methods, levels and types of testing, including useful tips on test automation.

Software testing methods

  • Black Box Testing is a software testing method in which the internal structure / design / implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, though usually functional. Test design techniques include: Equivalence partitioning, Boundary Value Analysis, Cause Effect Graphing.
  • White Box Testing is a software testing method in which the internal structure / design / implementation of the item being tested is known to the tester. Test design techniques include: Control flow testing, Data flow testing, Branch testing, Path testing.
  • Gray Box Testing is a software testing method which is a combination of Black Box Testing method and White Box Testing method.
  • Agile Testing is a method of software testing that follows the principles of agile software development.
  • Ad Hoc Testing is a method of software testing without any planning and documentation.

These methods can be used in various software testing levels  and types. Testing levels are basically to identify missing areas and prevent overlap and repetition between the development life cycle phases. In software development life cycle models there are defined phases like requirement gathering and analysis, design, coding or implementation, testing and deployment.  Each phase goes through the testing. Hence there are various levels of testing.

Software testing levels

  • Unit testing: It is basically done by the developers to make sure that their code is working fine and meet the user specifications. They test their piece of code which they have written like classes, functions, interfaces and procedures.
  • Component testing: It is also called as module testing. The basic difference between the unit testing and component testing is in unit testing the developers test their piece of code but in component testing the whole component is tested. For example, in a student record application there are two modules one which will save the records of the students and other module is to upload the results of the students. Both the modules are developed separately and when they are tested one by one then we call this as a component or module testing.
  • Integration testing: Integration testing is done when two modules are integrated, in order to test the behavior and functionality of both the modules after integration.
  • Component integration testing: In the example above when both modules and components are integrated then the testing done is called Component integration testing. This testing is basically done to ensure that the code should not break after integrating the two modules.
  • System integration testing: System integration testing (SIT) is a testing where testers basically test that in the same environment all the related systems should maintain data integrity and can operate in coordination with other systems.
  • System testing: In system testing the testers basically test the compatibility of the application with the system.
  • Acceptance testing: Acceptance testing are basically done to ensure that the requirements of the specification are met.
  • Alpha testing: Alpha testing is done at the developer’s site. It is done at the end of the development process.
  • Beta testing: Beta testing is done at the customers site. It is done just before the launch of the product.

This section describes the different types of testing that may be used to test a software during SDLC (Software Development Life Cycle).

Manual Testing

Manual testing includes testing a software manually, i.e., without using any automated tool or any script. In this type, the tester takes over the role of an end-user and tests the software to identify any unexpected behavior or bug. There are different stages for manual testing such as unit testing, integration testing, system testing, and user acceptance testing.

Testers use test plans, test cases, or test scenarios to test a software to ensure the completeness of testing. Manual testing also includes exploratory testing, as testers explore the software to identify errors in it.

Automation Testing

Automation testing, which is also known as Test Automation, is when the tester writes scripts and uses another software to test the product. This process involves automation of a manual process. Automation Testing is used to re-run the test scenarios that were performed manually, quickly, and repeatedly.

Apart from regression testing, automation testing is also used to test the application from load, performance, and stress point of view. It increases the test coverage, improves accuracy, and saves time and money in comparison to manual testing.

What is Automation?

It is not possible to automate everything in a software. The areas at which a user can make transactions such as the login form or registration forms, any area where large number of users can access the software simultaneously should be automated.

Furthermore, all GUI items, connections with databases, field validations, etc. can be efficiently tested by automating the manual process.

When to Automate?

Test Automation should be used by considering the following aspects of a software:

  • Large and critical projects
  • Projects that require testing the same areas frequently
  • Requirements not changing frequently
  • Accessing the application for load and performance with many virtual users
  • Stable software with respect to manual testing
  • Availability of time

How to Automate?

Automation is done by using a supportive computer language like VB scripting and an automated software application. There are many tools available that can be used to write automation scripts. Before mentioning the tools, let us identify the process that can be used to automate the testing process:

  • Identifying areas within a software for automation
  • Selection of appropriate tool for test automation
  • Writing test scripts
  • Development of test suits
  • Execution of scripts
  • Create result reports
  • Identify any potential bug or performance issues


By João Carlos Pereira | Market Director | Via LinkedIn Pulse