Software Testing
Published: 2023-10-19 11:16:36

 

> Software testing is the process of evaluating and verifying that an application does what it is supposed to do.

 Testing evaluates the softwares operability, checks for and fixes bugs as and when the software is developed and improves performance and security thereby making it more comfortable for the end users. Although the main benefit of testing is to find errors and defects, it also helps to understand the expected outcome so that the tester can improve the quality of the product.

Software development and testing go hand in hand and software testing can be thought of as the most crucial step in software development life cycle as it improves consistency and performance. 

**Software Testing - then and now:**

Earlier software testing was separated from the development process and was often conducted in the later stage of software development life cycle, after the product was built or executed. It was difficult to fix errors and retest at this stage as it led to time constraint and increased cost.

Now, software testing is a part of the development process and the software developer and testers work side by side, thereby reducing time, errors and cost, as well as increasing the quality of the product. 

Execution of tests right from the early stages of software development and throughout the entire process, streamlines the process and delivers a risk-free and an user-friendly product.

Over the years, software testing has evolved considerably as companies have adopted Agile and DevOps work environments. This has led to faster and more effective testing methodologies. 

**Why is testing important?**

1. Finds defects early and saves money by avoiding extra 
   costs to fix errors in the end product.
2. Improves security of the product as security issues or 
   breaches can be fixed immediately, thereby producing a 
   very secure software.
3. The expected quality of the product can be met by testing 
   the software and making the relevant changes to improve 
   the quality.
4. Increases customer satisfaction. Software is developed 
   with the purpose of customer satisfaction. Different 
   customers have different requirements. With the help of 
   testing it is possible to know the expectations of the end 
   users and make required changes so as to create the best 
   application for their needs.
5. Helps check scalability - how well the software handles i. 
   increased user traffic and data volume.
6. Helps determine the performance of the product.

_Software Testing Life Cycle_ is the systematic approach devised to test software of an application to ensure it meets the requirements, is secure and free of bugs and defects.  The following are the stages in STLC.

- Requirement Analysis
- Devise testing plan
- Test case development
- Set up test environment
- Test execution
- Test closure

**Manual Testing:**

In manual testing test cases are manually entered by a tester without any automated tools. The tester identifies bugs, defects and defects and fixes them. There are different methods(both functional and nonfunctional) of software testing. The following are a few:

- Black box testing:
  This method checks the functionality of the software.
- White box testing
  This method checks the internal structure, design and 
  coding of the software.
- Grey box testing
  This method is a combination of black box and white box 
  methods where the tester has basic knowledge of the 
  internal structure of the software.
- Regression testing
  This method of testing checks if the updates or changes 
  made have caused new defects in the existing functions.

**Stages in Manual Testing:**

1. Unit testing -  each component of the code is checked individually
2. Integration testing - multiple units are integrated to check if the units to work together correctly
3. System testing - to check the system meets the desired requirements
4. User interface testing - checks user experience
5. Acceptance testing - checks if the software as a whole is fit for the end user.

Software testing is therefore most important as it helps create high-quality applications with very few or no errors. A system that meets or even exceeds customer expectations leads satisfied customers and to potentially more sales.