Software testing is a means of checking that a piece of software meets the requirements for which it was designed to meet, and also to verify that there are no defects in the end-product. Software testing can also be seen as a process of analyzing software to detect the differences between the present and the ideal conditions of the software in order to detect possible defects.
Software Testing being a branch of software quality assurance and control aims to ensure that shipped software is free from defects. All software testing techniques are generally aimed at improving the quality of software, preventing bugs that could cause harm to the end-user as well as reducing overall development cost.
The main objective of this report is to highlight the key software testing techniques and the role they play in verifying that a piece of software does what it is supposed to do.
Specifically, these objectives are as highlighted below:
• To check whether a piece of software is built to the requirements
• To detect common defects before the software is released to the end-user
• Achieve a high level of quality through fixing of bugs that might be found during testing.
This report captures the key software testing concepts such as manual and automated testing, and these are discussed below:
1. Manual Testing: This is the process of testing software by hand to see if it works correctly or not. In manual testing, a user will try to verify all the features of the software by using the software while keeping the end-user in mind. Manual software testing helps the tester identify defects in software. While manual testing can be time consuming for the tester due to lack of automation, it very important for testing newly developed software. It remains one of the best ways of ensuring that the core features of a software work correctly.
2. Automated Testing: Automated testing is the execution of test scripts using existing automation tools. The tester usually would have to write this test scripts once, and then validate it by passing some system parameters to the test scripts. It is important to note that even automated testing is not 100% accurate as some bugs can still go unnoticed. The testing tools can also fail to properly test the application on some occasions.
Software Testing Concepts
In software testing, there are some important concepts that guide the practice.
These concepts are listed and briefly explained below:
1. Testing can only detect the presence of errors, not absence. This concept is true because the main goal of testing is to observe the behavior of the particular software and to check whether it meets its requirement expectation or not. Testing therefore, cannot demonstrate the faults other specified in every circumstance. It is always possible that an overlooked test case could conceal further problems with the developed system.
2. As a derivative from the above point, it can be concluded that exhaustive software testing is not possible.
3. Testing is context dependent
4. The pesticide paradox states that if the same tests are repeated over again, eventually the same test cases will no longer detect new defects.
5. Defect clustering means that the distribution of defects are not uniformly spread across the application, but rather centralized in limited sections of the software application.
Software Testing Methods and Tools
Testing is a group of techniques that determine the correctness of a given software application. There are two main types of software testing namely; manual and automated testing.
This is the process of checking the functionality of a software application meets the needs of the end-user without the use of any automated tools. Manual testing is further divided into White box testing, Black box testing and Gray box testing.
- White box testing: A white box test involves the software developer checking every line of the software code before the test engineer. During testing, the code is visible to the developer, hence the name ‘’white box’’ testing.
- Black box testing: A black box test is done by a test engineer who checks the functionality of the software application to see if it meets the needs of the end-user. During testing, the code is not visible to the developer, hence the name ‘’black box’’ testing.
- Grey box testing: This is a mix of both white box and black box testing. It can be performed by someone who is both a tester and also knowledgeable on the internal workings of the software application.
This is the process of converting the manual test cases into executable test cases with the help of automation tools or programming testing frameworks. Automated testing makes use of three major methodologies namely;
- GUI testing: This approach implements a graphical user interface that test engineers can use to record user actions and evaluate.
- Code-Driven: The code-driven approach requires the test engineer to focus on the test scripts to identify the sections of the application that fail or pass the test.
- Test Automation Framework: The test automation framework is a set of rules used to generate variable results of the automated testing activities. It combines test data sources, function libraries, as well as many other test modules to make it easy for test engineers to run software test.
Popular Software Tools for Automated Testing
- Selenium: Selenium is an open-source web automation tool, currently in demand and widely used in the software market for automated testing across multiple operating systems and browsers.
- Kobiton: This software makes Mobile and IoT Continuous Testing possible. It is possible to automate Functional, Performance, Visual and Compatibility test with this AI-driven tool.
- TestProject: This is a free cloud based, community-powered test automation platform that enables users to test Web, Android and iOS applications on all operating systems.
Software testing is defined as an activity to check whether a piece of software meets the expected requirements. With a good testing strategy in place, software development becomes more cost effective, secure and qualitative.
Please leave a comment below and share with other students in your network if you found this solution helpful. Happy learning!