Blog Categories

Blog Archive

Essential Stages of Software Testing

May 07 2019
Author: v2softadmin

Testing is an important stage of Software development life cycle (SDLC).

Whenever a software or application is developed, it is imperative to ensure that it is free of bugs and errors so that it functions in a hassle-free manner. Testing is performed on the application to detect bugs or errors in it.

Quality control refers to ensuring that developed software meets the specified requirements. Testing can be understood as a part of the Quality control process which comprises activities that identify bugs/errors/defects in software.

There are professional companies to whichoutsourcing testing is possible. The benefit of hiring such companies is that they have the relevant experience and expertise and perform the test in a neutral environment. Independent verification, and validation is key to building software that works for the purpose it was designed.

There different types of tests used for identifying bugs in software:

First, the tester needs to identify whether the application requires automation testing or manual testing will suffice.

Manual Testing:

It is a testing process for detecting loopholes in a process without using tools or automation scripting.

Automated Testing:

To increase test coverage, enhance accuracy, and save time and money, automated testing is used. This is a testing method where specialized tools are used for conducting tests on the software to verify the actual outcome against the expected result. In addition to testing the results, these tools also enable test bed creation with sample test data, GUI interaction, defect logging, etc.

However, automating everything is not always possible or feasible. It is recommended that the users analyze applications where automated testing will be a worthwhile option. It works well for transactions that use multiple registrations or login forms or in areas where many users are likely to access the software.

The process of automated testing

Step 1:Areas that require automated testing are identified

Step 2:Select testing tool to match test objectives

Step 3:Test scripts are written

Step 4:Test suites are developed

Step 5:Test scripts are executed

Step 6:Result reports are generated

Step 7:Any performance issue or bugs in the software are identified

For automating applications, frameworks that are popularly used are:

  • Data-driven automation framework
  • Keyword driven automation framework
  • Modular automation framework
  • Hybrid automation framework

Testing methods can be White Box or Black Box testing:

White Box testing

White box testing is a comprehensive testing method where the tester checks the logic and the application code. The tester needs to have knowledge of the code and have the ability to analyze which part of the code has an issue.

Black Box testing

Black box testing is conducted by a tester when he is unaware of the architecture and working of the application. The tester interacts with the user interface and provides the inputs and checks the output of the application for bugs or any issues.

Every application or system is built by combining smaller units. It is essential to ensure that each unit is free of bugs before the units are integrated. For this unit testing is conducted.

Unit Testing

Performed on individual units of source code assigned areas. It is performed to ensure that individual parts of the code are functional and fulfill the stated business requirements.

Once the developer is satisfied with the functionality of individual units, these units are integrated to form the system. It then becomes essential to ensure that the combination of units works in a seamless manner. Therefore, after integrating, system integration testing is performed.

System Integration Testing:

It is a testing technique which is applied on a subset of the system to verify the compliance of the system against specified parameters. It can be understood as testing all the parts of the application in combination to ensure that they function in the right way.

Various levels of system integration testing are:

Intrasystem testing

 

It is low-level testing that focuses on combining various modules for building the system.

Intersystem testing

Intersystem testing entails testing the integration points for a single application with multiple hosting at different locations so as to ensure the right flow of data across each location.

Pairwise testing

It is a testing method used for testing various possible discrete combinations of the different parameters so as to ensure seamless functioning of the combinations.

Techniques used for system integration testing include:

Top-down Integration testing

In this type of integration, the top-level modules are tested at the beginning. This is followed by testing of less complex modules.

Bottom-up Integration testing

In this case, unit testing is performed first. This is followed by building combinations of units called modules and testing them.

Sandwich Integration testing

Sandwich integration testing is a method that combines top-down and bottom-up integration methods, thereby leveraging the benefits of both these methods. It works in two parts simultaneously. The bottom-up testing starts in the middle layer and moves upwards towards the top layer while the top down integration testing starts at the middle layer and moves towards the lower levels.

Big Bang Integration testing

In this type of testing technique, all units are linked to form a complete system and the test performed simultaneously on all of them.

If system integration testing shows that the combination of units is working fine, it becomes important to ensure that the data flows in a smooth manner between various components

Interface Testing:

This testing is conducted to ensure that data and control between different components of the system take place in a hassle-free manner.

After the various components of the system are tested, the complete system needs a check to ensure that everything is in order.

System Testing

System testing is performed on the entire system to check if it meets the required Quality standards. This test helps ensure that the application meets both the business needs and the application architecture. This test confirms that the application meets functional and technical specifications.

It is conducted by a team of testers independent of developers to ensure an unbiased assessment of the quality. System testing estimates the end-to-end system of its functionality and non-functionality aspects.

Acceptance Testing

This test is conducted by the Quality Assurance team to ensure that the software meets the predetermined specifications and fulfills the client’s requirements. The application is tested with the help of a set of pre-written test scenarios and test cases.

Acceptance test not only checks the application for minor errors, but also for bugs that could cause system crashes or other major performance issues.

Performance Testing:

This type of testing is performed to check the system for its quality attributes such as scalability, reliability, and resource usage. It is a non-functional test for estimating the responsiveness and stability of the system under various workloads. It is conducted to assess the bottlenecks when the system is functioning rather than finding bugs in the system.

Techniques used for performance testing are:

Load Testing

Load testing assesses the behavior of the system under a specific load. It enables monitoring of business-critical transactions such as load on database, application server, etc.

  • Stress Testing

Stress testing helps determine system performance if the current load exceeds the expected maximum.

  • Soak Testing

Soak testing is performed to assess the system parameters under sustained use for expected load.

  • Spike Testing

Spike testing is conducted to gauge whether the system is capable of sustaining workloads.

  • Volume Testing

It is a non-functional type of performance testing. This test is conducted by subjecting the software to a huge volume of data.

After all the other criteria of the application are satisfied, it now becomes necessary to make it safe from security risks with the help of security testing.

Security Testing:

This testing technique is conducted to ascertain if data is protected by the system and its functionality maintained as designed.

It verifies the following principles:

  • Confidentiality
  • Integrity
  • Authentication
  • Authorization
  • Availability
  • Non-repudiation

Techniques used for security testing are:

  • Injection
  • Broken Authentication and Session Management
  • Cross-site scripting (XSS)
  • Insecure Direct Object References
  • Security Misconfiguration
  • Sensitive Data Exposure
  • Missing Function Level Access Control
  • Cross-Site Request Forgery (CSRF)
  • Using Components with Known Vulnerabilities
  • Unvalidated Redirects and Forwards

Application security testing has become the need of the hour with the rise in cyber-crime to ensure that your application is safe from hacks and cyber-attacks.

Code Review

Code review is a systematic examination process conducted to detect and eliminate vulnerabilities such as memory leaks and buffer overflows.

Penetration Testing

The objective of penetration testing is to identify and document any security lapses in the system.

This is where V2Soft steps in!

Testing a software requires an in-depth knowledge and experience of the software field. V2Soft has a team of expert testing professionals who you can help you with your testing needs. Over the years we have established ourselves as a Testing Centre of Excellence providing services to numerous clients globally.

Let’s Talk!Contact Us to have one of our experts reach out and discover how we can help you with your challenges.