Sudha Aravindan has taught high school Math and professional development in Information Technology for over 10 years. Sudha has a Doctorate of Education degree in Mathematics Education from the University of Delaware, USA, a Masters degree in English Literature from the University of Kerala, India, a Bachelor of Education degree in Teaching of Math from the University of Kerala, India, and a Bachelor of Science degree in Math, Physics and Statistics from the University of Kerala, India. Sudha has a certificate in Java programming and Statistical Analysis.
When you play a game on your computer, run an app on your mobile device or use the computer to write a Word document, you are using a software program. A software program is a computer language that is used to write applications that interact with human beings and run on electronic devices.
Software testing is the process of testing the design and functionality of a computer software or computer program to find out whether there are any errors in the program that might cause it to terminate unexpectedly and if the program is working as intended.
Suppose you are making soup for a competition in your town. First, you would make the soup, test it, and tweak the recipe before making the final version for the competition. If the first batch does not match up to your expectations, you would make another batch, and test it again. Software testing is similar to testing a sample of your soup before making it available for judging.
Software Testing Methods
There are three main methods used in software testing:
- Black-box testing: This is similar to you giving your family different variations of the soup recipe in different bowls and asking them to pick the tastiest without knowing which recipe they are selecting. In black-box testing, a person who is not familiar with the software code or how the program is expected to perform is asked to test and report on any inconsistencies and errors. Black-box testing is from the point of view of the novice user.
- White-box testing: This is similar to you going through the recipe in detail and making modifications to the ingredients to get a soup with better taste and texture. In white-box testing, a technical expert examines the code in detail, and uses software testing tools to identify code that can be corrected or edited to improve the user interactions and the program outcomes. White-box testing is from the point of view of the technical expert.
- Gray-box testing: This is similar to you taking advice from a family member who is a better cook and then modifying the recipe. In gray-box testing, a person with knowledge of the technical expectations and programming code is asked to test the program and report on the problem areas. Gray-box testing is from the point of view of the expert user.
Purposes of Testing
We will discuss two main purposes of software testing:
The purpose of quality assurance is to make sure that the program executes as intended without any errors. If your first test batch of soup did not turn out as expected, you would identify the errors, correct them, and repeat the recipe with the modifications.
In the same way, when testing a gaming software, for example, if the program unexpectedly quits and does not allow the player to continue with the game, the software code has to be reviewed to identify what the cause of the unexpected error is. Once the cause is identified, the code is then modified to incorporate the remedy before the software is considered as successfully passing the testing process.
Another purpose of software testing is functional testing, which makes sure the software performs the functions as intended. For example, let's say your soup has to match the competition guidelines with a liquid to solids ratio of 2:1. If your sample batch of soup does not meet these guidelines, you would need to modify the recipe and make another test batch.
In the same way, when testing a gaming software, if the player does not get the option to move up to Level 2 after successfully completing Level 1, that is a functional error in the software program that needs to be corrected. The programmer would review the code and identify whether the software code is written so that the game moves to Level 2 after Level 1 was completed with a 100% score.
Software testing is a critical component of any software development process. For testing to be effective in identifying and correcting possible errors, the testing strategy should be defined before the testing process is started. Some of the best practices of the components of software testing include:
- Test the software in small units -- When you first test your soup, you would only make a small batch. Instead of testing the entire software all at one time, break up the software into smaller components and test each component or unit separately. In the gaming software, you would test for Level 1 first, then Level 2 and so on.
- Get feedback from the consumers -- To test your soup, you would give a sample to your friends and family. To get ideas for improvement of the software or identify where the error occurs, you could get school kids to test the software, and the kids may have ideas to make the game even more adventurous, which you could then integrate into your software.
- Consider all feedback and make the necessary improvements -- When testing the soup, you would obviously get a lot of feedback from the testers. You would need to decide which feedback to incorporate into your final product and which feedback to ignore. In the same way, when you test a software with consumers, you would receive a lot of feedback to improve the product. Make sure to attend to all software errors (such as unexpected quitting, program hanging, or not allowing user login) before attending to functional requests for program enhancement (such as adding a higher level of difficulty, or making an alternate path available for an action).
Software testing means testing the design and functionality of a computer software or computer program to find out whether there are any errors. It is an integral part of any software development process. The methods used for software testing include black-box testing, gray-box testing and white-box testing.
Two of the main purposes of software testing are quality assurance and functional testing. For a productive software testing process, the best practices should be considered. Test the software in small units, get feedback from consumers, and accurately identify and prioritize problems and suggestions to make the necessary improvements.
To unlock this lesson you must be a Study.com Member.
Create your account
Register to view this lesson
Unlock Your Education
See for yourself why 30 million people use Study.com
Become a Study.com member and start learning now.Become a Member
Already a member? Log InBack
Resources created by teachers for teachers
I would definitely recommend Study.com to my colleagues. It’s like a teacher waved a magic wand and did the work for me. I feel like it’s a lifeline.