Software Testing

What does the terminology “software testing” refers to?

Software testing is the process of evaluating the software product, in order to assess the level of the quality. Generally, it is the methodology, to verify and validate the software product, against the functional and business requirements that were decided and specified, prior to the software development process.

It is one of the significant phases of the software development life cycle that ensures the delivery of best quality software, to its end users or customers, in line with matching their expectations.

There are large number of people, which are being victimised by the myths, associated with software testing, and consider testing, inferior to the development process. However, the truth is very much different. Testing phase is as important as the development phase. Similar, to the development process, testing is a wider concept that encompasses numerous types of activities.

Let’s go through the concept of software testing, in detail.

Purpose of testing

Before going through the mechanism of a process, it is desirable, to know the primary purpose of that particular process.

The main motive, behind software testing, is to attain the maximum level of quality, in a software product. The factor ‘quality’ is inversely proportional to the quantity of bugs or defects, present in the software product. Higher the bugs, lower will be the quality and vice-versa.

Therefore, the goal of testing, may be interpreted as, the verification of software product quality by the methodical elimination of bugs and defects.

After all, testing is done, with the vision of delivering the software product of maximum quality, to the client or stakeholders or customer, in order to satisfy their needs and expectation.

Software Testing Life Cycle (STLC)

Yes, you have read the valid term, which exists and is very much similar to the software development life cycle. Performing testing over the software product, needs the implementation of a proper lifecycle, to produce effective results.

Software Testing Life Cycle defines the complete process in an organized and planned manner, from start to finish, to carry out the testing activity. The various phases in the testing life cycle are:-

Requirement

Involves gathering of the requirements such as functional or business requirements, against which, the testing will be performed.

Planning & Analysis

This phase deals with the analysis & feasibility study of the requirements, and accordingly, defining and preparing the plan and strategy, to carry out the testing activity.

Designing

During this phase, test cases are designed and prepared, based on the gathered requirements. These test cases are then used for the actual execution of testing activities.

Environment Setup

This phase requires the setting up of conditions or factors in order to replicate the circumstances which perfectly simulate the real world scenarios for testing the product.

Actual testing activity is performed on the software product, with help of prepared test cases and testing tools.

Reporting

Summary of the whole testing process, along with the defects, explored during the testing, are reported for the stakeholders involved i.e the client side.

How to perform testing?

Testing of the software product may be carried out, either manually or with the aid of automation.

Manual testing

It is a form of software testing, which does not depend on the use of automation for detection of bugs or errors in the software product. In the manual execution, test plan documentation acts as a tool or manual, to guide and direct the testing process, in order to ensure complete test coverage.

Testing types, covered under manual testing are

  • Black Box Testing
  • White Box Testing
  • Unit Testing
  • System Testing
  • Integration Testing
  • Acceptance Testing

Automated Testing

It is an effective and alternative approach to manual testing, which is well suited for performing testing, repeatedly, over a longer period of time. This testing approach makes use of pre-defined test scripts and automation tools, to carry out testing. Regression testing may be considered in the category of automated testing.

Both manual and automation have pros and cons. It is always recommended, to perform testing, using a mixed blend of these two forms, to generate, effective and efficient test results.

Levels of Testing

Usually, testing activity is performed at different levels of development process, using different testing techniques, which may be detailed, as under

  • Unit Testing

Also known by the name of component testing, this testing is used to examine the proper functioning of each component belonging to the software product under development, before integrating them, to form the system.

  • Integration Testing

This is done to ensure the proper interaction, compatibility, reliability and functioning of all the modules in aggregate or combinatorial form.

  • System Testing

It is done, to validate the functioning of the wholly integrated system or software product, against the specified business requirements.

  • Acceptance Testing

The purpose of acceptance testing, is to check the compliance of the software product, with its business specifications and meeting of user requirements.

Methods

The process of software testing, consists of different types of testing methodologies, depending upon various aspects, such as

  • Verification and Validation
  • Static Testing and Dynamic Testing
  • Functional Testing and Non-functional Testing
  • Positive Testing and Negative Testing
  • Black-Box Testing and White-Box Testing

Types of testing

Did you know that there are more than 100 testing types, existing in the field of software testing, for various purposes. Below are given some of the most commonly used variants of software testing:-

  • Acceptance Testing
  • Agile Testing
  • Adhoc Testing
  • Alpha Testing
  • Beta Testing
  • Functional Testing
  • Non-Functional Testing
  • Black Box Testing
  • White Box Testing
  • Gray Box Testing
  • Compatibility Testing
  • Installation Testing
  • Endurance Testing
  • Exploratory Testing
  • Integration Testing
  • Component Testing
  • System Testing
  • Load Testing
  • Localization Testing
  • Globalization Testing
  • Regression Testing
  • Smoke Testing
  • Sanity Testing
  • Security Testing
  • Scalability Testing
  • Performance Testing
  • Stress Testing
  • Usability Testing
  • Volume Testing

Test Artifacts

The informative attributes, formed during the phase-wise course of software testing, related to documentation work, are called test artifacts. They comprises of the following:

  • Test Plan

It is the most basic plan of action, enlisting the different tasks and objectives, related to the execution of testing.

  • Test Case

A test case is a set of conditions, data and expected results, built to validate compliance of a software product functionality against the requirements for which it is developed.

  • Traceability Matrix

It is a method, to collect and represent the test-case based requirements, in a tabular document format.

  • Test Report

The observation made and the conclusions derived from the execution of test cases, are recorded, to form a useful document called test report.


Originally published at www.professionalqa.com.