Software Testing

Vaidhyanathan S M
Nerd For Tech
Published in
4 min readJan 4, 2021

--

In the previous article we discussed about the need for Software Development Standards and the various processes involved in the Software Development Life Cycle. In this article we are going to cover in depth about software testing. If you haven’t read the previous article, then have a look at it and come back here.

What is Software Testing ?

Software testing is the process of evaluating the working of software against various parameters and finding bugs and errors in the code written by the development team. The job of software testers is to validate the software against various test cases and ensure that the functionalities implemented are in-line with the requirements specification.

Courtesy: ph.vector

There are various types of software testing:

  1. Unit testing
  2. Integration testing
  3. Regression testing
  4. Alpha testing
  5. Beta testing
  6. System testing
  7. Stress testing
  8. Performance testing

Unit Testing

This type of testing focuses on smallest unit of the software and individual units or group of interrelated units are tested. Unit tests are typically automated tests that are performed to validate the working of the unit. It is made sure that the component or unit meets the design and specifications and behaves as intended. A unit could be an entire module, a function or a procedure.

Why Unit testing ?

  1. Unit tests help to fix bugs early in the development cycle and save costs.
  2. It helps the developers to understand the code base and enables them to make changes quickly
  3. Good unit tests serve as project documentation.

Some popular Unit testing tools are JUnit, NUnit, JMockit, EMMA, PHPUnit

Courtesy: guru99.com

Integration testing

In Integration testing, the unit tested components are combined to build a program structure according to the design and test the integrated module as a whole. Integration testing is of four types:

  1. Top-down

Top-down integration testing is an integration testing technique used in order to simulate the behavior of the lower-level modules that are not yet integrated.

2. Bottom-up

Bottom-up testing is an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components.

3. Sandwich testing

Sandwich Testing is the combination of bottom-up approach and top-down approach

4. Big-bang testing

Big Bang Integration Testing is an approach in which all software components are combined at once and make a complicated system. This unity of different modules is then tested as an entity.

Some popular Integration testing tools are DBUnit, JMockit1, etc.

Regression testing

Every time a new module is added to the existing system, it is necessary to test system is ensure that it functions as it should even after adding new modules.

For example: In a school management system, consider the teacher module to be already existing and a new module called ‘student’ is added to the system. Now, testing the system as a whole to ensure that the system doesn’t malfunction after the introduction of the new module is absolutely necessary.

Alpha testing

This is a type of validation testing. It is a type of acceptance testing which is done before the product is released to customers. It is typically done by QA team.

In other words, the software testing is done within the organization.

Courtesy: pch.vector

Beta testing

The beta test is conducted at one or more customer sites by the end-user of the software. This version is released for a limited number of users for testing in a real-time environment.

System testing

This software is tested such that it works fine for the different operating systems. It is covered under the black box testing technique. In this, we just focus on the required input and output without focusing on internal working.

This includes functional as well as non-functional testing of the software.

Stress testing

In this type of testing, the software is tested for how it responds to unfavorable inputs given. Typically the software is tested for the test cases that require maximum memory or cause excessive disk requirement.

Performance testing

It is designed to test the run-time performance of software within the context of an integrated system. It is used to test the speed and effectiveness of the program. It is also called load testing. In this, the performance of the system is measured by its ability to handle load.

Hope you enjoyed reading the article!

If you have any queries please post in the comment section below. Connect with me on LinkedIn . Also, if you want to look at my amazing collection of apps developed, don’t forget to check Google Play Store.

Know more about me here.

With that being said, thanks for reading my article and Happy Coding!

--

--

Vaidhyanathan S M
Nerd For Tech

Systems Engineer @TCS | Native Android Developer | Enthusiastic Programmer | Skilled in Python, C/C++, Java, Flutter and Flask.