- This topic has 0 replies, 1 voice, and was last updated 3 months, 3 weeks ago by Aruorihwo.
- February 28, 2020 at 4:22 pm #86828Participant@aruorihwo
Software testing has to do with ensuring a developed software can accomplish its goals. There are various tests carried out on software to be sure that each area of the software works as it should.
Software testing is the quality control aspect of software development. A software tester aims to check for errors or bugs and to be certain that everything works exactly as intended and to point out what doesn’t to get it fixed.
There are two main classifications of software testing; functional and non-functional
Functional testing relates to testing how a product functions, performing a functional test entails checking and testing each functionality of the software to ensure you are getting the expected results.
Functional testing can be divided into several types;
- Unit testing
- Integration testing
- End-to-end testing
- Smoke testing
- Sanity testing
- Regression testing
- Acceptance testing
- White-box testing
- Black box testing
- Interface testing
Functional testing can be done either manually or with automated tools.
Non-functional testing deals with testing the non-functional aspects of the software, aspects such as usability, performance, security, reliability and more. This test is performed after the functional test as been done. The non-functional test doesn’t focus on whether the software works or not it focuses on how well it works.
Running a non-functional test helps you improve the quality of your software substantially. The non-functional test is mostly done with automated tools as it is difficult to execute this manually.
Non-functional test are divided into several types;
- Performance testing
- Security testing
- Load testing
- Failover testing
- Compatibility testing
- Usability testing
- Scalability testing
- Volume testing
- Stress testing
- Maintainability testing
- Compliance testing
- Efficiency testing
- Reliability testing
- Endurance testing
- Disaster recovery testing
- Localization testing
- Internationalization testing
It is almost impossible for one person to have total knowledge of all the types of testing. Often time, software testers are designated for testing a few areas/functions of the software. In this article, we would be looking at some of the most common types of software testing.
1. Unit testing
This test is carried out by programmers not testers. It involves testing every unit component or module of your software. Every component of the software ought to be tested, so a great deal of unit testing is done. The unit testing is usually done during the coding phase, it isolates a group of codes and verifies if it corrects and works accurately. It is a white box test conducted by the software developer.
Unit test can be done either manually or with automated tools. The automated method of testing is favored among developers. With the manual method, an instructional step by step document would need to be provided. For the automated, the developer writes a couple of codes into the application just to test its functionality. A more thorough test can also be done by isolating the codes to reveal dependencies between the codes and other units in the product.
The workflow of unit testing is; create test cases >> review and rework >> baseline >>execute test cases.
2. Integration testing
After testing each module, they are joined together and tested to be sure the integrated modules gives the desired output. Typically, every software consists of different software modules coded by different programmers, this test aims to ensure that each module interacts perfectly without any defects. It focuses on communication between the data of these modules. Integration testing is also known as string testing and thread testing.
Integration testing is necessary to eliminate defects that might have been missed during unit testing, defects that might have come about due to factors like changes in requirements by the clients after Unit test has been done, errors from external hardware interfaces, errors from interactions between software modules and databases.
Integration test focuses on the flow of information between the modules. In the following scenario, the application has three modules; ‘signup page’, ‘profile page’, ‘delete profile’ and each of them is integrated logically.
Objective Description Result Check link between signup page and profile page Enter required signup details and click the signup button Be directed to the profile page Check link between profile page and delete profile page Click the delete profile button Be directed to the deleted profile page.
There are four types/approaches to integrated testing;
- Top-down – in this approach, testing is done fro the top module to the bottom module.
- Bottom-up – each module at the lower level is tested with the higher modules until they are all tested.
- Sandwich – this is a combination of top-down and bottom-up. Top components are tested with lower components, at the same time, lower components are integrated with top components and tested
- Big-bang – all the modules are integrated at once and tested.
3. Regression testing
Changes and modifications are constantly made while making a software. Regression testing ensures that even after these changes are made, the component still functions as it should. It is most often a partial test carried out on already tested codes to confirm that functionality has not been affected after changes have been made.
Regression testing is done when there is a change in codes, new features have been added to the software, or a detected error has been fixed.
An effectively done regression test saves a lot of time and money in the long run.
4. Smoke testing
Smoke test is carried out by testers to find out if the new build is stable enough to undergo further testing. This testing is also known as build verification testing when carried out for a build. Smoke testing checks all the basic components of the software to be sure they work properly, it is done immediately after a software build is done.
5. Alpha testing
Alpha testing is in-house testing conducted in a virtual environment to ensure that the software is ready to be delivered to the client or made public without any errors. Alpha testing is done in the last stages of development and done before the beta testing. Some minor changes, like design, can still be made after the test is done.
The first stage of the alpha test is done by the developers while the second stage is done by the QA team. Both black box and white box testing are applied.
The objective of an alpha testing is to get a better insight into how reliable the software is and also to get in-depth customer involvement in the development process.
6. Beta testing
Beta testing is carried out by the actual end-users of the software, it is made accessible for a limited number of users to make certain that it is error-free and nothing was overlooked during the alpha testing. Feedbacks from these users are then used to make final changes to the software before it is released to the general public.
7. System testing
This test is done to ensure that the software can function on different operating systems. It is a black box type of testing, rather than focus on the internal working of the software, it focuses on the input and output requirements.
It tests to see how the various components interact with each other and with the system. It is also referred to as an end to end testing.
There is a wide range of system testing that can be carried out on a software, which one is needed is determined by several factors such as time available, resources, budget, etc.
8. Stress testing
This is carried out to see how the software responds under stress. For instance, the software is given data beyond its storage capacity and is checked to see how and when it would fail. This test is carried out to ensure that under extreme circumstances the software won’t crash.
Stress testing is needed to be sure that the software would work under extreme abnormal conditions, that an appropriate message would be displayed whenever the system is stressed, to prevent massive revenue loss as a result of the software not being able to accommodate stress.
9. Performance testing
This test is done to check the performance of the software and to see if the software meets the performance requirements. It is used to check the software’s speed, scalability, stability, and effectiveness. It is popularly known as Perf test.
During the performance test, you can verify response time, check the maximum number of users the software can handle before it crashes, check database execution time, ad more.
Several tools can be used to conduct this test.
10. Load test
This is a type of performance test, it determines how much load it can take before the software’s performance starts to dwindle. This way the capacity of the system is known.
11. API testing
API testing is just like unit testing, in that, it is a code level test. Although in this case testing is not carried out by programmers but by the QA group.
12. Security testing
This test is carried out by security experts to ensure that the software is not easily susceptible to security threats and hackers. It checks how the software reacts to attempts to being hacks and how data are maintained in the event of a hack.
13. Acceptance testing
This is also known as user acceptance testing, it is carried out by the client to see if the software meets all their requirements and preferences.
14. Browser compatibility testing
This test checks that the software can be used on the various major web browsing platforms. It is a subset of compatibility testing, which checks that the software is compatible with the different operating systems, major web browser platforms, hardware and more.
15. Ad-hoc testing
This is an informal type of testing that can be carried out by any member of the development team. It doesn’t follow any test criteria and is not done systematically. Even though finding errors using this type of test is harder, there are technical errors that are usually found easily using this test than other tests.
In conclusion, there are over a hundred different types of software testing that can be carried out these listed here are just a small fraction. Note that, not all test are expected to be carried out on each software, the kind of test you need to carry out depends on the type of software and expected functionality of the software.
- You must be logged in to reply to this topic.