System Testing includes testing of a fully integrated software system. Generally, a computer system is made with the integration of software (any software is only a single element of a computer system). The software is developed in units and then interfaced with other software and hardware to create a complete computer system. In other words, a computer system consists of a group of software to perform the various tasks, but only software cannot perform the task; for that software must be interfaced with compatible hardware. System testing is a series of different type of tests with the purpose to exercise and examine the full working of an integrated software computer system against requirements.

System Testing

To check the end-to-end flow of an application or the software as a user is known as System testing. In this, we navigate (go through) all the necessary modules of an application and check if the end features or the end business works fine, and test the product as a whole system.

It is end-to-end testing where the testing environment is similar to the production environment.

System Testing

There are four levels of software testing: unit testing, integration testing, system testing and acceptance testing, all are used for the testing purpose. Unit Testing used to test a single software; Integration Testing used to test a group of units of software, System Testing used to test a whole system and Acceptance Testing used to test the acceptability of business requirements. Here we are discussing system testing which is the third level of testing levels.

Hierarchy of Testing Levels

System Testing

There are mainly two widely used methods for software testing, one is White box testing which uses internal coding to design test cases and another is black box testing which uses GUI or user perspective to develop test cases.

  • White box testing
  • Black box testing

System testing falls under Black box testing as it includes testing of the external working of the software. Testing follows user's perspective to identify minor defects.

System Testing includes the following steps.

  • Verification of input functions of the application to test whether it is producing the expected output or not.
  • Testing of integrated software by including external peripherals to check the interaction of various components with each other.
  • Testing of the whole system for End to End testing.
  • Behavior testing of the application via auser's experience

Example of System testing

Suppose we open an application, let say www.rediff.com, and there we can see that an advertisement is displayed on the top of the homepage, and it remains there for a few seconds before it disappears. These types of Ads are done by the Advertisement Management System (AMS). Now, we will perform system testing for this type of field.

The below application works in the following manner:

  • Let's say that Amazon wants to display a promotion ad on January 26 at precisely 10:00 AM on the Rediff's home page for the country India.
  • Then, the sales manager logs into the website and creates a request for an advertisement dated for the above day.
  • He/she attaches a file that likely an image files or the video file of the AD and applies.
  • The next day, the AMS manager of Rediffmail login into the application and verifies the awaiting Ad request.
  • The AMS manager will check those Amazons ad requests are pending, and then he/she will check if the space is available for the particular date and time.
  • If space is there, then he/she evaluate the cost of putting up the Ad at 15$ per second, and the overall Ad cost for 10 seconds is approximate 150$.
  • The AMS manager clicks on the payment request and sends the estimated value along with the request for payment to the Amazon manager.
  • Then the amazon manager login into the Ad status and confirms the payment request, and he/she makes the payment as per all the details and clicks on the Submit and Pay
  • As soon as Rediff's AMs manager gets the amount, he/she will set up the Advertisement for the specific date and time on the Rediffmail's home page.

The various system test scenarios are as follows:

Scenario1: The first test is the general scenario, as we discussed above. The test engineer will do the system testing for the underlying situation where the Amazon manager creates a request for the Ad and that Ad is used at a particular date and time.

Scenario2: Suppose the Amazon manager feels that the AD space is too expensive and cancels the request. At the same time, the Flipkart requests the Ad space on January 26 at 10:00 AM. Then the request of Amazon has been canceled. Therefore, Flipkart's promotion ad must be arranged on January 26 at 10 AM.

After all, the request and payment have been made. Now, if Amazon changes their mind and they feel that they are ready to make payment for January 26 at 10 AM, which should be given because Flipkart has already used that space. Hence, another calendar must open up for Amazon to make their booking.

Scenario3: in this, first, we login as AMS manger, then click on Set Price page and set the price for AD space on logout page to 10$ per second.

Then login as Amazon manager and select the date and time to put up and Ad on the logout page. And the payment should be 100$ for 10 seconds of an Ad on Rediffmail logout page.

System Testing

Note: Generally, every test engineer does the functional, integration, and system testing on their assigned module only.

As we can see in the below image, we have three different modules like Loans, Sales, and Overdraft. And these modules are going to be tested by their assigned test engineers only because if data flow between these modules or scenarios, then we need to clear that in which module it is going and that test engineer should check that thing.

Let us assume that here we are performing system testing on the interest estimation, where the customer takes the Overdraft for the first time as well as for the second time.

System Testing

In this particular example, we have the following scenarios:

Scenarios 1

System Testing
  • First, we will log in as a User; let see P, and apply for Overdraft Rs15000, click on apply, and logout.
  • After that, we will log in as a Manager and approve the Overdraft of P, and logout.
  • Again we will log in as a P and check the Overdraft balance; Rs15000 should be deposited and logout.
  • Modify the server date to the next 30 days.
  • Login as P, check the Overdraft balance is 15000+ 300+200=15500, than logout
  • Login as a Manager, click on the Deposit, and Deposit Rs500, logout.
  • Login as P, Repay the Overdraft amount, and check the Overdraft balance, which is Rs zero.
  • Apply for Overdraft in Advance as a two-month salary.
  • Approve by the Manager, amount credit and the interest will be there to the processing fee for 1st time.
  • Login user → Homepage [Loan, Sales, Overdraft] → Overdraft page [Amount Overdraft, Apply Overdraft, Repay Overdraft] →Application
  • Login manager → Homepage [Loan, Sales, Overdraft] → Overdraft page [Amount Overdraft, Apply Overdraft, Repay Overdraft, Approve Overdraft]→ Approve Page →Approve application.
  • Login as user P → Homepage [Loan, Sales, Overdraft] → Overdraft page [Amount Overdraft, Apply Overdraft, Repay Overdraft] →Approved Overdraft →Amount Overdraft
  • Login as user P→Homepage [Loan, Sales, Overdraft] → Overdraft page [Amount Overdraft, Apply Overdraft, Repay Overdraft] →Repay Overdraft → with process fee + interest amount.
System Testing

Scenario 2

Now, we test the alternative scenario where the bank provides an offer, which says that a customer who takes Rs45000 as Overdraft for the first time will not charge for the Process fee. The processing fee will not be refunded when the customer chooses another overdraft for the third time.

We have to test for the third scenario, where the customer takes the Overdraft of Rs45000 for the first time, and also verify that the Overdraft repays balance after applying for another overdraft for the third time.

Scenario 3

In this, we will reflect that the application is being used generally by all the clients, all of a sudden the bank decided to reduce the processing fee to Rs100 for new customer, and we have test Overdraft for new clients and check whether it is accepting only for Rs100.

But then we get conflicts in the requirement, assume the client has applied for Rs15000 as Overdraft with the current process fee for Rs200. Before the Manager is yet to approve it, the bank decreases the process fee to Rs100.

Now, we have to test what process fee is charged for the Overdraft for the pending customer. And the testing team cannot assume anything; they need to communicate with the Business Analyst or the Client and find out what they want in those cases.

Therefore, if the customers provide the first set of requirements, we must come up with the maximum possible scenarios.

Types of System Testing

System testing is divided into more than 50 types, but software testing companies typically uses some of them. These are listed below:

System Testing

Regression Testing

Regression testing is performed under system testing to confirm and identify that if there's any defect in the system due to modification in any other part of the system. It makes sure, any changes done during the development process have not introduced a new defect and also gives assurance; old defects will not exist on the addition of new software over the time.


Load Testing

Load testing is performed under system testing to clarify whether the system can work under real-time loads or not.

Functional Testing

Functional testing of a system is performed to find if there's any missing function in the system. Tester makes a list of vital functions that should be in the system and can be added during functional testing and should improve quality of the system.

Recovery Testing

Recovery testing of a system is performed under system testing to confirm reliability, trustworthiness, accountability of the system and all are lying on recouping skills of the system. It should be able to recover from all the possible system crashes successfully.

In this testing, we will test the application to check how well it recovers from the crashes or disasters.

Recovery testing contains the following steps:

  • Whenever the software crashes, it should not vanish but should write the crash log message or the error log message where the reason for crash should be mentioned. For exampleC://Program Files/QTP/Cresh.log
  • It should kill its own procedure before it vanishes. Like, in Windows, we have the Task Manager to show which process is running.
  • We will introduce the bug and crash the application, which means that someone will lead us to how and when will the application crash. Or By experiences, after few months of involvement on working the product, we can get to know how and when the application will crash.
  • Re-open the application; the application must be reopened with earlier settings.

For example: Suppose, we are using the Google Chrome browser, if the power goes off, then we switch on the system and re-open the Google chrome, we get a message asking whether we want to start a new session or restore the previous session. For any developed product, the developer writes a recovery program that describes, why the software or the application is crashing, whether the crash log messages are written or not, etc.

Migration Testing

Migration testing is performed to ensure that if the system needs to be modified in new infrastructure so it should be modified without any issue.

Usability Testing

The purpose of this testing to make sure that the system is well familiar with the user and it meets its objective for what it supposed to do.


Software and Hardware Testing

This testing of the system intends to check hardware and software compatibility. The hardware configuration must be compatible with the software to run it without any issue. Compatibility provides flexibility by providing interactions between hardware and software.

Why is System Testing Important?

  • System Testing gives hundred percent assurance of system performance as it covers end to end function of the system.
  • It includes testing of System software architecture and business requirements.
  • It helps in mitigating live issues and bugs even after production.
  • System testing uses both existing system and a new system to feed same data in both and then compare the differences in functionalities of added and existing functions so, the user can understand benefits of new added functions of the system.

Testing Any Application

Here, we are going to test the Gmail application to understand how functional, integration, and System testing works.

System Testing

Suppose, we have to test the various modules such as Login, Compose, Draft, Inbox, Sent Item, Spam, Chat, Help, Logout of Gmail application.

System Testing

We do Functional Testing on all Modules First, and then only we can perform integration testing and system testing.

In functional testing, at least we have one module to perform functional testing. So here we have the Compose Module where we are performing the functional testing.

Compose

The different components of the Compose module are To, CC, BCC, Subject, Attachment, Body, Sent, Save to Draft, Close.

  • First, we will do functional testing on the To

Input

Results

Positive inputs

mike@gmail.com

Accept

Mike12@gmail.com

Accept

Mike@yahoo.com

Accept

Negative inputs

Mike@yahoocom

Error

Mike@yaho.com

Error

  • For CC & BCC components, we will take the same input as To component.
  • For Subject component, we will take the following inputs and scenarios:

Input

Results

Positive inputs

Enter maximum character

Accept

Enter Minimum character

Accept

Blank Space

Accept

URL

Accept

Copy & Paste

Accept

Negative inputs

Crossed maximum digits

Error

Paste images / video / audio

Error

  • Maximum character
  • Minimum character
  • Flash files (GIF)
  • Smiles
  • Format
  • Blank
  • Copy & Paste
  • Hyperlink
  • Signature
  • For the Attachment component, we will take the help of the below scenarios and test the component.
    • File size at maximum
    • Different file formats
    • Total No. of files
    • Attach multiple files at the same time
    • Drag & Drop
    • No Attachment
    • Delete Attachment
    • Cancel Uploading
    • View Attachment
    • Browser different locations
    • Attach opened files
  • For Sent component, we will write the entire field and click on the Sent button, and the Confirmation message; Message sent successfully must be displayed.
  • For Saved to Drafts component, we will write the entire field and click on aved to drafts, and the Confirmation message must be displayed.
  • For the Cancel component, we will write all fields and click on the Cancel button, and the Window will be closed or moved to save to draft or all fields must be refreshed.

Once we are done performing functional testing on compose module, we will do the Integration testing on Gmail application's various modules:

Login

  • First, we will enter the username and password for login to the application and Check the username on the Homepage.

Compose

  • Compose mail, send it and check the mail in Sent Item [sender]
  • Compose mail, send it and check the mail in the receiver [Inbox]
  • Compose mail, send it and check the mail in self [Inbox]
  • Compose mail, click on Save as Draft, and check-in sender draft.
  • Compose mail, send it invalid id (valid format), and check for undelivered message.
  • Compose mail, close and check-in Drafts.

Inbox

  • Select the mail, reply, and check in sent items or receiver Inbox.
  • Select the mail in Inbox for reply, Save as Draft and check in the Draft.
  • Select the mail then delete it, and check in Trash.

Sent Item

  • Select the mail, Sent Item, Reply or Forward, and check in Sent item or receiver inbox.
  • Select mail, Sent Item, Reply or Forward, Save as Draft, and verify in the Draft.
  • Select mail, delete it, and check in the Trash.

Draft

  • Select the email draft, forward and check Sent item or Inbox.
  • Select the email draft, delete and verify in Trash.

Chat

  • Chat with offline users saved in the inbox of the receiver.
  • Chat with the user and verify it in the chat window.
  • Chat with a user and check in the chat history.

Note: During testing, we need to wait for a particular duration of time because system testing can only be performed when all the modules are ready and performed functional and integration testing.