Loading

System Testing


System Testing In the world of software testing, software testers go through various levels of testing. From unit testing to acceptance, the team has to ensure that all components of the product are tested thoroughly, without any hindrance. Performed after integration testing and before acceptance tests, System testing is one of these levels of software testing, which will be discussed in detail below.

Defining System Testing:

System testing is a method of monitoring and assessing the behaviour of the complete and fully-integrated software product or system, on the basis of pre-decided specifications and functional requirements. It is a solution to the question "whether the complete system functions in accordance to its pre-defined requirements?"

It's comes under black box testing i.e. only external working features of the software are evaluated during this testing. It does not requires any internal knowledge of the coding, programming, design, etc., and is completely based on users-perspective.

Characteristics of System Testing:

System testing is a method of monitoring and assessing the behaviour of the complete and fully-integrated software product or system, on the basis of pre-decided specifications and functional requirements. It is a solution to the question "whether the complete system functions in accordance to its pre-defined requirements?"

  • In Software Development Life Cycle (SDLC), it is the first testing, that carries out the task of testing the software or system, as a whole.
  • Evaluates the functioning of the complete system, as per the pre-decided functional requirement.
  • Along with functional requirements, it also verifies and validates the business requirements and software's architecture.
  • Staging server may act as an environment, for carrying out the testing.
  • A type of black-box testing.
  • It may include, both functional and non-functional testing.
  • Reduces the troubleshooting and maintenance issue, after deployment.
  • Demands dedicated team of testers, independent of development team.

When to Perform System Testing?

As stated earlier, software testing life cycle consists of various levels of testing, which makes it crucial for us to understand when, in STLC, is system testing is executed by the testers. To help you with this, here are the scenarios when a tester can perform system testing, either manually or with the assistance of testing tools.

Key Areas of System Testing:

Some of the aspects, on which system testing focuses are

  • Performance: It makes sure that the software system performs as per requirements of the user, without depicting any defects or issues.
  • Security: Protects the product from any security breaches, data theft, etc., which can sacrifice critical data & information of the organization.
  • Recovery: Ensures that the recovery of the system is as per expectations and in an accurate condition.
  • Interface: System testing also focuses on the interface of the product and ensure that all requirements are met accurately and no issues occur when two components of the system are integrated together.
  • Install-ability: Here, the focus of system testing is to make sure that the product installed and implemented to the production environment without any difficulty and issue.
  • Usability: This is another important aspect that is covered by system testing. It ensures optimum user experience of the system.
  • Documentation: The accuracy of the document is also tested and monitored by this type of testing.
  • Load/Stress: System testing also makes sure that the system performs and functions accurately under different and extreme load and stress.

Prerequisites of System Testing:

Before initiating the process of system testing it is vital for the team to consider all the requirements, which can impact the result of testing or make it more tedious. Therefore, mentioned below are some important prerequisites of system testing, for your reference.

  • Team should make sure the software is united tested.
  • Integration testing should already be implemented on the product.
  • The software should be developed completely.
  • Before implementing the process of system testing the team should ensure that the testing environment is ready.

    System Testing Process:

    Since the importance of system testing is immense in STLC, it is important that we define its process, to ensure that its procedure is executed accurately without missing any critical detail or step. Process of system testing can vary from project to project or organization, however, there are six common steps that are part of its process and which are defined below:

    1. Create a Test Plan: The initial step of the process involves test plan creation, where in the lead or test manager define the scope & objective of testing, determines the strategies, decides between manual and automated testing, define the exits & entry criteria, assigns roles and responsibilities, among other things.
    2. Test Case Creation: It is from this step that the process of testing is initiated by the team. Test cases are prepared on the basis of use cases and the requirements of testing as well as the client/user, such as technical, UI, functional, non-functional, performance, etc.
    3. Select Test Data: Once the test cases are developed by the team, they work together to select or create the required test data, which plays a critical role in test execution. These are the inputs that help the team get expected results.
    4. Test Case Execution: Finally, the test cases created earlier are executed by the team, who constantly monitor the process and record any discrepancies or issues encountered by them during the process. Also, the output of the testing is also recorded here.
    5. Bug Reporting & Fixation: It is in this stage of the process that the team reports all the recorded bugs and issues to the concerned member of the team. Once reported, the programmer or the developer work with the testing team to fix and resolve the issue.
    6. Repeat the Test Cycle (If Required): After all the issues and bugs are resolved and fixed, the team repeats the test cycle to get the expected results.

    Types of tests performed during System Testing:

    Like software testing, system testing is also an amalgamation of multifarious testing techniques, which allow the team to validate the overall performance and functionality of the product. Each of these testing techniques are focused on different aspects of the product and cater to various requirements of the client/user. These types of system testing are:

    • Installation Testing:-

      It is used to check desired functioning of the software, after its successful installation, along with, all necessary requirements

    • Functionality Testing:-

      A type of black-box testing, that enables to assess and evaluate the proper functioning of the software, according to its pre-defined requirements.

    • Recoverability Testing:-

      It is achieved by, deliberate failure or crash of the software, to assess its ability of getting recovered, quickly.

    • Interoperability Testing:-

      It ensures, the ability of software to get compatible and interact with other software or system and their components.

    • Performance Testing:-

      It is done, to examine the response, stability, scalability, reliability and other quality metrics of the software, under different workloads.

    • Scalability Testing:-

      Software should be scalable, along with the increase in load, number of concurrent users, data size, etc. This, arises the need of scalability testing, which is conducted to take care of scalability related issues, with the software.

    • Reliability Testing:-

      This testing, assess the degree of the software, between two failures, and the time it takes to repair.

    • Regression Testing:-

      It guarantees the original functionality of the software, after each modification in it.

    • Documentation Testing:-

      This involves, evaluation of documentation artifacts, prepared before and during the testing phase, in order to assess the testing requirements, covers under documentation testing.

    • Security Testing:-

      To assess, the security features of the software, so as to ensure, protection, authenticity, confidentiality and integrity of the information and data.

    • Usability Testing:-

      Ensures software's user-friendliness feature and prevents end-users from issues or problems, while using and handling the software product.

    Reasons for Performing System Testing:

    System testing is performed by professional or individual testers for various reasons. From evaluating the system to ensuring its compliance with the specified requirements, this type of testing offers great aid to the testing team as well as the other stakeholders of the project. Few of the other reasons for performing this testing are:

    • It ensure that the product meets the quality standards.
    • Verifies that the software system meets the functional, technical and business requirements requested by the customer/client.
    • Performs end to end testing of the software product, which prevents system failures and crashes during it implementation to the live environment.
    • It is performed in an environment that is similar to the production environment, which enables the developers as well as the concerned stakeholders to get an idea of the user’s reaction to the product.
    • It plays a significant role in delivering a quality product to the end users.
    • It is during this stage of software testing life cycle (STLC) that the Application Architecture and Business Requirements are tested.
    • Ensures that the input provided to the system offers expected output/result.

    Difference Between System Testing & Acceptance Testing:

    Though performed after system testing, people usually assume acceptance testing to be a part of system testing. Therefore, to differentiate them from one another, here is a comparison between the two:

    System Testing Acceptance Testing
    1. System testing is a type of end to end and black box testing type. 1. Acceptance testing is a functionality testing type.
    2. It is performed to ensure that the system meets the specified requirements of the client. 2. It is performed to ensure the compliance of the product with business requirements.
    3. It is performed after the completion of integration testing. 3. It is performed after the culmination of system testing.
    4. System testing is performed by independent testers as well as developers. 4. Acceptance testing is performed by testers as well as customers.
    5. It can be both functional & non-functional testing type. 5. This type of testing is mainly functional testing type.

    Find more differences between these two levels of testing here.

    Conclusion:

    An integral part of software testing life cycle, system testing is performed once the process of software development is completed and the product has gone through unit and integration testing. This testing is not limited to one aspect or component of the product but is used to test the software system as a whole, which makes it an important part of any successful testing cycle and hence should be implemented by testers who want to deliver superior user experience.

    To find the differences between system testing & integration testing, click here.