Software testing is an important part of producing a sound product in any development cycle. Regardless of what industry or field, products need to be tested on performance and functionality, in order to ensure they live up to the expected requirements.
The main goal of software testing is to identify performance problems, find bugs, and work out issues of functionality throughout the development process. Testing is a vital part of improving the quality of a piece of software, as well as weeding out possible issues that may occur prior to going live.
Testing can be performed either manually by human testers, or can be automated to test a software’s processes. Testers (even those who are writing automated tests) must learn to think from the end user’s point of view.
The testing process can be split into two types: black and white box.
Black box testing: This type of testing is used to check the expected functionality of a product. You test for the output response (like an end user), without taking into consideration the internal code or structural system.
White box testing (glass box): This type of testing is conducted with full knowledge of an application’s code and the reasoning behind its construction.
There are many other types of software testing that are integrated into the testing process as well, which would be considered one of the two previously listed types.
The most common types of software testing
Unit testing: Testing of the smallest software units or modules to make sure they work correctly. Normally, programmers do this type of testing because it requires internal knowledge of the code.
Integration testing: Tests to make sure that combined units or modules work together as a whole.
Functional testing: This black-box type testing focuses on the output requirements and checks to make sure the application will satisfy the functional demands and expectations of the user.
System testing: Tests the created system and its overall correspondance to its requirements.
Regression testing: Repeated testing to ensure that fixed modules are functioning and have not introduced new bugs.
Stress and performance testing: Tests how the application will function under load and expected volume of users, and whether its performance will hold up to an acceptable level of functionality.
Usability testing: Is it user-friendly? This type of testing makes sure your application is easy to understand and navigate.
GUI testing: Testing the reaction of different graphical user interface (GUI) components to user input to ensure it meets the expected requirements and specifications. (See also: our blog post on UI Testing.)
Acceptance testing: Tests to make sure that the standards and specifications of the customer or client are met. Normally conducted by the client themselves, or another user.
Was this post helpful? What other type of testing should be included in the basics?