You get a bonus - 1 coin for daily activity. Now you have 1 coin

System Testing

Lecture



The main task of system testing is checking both the functional and non-functional requirements of the system as a whole. This uncovers defects such as improper use of system resources, unforeseen combinations of user-level data, incompatibility with the environment, unforeseen usage scenarios, missing or incorrect functionality, usability inconvenience, and so on. To minimize the risks associated with how the system behaves in a given environment, it is recommended to use an environment during testing that is as close as possible to the one the product will be installed on after release.

Two approaches to system testing can be distinguished:

    • requirements based (requirements based)
Test cases are written for each requirement, verifying that this requirement is fulfilled.
    • use case based (use case based)
Based on the idea of how the product will be used, use cases for the system are created (Use Cases). One or more scenarios can be defined for a specific use case. Test cases are written to verify each scenario, and these must be tested.

System testing, also called system-level testing or system integration testing, is the process in which a quality assurance (QA) team evaluates how the various components of an application work together within the complete integrated system or application.

System testing confirms that the application performs its tasks as intended. This step, a kind of black-box testing, focuses on the application's functionality. System testing, for instance, can check that every kind of user input produces the desired result in the application.

Using system testing, the QA team verifies whether the application meets all of its requirements, including technical, business, and functional requirements. To do this, the QA team may use various types of tests, including performance tests, usability tests, load testing, and functional tests.

Using system testing, the QA team determines whether a test case satisfies each of the application's most important requirements and user stories. These individual test cases define the overall test coverage for the application and help the team identify critical defects that block core application functions before release. The QA team can log and tabulate each defect for each requirement.

In addition, each individual type of system testing reports on the relevant software metrics, including:

  • Performance testing: speed, average, stability and peak response time;
  • Load testing: throughput, number of users, latency; as well as
  • Usability testing: user error rate, task success rate, task completion time, user satisfaction.

Stages of system testing

System testing checks every component of the application to make sure they work as a single whole. The QA team usually performs system testing after checking the individual modules through functional testing or user-story testing, and then each component through integration testing .

If the software build achieves the desired results in system testing, it undergoes a final check through acceptance testing before it goes into production, where users will use the software. The application development team logs all defects and determines which kinds and how many defects are acceptable.

System testing tools

Various commercial tools and open-source tools help QA teams run and analyze system testing results. These tools can create, manage and automate tests or test cases, and may also offer capabilities beyond system testing, such as requirements management features.

Commercial system testing tools include Squish from Froglogic and SpiraTest from Inflectra, while open-source tools include Robotium and SoapUI from SmartBear.

The process of testing an integrated hardware and software system to verify that the system meets specified requirements.

Verification: Confirmation, through examination and provision of objective evidence, that specified requirements have been fulfilled.

If an application has three modules A, B and C, then testing performed by combining modules A and B, module B and C, or module A and C is called integration testing. Integrating all three modules and testing it as a complete system is called system testing.

System Testing

Performed after integration testing is complete.

System Testing

This is primarily black-box type testing. This testing evaluates the operation of the system from the user's point of view using the specification document. It does not require any internal knowledge of the systems, such as design or code structure.

It covers the functional and non-functional areas of the application/product.

Focus criteria:

The main focus is on the following:

  1. External interfaces
  2. Multiprogramming and complex functionality
  3. Security
  4. Recovery
  5. Presentation
  6. Smooth interaction of the operator and user with the system
  7. Installability
  8. Documentation
  9. Usability
  10. Load/stress

Why system testing?

1) It is very important to complete the full testing cycle, and system testing is the stage where this is done.

2) ST is performed in an environment similar to the production environment, and, consequently, stakeholders can get a good idea of the user's reaction.

3) It helps minimize post-deployment troubleshooting and the number of support calls.

4 ) At this stage the application's architecture and business requirements are tested.

This testing is very important, and it plays an important role in delivering a quality product to the customer.

Let's look at the importance of this testing with the following examples, which involve our everyday tasks:

  • What if an online transaction fails after confirmation?
  • What if an item placed in the cart on a website does not allow the order to be placed?
  • What if, in a Gmail account, creating a new label gives an error when the create tab is clicked?
  • What if the system crashes when the load on the system increases?
  • What if the system crashes and cannot recover the data properly?
  • What if installing the software on the system takes much longer than expected, and gives an error at the end?
  • What if, after an improvement, the website's response time increases much more than expected?
  • What if the website becomes too slow, and the user cannot book their ticket?

The above are just a few examples showing how things can be affected if system testing is not performed properly.

All the examples above are the result of system testing not being performed, or being performed incorrectly. All integrated modules must be tested to make sure the product works according to the requirements.

Is this white-box or black-box testing?

System testing can be regarded as a black-box testing method.

The black-box testing method does not require internal knowledge of the code, whereas the white-box method requires internal knowledge of the code.

When performing functional and non-functional testing of a system, security, performance and many other types of testing are covered, and they are tested using the black-box method, in which input data is provided to the system and the output data is checked. Internal knowledge of the system is not required.

Black-box technique:

System Testing

How to perform a system test?

Essentially, this is part of software testing, and the test plan should always have a specific place for this testing.

To test the system as a whole, the requirements and expectations must be clear, and the tester must also understand how the application is used in real time.

In addition, the most commonly used third-party tools, operating system versions, and operating system variants and architecture can affect the functionality, performance, security, recoverability or installability of the system.

Therefore, when testing the system, it can be helpful to have a clear picture of how the application will be used and what problems it may encounter in real time. In addition, the requirements document is just as important as understanding the application.

A clear and up-to-date requirements document can save the tester from a number of misunderstandings, assumptions and questions.

In short, a clear and precise requirements document with the latest updates, combined with an understanding of real-time application usage, can make ST more fruitful.

This testing is carried out in a planned and systematic way.

Below are the various stages of performing this testing:

  • The very first step is to create a test plan.
  • Create system test suites and test scenarios.
  • Prepare the test data needed for this testing.
  • Execute the system test cases and scenario.
  • Report bugs. Retest bugs after they are fixed.
  • Regression testing to check the impact of a code change.
  • Repeat the test cycle until the system is ready for deployment.
  • Exit the testing team.

System Testing

What to test?

The points below are covered by this testing:

  • End-to-end testing, which includes checking the interaction between all components and external peripheral devices to make sure the system works normally in any of the scenarios covered by this testing.
  • It verifies that the input provided to the system produces the expected result.
  • It checks whether all functional and non-functional requirements are verified and working correctly or not.
  • Ad hoc and exploratory testing can be performed in this testing after scenario-based testing is complete. Exploratory testing and ad hoc testing help find bugs that cannot be found through scenario-based testing, since it gives testers the freedom to test based on their experience and intuition.

Advantages

There are several advantages:

  • This testing includes end-to-end scenarios for testing the system.
  • This testing is performed in the same environment as the production environment, which helps understand the user's point of view and prevents problems that may arise when the system goes live.
  • If this testing is carried out systematically and properly, it will help mitigate post-production issues.
  • This testing verifies both the application's architecture and its business requirements.

Entry / exit criteria

Let's take a detailed look at the entry / exit criteria for a system test.

Entry criteria:

  • The system must meet the exit criteria of integration testing, i.e. all test cases must be executed, and there must be no critical bugs or bugs with priority P1, P2 in an open state.
  • The test plan for this testing must be approved and signed off.
  • Test cases/scenarios must be ready for execution.
  • Test scripts must be ready for execution.
  • All non-functional requirements must be available, and test cases must be created for them.
  • The test environment must be ready.

Exit criteria:

  • All test cases must be executed.
  • There must be no critical, high-priority or security-related bugs in an open state.
  • If any bugs with medium or low priority are in an open state, they must be implemented with the customer's consent.
  • An exit report must be submitted.

System test plan

A test plan is a document used to describe the purpose, task and scope of the product being developed. What needs to be tested and what does not, the testing strategies used, the tools required, the required environment and all other details are documented in order to proceed with testing.

A test plan helps carry out testing in a very systematic and strategic way, which helps avoid any risks or problems during testing.

The system test plan covers the following points:

  • The purpose and objective of this test are defined.
  • Scope (lists the features to be tested, the features not subject to verification).
  • Test acceptance criteria (criteria by which the system will be accepted, i.e. the points mentioned in the acceptance criteria must be in a «passed» state).
  • Entry / exit criteria (defines the criteria for when system testing should begin and when it should be considered complete).
  • Test schedule (estimate of testing completion at a specific time).
  • Test strategy (includes testing methods).
  • Resources (the number of resources needed for testing, their roles, resource availability, etc.).
  • Test environment (operating system, browser, platform).
  • Test cases (list of test cases to execute).
  • Assumptions (if there are any assumptions, they must be included in the test plan).

Procedure for writing system test cases

System test cases cover all scenarios and use cases, and also cover functional, non-functional, user-interface and security-related test cases. Test cases are written the same way as for functional testing.

System test cases include the following fields in the template:

  • Test Suite ID
  • Test Suite Name
  • Description - describes the test case to be executed.
  • Steps - a step-by-step procedure describing how to perform the testing.
  • Test data - dummy data is prepared for testing the application.
  • Expected result - this column presents the expected result according to the requirements document.
  • Actual result - this column presents the result after the test case is executed.
  • Pass / fail - comparing the actual and expected result determines the «pass/fail» criteria.
  • Remarks

System Testing

System test cases

Here are a few examples of test scenarios for an e-commerce website:

  1. If the site launches correctly with all relevant pages, features and the logo
  2. If the user can register/log in on the site
  3. If the user sees the available products, can add products to their cart, make a payment, and receive confirmation by email, SMS or phone call.
  4. If the main functions, such as search, filtering, sorting, adding, editing, wish list, etc., work properly
  5. If the number of users (as defined in the requirements document) can access the site at the same time
  6. If the site launches correctly in all major browsers and their latest versions
  7. If transactions carried out on the site by a specific user are secure enough
  8. If the site launches correctly on all supported platforms, such as Windows, Linux, Mobile, etc.
  9. If the user manual/return policy, privacy policy and terms of use of the site are available as a separate document and can be useful to any newcomer or new user.
  10. If the content of the pages is correctly aligned, well organized and free of spelling errors.
  11. If the session timeout is implemented and works correctly
  12. If the user is satisfied with using the site, or, in other words, the user has no trouble using the site.

Types of system testing

ST is called a superset of all types of testing, since it addresses all the main types of testing. Although the emphasis on types of testing may vary depending on the product, organizational processes, deadlines and requirements.

In general, this can be defined as follows:

System Testing

Functionality testing: to make sure the product's functionality works according to the defined requirements within the system's capabilities.

Recoverability testing: to make sure how well the system recovers from various input errors and other failures.

Compatibility testing: to make sure whether the system can work with third-party products or not.

Performance testing: to make sure the system works under various conditions in terms of operating characteristics.

Scalability testing: to make sure of the system's scaling capabilities in various terms, such as user scaling, geographic scaling and resource scaling.

Reliability testing: to make sure the system can run for an extended period of time without failures occurring.

Regression testing: to make sure of the system's stability during the integration of various subsystems and maintenance tasks.

Documentation testing: to make sure the system's user manual and other reference documents are correct and usable.

Security testing: to make sure the system does not allow unauthorized access to data and resources.

Usability testing: to make sure the system is easy to use, learn and operate.

More types of system testing

System Testing

1) Graphical User Interface (GUI) testing:

GUI testing is performed to check whether the system's graphical interface works properly or not. The GUI is basically what is visible to the user when they use the application. GUI testing includes testing buttons, icons, checkboxes, lists, text boxes, menus, toolbars, dialog boxes, etc.

2) Compatibility testing:

Compatibility testing is carried out to make sure the developed product is compatible with various browsers, hardware platforms, operating systems and databases according to the requirements document.

3) Exception handling:

Exception handling testing is performed to check that even if an unexpected error occurs in the product, it must display the correct error message and not allow the application to stop. It handles the exception in such a way that the error is displayed while the product recovers and allows the system to process the incorrect transaction.

4) Volume testing:

Volume testing is a type of non-functional testing in which testing is performed using a huge amount of data. For example, the volume of data in the database is increased to check the system's performance.

5) Stress testing:

Stress testing is performed by increasing the number of users (concurrently) in the application to the point where the application crashes. This is done to check at what point the application will crash.

6) Sanity check:

A sanity check is performed when a build is released with a code or functionality change, or if any bug has been fixed. It checks that the changes made have not affected the code and have not caused other problems as a result, and that the system works as before.

If any problems occur, the build is not accepted for further testing.

Essentially, thorough testing of the build is not carried out in order to save time and money, since the build is rejected due to the problem found. A sanity check is carried out for the changes made or for the fixed problem, not for the entire system.

7) Smoke test:

Smoke Testing is testing performed on a build to make sure whether the build is fit for further testing or not. It checks that the build is stable for testing and that all critically important functions work normally. Smoke testing is carried out for the whole system, i.e. end-to-end testing is performed.

8) Exploratory testing:

Exploratory testing, as the name suggests, consists of exploring the application. In exploratory testing, scenario-based testing is not performed. Test cases are written alongside the testing. It is more execution-focused than planning-focused.

The tester has the freedom to test independently, using their intuition, experience and intellect. The tester can choose any feature to test first, that is, they can choose a feature to test at random, unlike other methods, in which a structured way is used to carry out testing.

9) Ad hoc testing:

Ad hoc testing is informal testing in which no documentation or planning is kept for testing the application. The tester tests the application without any test cases. The tester's task is to break the application. The tester uses their experience, guesswork and intuition to find critical problems in the application.

10) Installation testing:

Installation testing is designed to verify that the software is installed correctly.

This is the most important part of testing, since installing the software is the very first interaction between the user and the product. The type of installation testing depends on various factors, such as the operating system, platform, software distribution, etc.

Test cases that can be included if the installation is performed over the Internet:

  • Poor network speed and dropped connection.
  • Firewall and security.
  • Size and approximate time are taken.
  • Parallel installation/download.
  • Insufficient memory
  • Insufficient space
  • Interrupted installation

# 11) Maintenance testing:

After the product is launched, a problem may arise in the real environment, or the product may need some improvement.

After the product is put into operation, maintenance is required, and this is taken care of by the maintenance team. Testing performed for problems, enhancements or a switch to new hardware falls under maintenance testing.

What is system integration testing?

This is a type of testing in which the system's ability to maintain data integrity and operate in coordination with other systems in the same environment is checked.

Example of system integration testing:

Let's take, for example, the well-known online ticket booking site - a booking service.

This is a ticket booking tool; the online store interacts with the payment systems. In general, you can think of this as A * B * C = R.

Now, at the system level, the online ticket booking tool, the online shopping tool and the online payment tool can be tested independently of each other, and then integration verification can be performed for each of them. And then the whole system needs to be tested systematically.

So, what is the place of system integration testing?

A web portal, such as a booking service, is a combination of systems. You can run tests at one level (a single system, a system of systems), but at each level you can focus on different risks (integration problems, independent functionality).

  • While testing the online ticket booking feature, you can check whether you can book tickets online. You can also consider integration issues. For example, the ticket booking tool integrates the backend with the user interface (UI). For example, how does the interface behave when the database server responds slowly?
  • Testing online ticket booking with the online store. You can make sure that the online store is available to logged-in users for booking tickets online. You can also consider checking integration in the online store. For example, whether a user can select and buy an item without issues.
  • Testing the integration of the online ticket booking system with PayPal. You can check whether, after booking tickets, money was transferred from your PayPal account to the online ticket booking account. You can also consider checking integration in PayPal. For example, what if the system places two records in the database after a one-time debit of money?

Difference between system testing and system integration testing:

The main difference:

  • System testing monitors the integrity of a single system with the corresponding environment.
  • System integration testing monitors the integrity of several systems with each other, located in the same environment.

Thus, system testing is the beginning of real testing, in which you test the product as a whole, rather than a module/feature.

Difference between system and acceptance testing

Below are the main differences:

System testing Acceptance testing
1 System testing is testing of the system as a whole. End-to-end testing is performed to verify that all scenarios work properly. Acceptance testing is carried out to verify that the product meets the customer's requirements.
2 System testing includes functional and non-functional testing and is performed by testers. Acceptance testing is functional testing carried out by both testers and the customer.
3 Testing is carried out using test data created by testers. Real/production data is used when conducting acceptance testing.
4 The system as a whole is tested to verify the product's functionality and performance. Acceptance testing is carried out to verify this business requirement, i.e. it addresses the goal the customer is seeking.
5 Defects found during testing can be fixed. Any defects found during acceptance testing are considered a Product malfunction.
6 System and system integration testing are types of system testing. Alpha and beta testing pass through acceptance testing.

Tips for performing a system test

  1. Reproduce real-time scenarios rather than performing ideal testing, since the system will be used by the end user, not a trained tester.
  2. Check the system's response in various terms, since a person does not like waiting or seeing incorrect data.
  3. Install and configure the system according to the documentation, because that is what the end user is going to do.
  4. Involving people from different fields, such as business analysts, developers, testers, customers, can deliver a more polished system.
  5. Regular testing is the only way to make sure that the slightest code change to fix a bug has not introduced another critical bug into the system.

Conclusion

System testing is very important, and if it is not carried out properly, critical problems may arise in the real environment.

The system as a whole has various characteristics subject to verification. A simple example could be any website. If it is not tested as a whole, the user may find that this site is very slow, or the site may crash when a large number of users log in at the same time.

And these characteristics cannot be verified until the site is tested as a whole.

We hope this guide has been very helpful for understanding the concept of system testing.

See also

  • [[b6100]]
  • [[b6101]]
  • [[b5184]]
  • [[b5187]]
  • [[b5191]]
  • [[b5192]]
  • [[b6088]]

See also

created: 2016-04-02
updated: 2026-03-08
333



Was this answer useful?
Choose a quick rating so we can improve the next answer for you.
How satisfied are you?


Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Quality Assurance"

Terms: Quality Assurance