Introduction to System Testing
System testing is a process of testing the entire system that is fully functional, in order to ensure the system is bound to all the requirements provided by the client in the form of the functional specification or system specification documentation. In most cases, it is done next to the Integration testing, as this testing should be covering the end-to-end system’s actual routine.
This type of testing requires a dedicated Test Plan and other test documentation derived from the system specification document that should cover both software and hardware requirements. By this test, we uncover the errors. It ensures that all the system works as expected. We check System performance and functionality to get a quality product. System testing is nothing but testing the system as a whole. This testing checks complete end-to-end scenarios as per the customer’s point of view.
Functional and Non-Functional tests also done by System testing. All things are done to maintain trust within the development that the system is defect-free and bug-free. System testing is also intended to test hardware/software requirements specifications. System testing is more of a limited type of testing; it seeks to detect both defects within the “inter-assemblages”.
There are two types of Tests:
Those are specialized systems and applications
Before jump into the System test directly I want you to know the flow of testing. So you will get a clear idea. Please look at the following diagram.
Types of System Testing
Below are the different types of testing which are as follows:
1. Functionality Testing
- This testing makes sure that the functionality of a product is working as per the requirements specification, within the capabilities of the system.
- Functional testing is done manually or with automated tools.
2. Recoverability Testing
- This testing determines whether operations can be continued after a disaster or after the integrity of the system has been lost.
- The best example of this supposes we are downloading one file. And suddenly connection goes off. After resuming connection our downloading starts at where we left. It does not start from starting again.
- This used where continuity of the operations is essential
3. Performance Testing
- This testing makes sure the system’s performance under various conditions, in terms of performance characteristics.
- This testing is also called compliance testing with respect to performance.
- This testing ensures that meets the system requirements
- It checks when multiple users use the same app at a time, then how it responds back
Performance testing can be categorized into three main categories like speed, scalability, stability.
4. Scalability Testing
This testing makes sure the system’s scaling abilities in various terms like user scaling, geographic scaling, and resource scaling.
5. Reliability Testing
- Reliability testing makes sure that the system is bug-free.
- This testing makes sure the system can be operated for a longer duration without developing failures.
6. Documentation Testing
This testing makes sure that the system’s user guide and other help topics documents are correct and usable.
7. Security Testing
- Testing confirms that the program can access authorized personnel and that authorized personnel can access the functions available to their security level.
- This testing makes sure that the system does not allow unauthorized access to data and resources.
- The purpose of security testing is to determine, how well a system protects against unauthorized internal or external access or willful damage.
There is the following area where we generally can check for security:
- Data validation
- Transport security
- Data protection
- Session management
8. Usability Testing
To make sure that the system is easy to use, learn and operate
9. Requirements Testing
Every system is a requirement tested.
- Direct observations of people using the system.
- Usability surveys have been done under this testing.
- User tests under this testing. Is also called as Beta testing.
- This testing test the system as to how the real user will work in the environment.
- Usability testing is mainly used for the design of the application.
- In a usability test, actual users try to get typical goals and tasks with a product under controlled conditions.
This system is used to determine:
- How simple it is to understand application usage.
- How easy it is to execute an application process.
10. Load Testing
This testing determines, how the application behaves when multiple users access it simultaneously across multiple locations.
- This testing is done to determine if the system performance is acceptable at a pre-determined load level.
- Load testing evaluates system performance with the predefined load levels.
- It checks the normal and predefined conditions of the application.
11. Stress Testing
This testing generally checks the system is going to continue to function when subjected to a large volume of data than expected.
- Stress testing may contain input transactions, internal tables, communication channels, disk space, etc.
- Stress testing checks that the system should run as it would in a production environment.
- It checks the system under extreme conditions.
- Stress Testing is also known as Endurance Testing.
12. Configuration Testing
- Configuration testing is checking that with the multiple combinations of applications with hardware.
- This testing checks for a compatibility issue.
- Determine minimal and optimal H/W and S/W configuration.
- This testing determines the effects of adding or modifying resources like memory, disk space, CPU, network card.
13. Compatibility Testing
- Compatibility Testing used to check whether your application is capable of running on different H/W, OS, applications, network environments or Mobile devices, etc.
- Similar to multi-platform testing.
- Capability testing is more useful in web-based applications where we can check that application must be accessible from every browser.
Key Focus Area
- During System testing, the system is tested within the production environment. Before delivery of the product, the System should be tested in a production environment.
- The development and production environment may be different as per to company.
- It should mainly get configuration-related errors.
System Testing Concept
System testing falls under the scope of Black-Box testing. Also, there are testing such as security, reliability, performance, installation, functional testing, etc.
We also have White-box testing. This is also, known as clear-box testing. White box testing means the testing where the internal structure of the testing application is known to the tester. But in this article, we are focusing on black-box testing.
What is Black–Box Testing?
- This testing also is known as behavioral testing.
- Black-box testing mainly focuses on input and output as the internal code is hidden from the tester
System testing also has some specialized testing as follows:
1. Regression Testing
This testing depends on time. The factor is not always enough for this testing. This Testing is done in two ways:
- Manual Testing: Manual testing can be done for a small Systems. The project where costs are the issue. Automated testing is not convenient. Developers or quality assurance team manually tests each and every path of the software code can take. And then comparison has happened. This testing is very time-consuming and needs a lot of resources to work on it. This testing is not efficient so the automation testing comes into the picture
- Automated Testing: This testing is very good. Lots of companies trying to get automated testing tools. If we have lots of version changes for an application it’s very helpful. One class of these tools is called captured playback tools.
2. Error-Handling testing
- To determine the ability of the System to process erroneous transactions properly.
- All reasonable error is supposed to detect by the application system.
- Control over the error during error correction is a must.
- Procedures mostly guarantee that errors are get corrected properly.
- This testing should happen throughout SDLC.
- Errors encompass all unexpected conditions.
- It checks the ability of the software to execute all transactions properly.
- For ex: Just put some erroneous values in the application to check whether the system is capable enough to find those problems. This process may be iterative.
3. Inter-System Testing
- This testing is done when an application is placed in a distributed area. And all placed integration happens. This testing is mainly done to check the flow of data from the hosted main system to other systems.
- In short, we can say that “The testing of an interface between two or more application systems.”
This decides: Documentation for the system is complete and accurate. Parameters and data are correctly passed between the two applications.
- There are chunks of sets of tests that transaction from one system to another system and vice versa is executing properly. crosschecks have happened and if an error happens then it gets corrected at that time.
- This testing ensures data flow between applications.
- This testing is tedious if automation is not done.
- Cost is more if iterations are more.
4. Sanity Testing
- Sanity testing means checking the behavior of the System. This testing is also called narrow regression testing.
- Sanity tests are useful for both initial environment validation and future interactive increments.
- Sanity testing is a focused one.
- This testing is also considered a subset of regression testing.
- Ex of Sanity testing is, we can say suppose we need the system uptime. How must the time system take to get up?
- Sanity testing was initially designed to test core modules.
- Sanity testing may check connectivity with application servers and with peripheral devices.
5. Smoke Testing
- Generally, Smoke testing is also known as “Build Verification Testing”.
- This term has come from hardware testing. In Hardware testing, the device passed the test, if it did not catch fire or smoked the first time it was turned on.
- Smoke testing checks the testability of the software is termed Smoked testing.
- Smoke testing decides whether testing is enough for the application. Is it stable?
- Smoke testing helps to determine where to stop.
- Smoke tests can be performed manually or with automated tools.
- The smoke test scenarios emphasize breadth more than depth.
- Smoke testing is also known as Verification testing/Link testing/Basic Functional testing.
- This is a ”Shallow and wide” approach to the application.
- Smoke testing helps to expose problems early.
- Smoke testing also helps to find integration testing.
- In smoke testing, all components should be touched, and every major feature should be tested briefly.
- If a test fails, the build is returned to developers un-tested.
- Smoke testing is generally used in System testing, Acceptance Testing, and Integration testing.
6. Parallel Testing
- Parallel testing means testing multiple applications or subsystems at a time concurrently.
- We can say that a comparison between two different systems.
- Parallel testing is to determine – New version of an application or new system performs correctly with the reference to the existing system that working correctly.
- Parallel testing can be used when accepting a new system.
- While doing parallel testing the same data is used on both the system.
- In parallel testing, a new system is used with an existing system for some stipulated time.
- Through cross-checking of the o/p and comparison with o/p from the existing system. Parallel testing is done to get ensure the new system is working up to the mark as the previous system used to do.
Every software development process has a testing part. If software possesses all the tests and satisfies all the conditions then it’s ready for handover to the customer. Testing is a crucial part and has to be done very seriously.
This has been a guide to System Testing. Here we have discussed the introduction to system testing, Various types, and its key focus area. you may also look at the following articles to learn more –