tech · 12 May 2022

An Introduction To Server Testing

Sergey Sotnichenko

Sergey Sotnichenko

QA Engineer

server testing
Illustration by Amir Kerr

Regardless of what digital solution you're running — a website, a mobile app, or something else, you need to ensure its flawless performance. Server speed and storage capacity can greatly influence the app's performance.

Server testing allows you to assess your app performance and find out what needs to be improved. More importantly, it can help you look beyond your software solution and optimize your product, app, or IoT device experience. Improving and empowering your product is your key to building truly revolutionary, experience-optimized applications. 

What is a Server?

A server is a special computer (or a group of computers) for serving some particular purpose it was programmed for. Every day we use different websites, platforms, games, applications, and web services without even noticing — these all run on servers. 

And the device that makes the request and receives a response from the server is called a client. So basically, we are service consumers, and our devices are server clients. 

client-server architecture (1).png
Client-server architecture

As clients, we communicate to servers when we use the address line in our browser for anything from checking the weather forecast to googling our favorite movie to watch. HTTP and its more secure successor, HTTPS, are the protocols that act as a mediator between the server and the client. They both have the same functionality.

These protocols transfer the information to a server, and then the server responds to us (clients) with the item or service we are looking for. But where do servers find the correct information? Or do they already have it? 

Most servers are supported by databases with tons of information. When a server gets a client request, it processes it, finds the result, and sends it back to the client, like a piece of cake in the fridge we've been dreaming of for the last few hours, and then we take it out of the fridge and have it. 

So, that's what a three-tier client-server architecture looks like. Three-tier architecture is a well-established software app architecture that consists of three logical computing tiers — the presentation tier or user interface, the application tier where the data is processed, and the data tier, where the app's data is. The three-tier architecture has no impact on the speed of work or correctness. 

Three-Tier Architecture (1).png
Three-tier client-server architecture including database

Three-tier architecture works the same as a two-tier client-server architecture but includes a new tier — a database.

The database has the application’s storage. Actually, that's what it's made for. Storage is an important part of the database. The more storage a database has, the more information it can store, but not always.

Screenshot 2022-04-20 at 17.49.00.png
Source: Clean Memes

But that doesn't change any fact of how the server works, so let's keep moving forward. What if the application doesn't work the way it should? What if something goes wrong when we press the "Enter" button?

Here's the answer. Before users can use any app or website, it is tested to ensure its top-notch performance and bug-free experience. Servers are no exception. 

What is Server Testing?

Server testing is a process to ensure that all services are stable, a server is secure, and it can withstand high load. As a rule, a testing suite includes a series of test cases to demonstrate the high-level performance and speed. 

There are four key types of server testing:

  • Load testing
  • Stress testing
  • Performance testing
  • Penetration testing

Load testing

Just like any other type of testing, the process starts with a basic test to ensure that the system works as it should with the anticipated load.

After the first check is successfully passed, testers should pay attention to the server response speed over HTTP or HTTPS, which is quite important. The faster a website or app works, the more time users, customers, or just visitors spend with an app or website, thus leading to more conversions and higher returns on investment (sales, ratings, organic search results, etc.). 

Key reasons to run a load and performance testing: 

  • Tracking the time taken for different operations with low-to-high intensity loads on a system (does the server have enough power to withstand the load)
  • Finding out the number of users that can use the product simultaneously
  • Searching for the peak point of the system load while the system still works correctly (after that, your tech team will find out the maximum load for the system)
  • Testing the system performance using stress loads and finding out the load limits for a system

Stress testing

It sounds stressful, doesn't it? There is nothing to be worried about. Testers run a series of stress testing sessions to check the system's performance under unfavorable conditions, its error handling capabilities, and its ability to recover after extremely high loads. This is highly intensive testing to find out if the system can withstand the loads when a number of users do something like sending high volumes of HTTP requests to a website or app.

The system's ability to recover after stress loads is probably the most important point of stress testing. While running a stress test, developers can find answers to the following questions:

  • What's our plan if the system goes down?
  • Does the system have a high level of resistance to stress testing? If it does, how does it react to the situation? Does it work slowly?
  • What's the impact on the system’s request handling under different load conditions? 

The main goal of running a stress test is to find the vulnerabilities of the system. Testers need to find all the bugs before users do. That's why we need to run a series of server tests.

You don't want to get in such a situation, do you?

Performance testing

This type of server testing is similar to load testing, but it's used to evaluate how a system performs in terms of stability and responsiveness under a particular workload. In other words, performance testing can help determine if the server has enough resources like memory or CPU to process a standard amount of requests. 

What can performance testing measure?

  • Load times
  • Response times
  • Scalability
  • Overall performance of an app 

Penetration testing

Penetration testing, or ethical hacking, helps to check for exploitable vulnerabilities. It's a simulated cyberattack that can help ensure that no hackers or scammers can get access to sensitive data like credit cards, personal information, and passwords. 

Such tests allow you to detect critical vulnerabilities and their impact on the whole system and to find ways to fix them. Unfortunately, apps and websites may have dozens of security vulnerabilities. But the good news is that testers can find them all before the app or website goes live.

The Open Web Application Security Project (OWASP) is an online platform where you can find tons of free articles, methodologies, documentation, tools, and technologies regarding web application security.

Penetration testers and ethical hackers know how to leverage the OWASP and harness its power to find weak points in the app's security layers. You can find a list of basic vulnerabilities here.

Why Should You Test Your Servers?

Without server testing, developers need to spend more time locating issues and fixing them. Thanks to asynchronous testing, developers can save even more time and money. Server tests can identify changes faster than manual testing on the working app. 

Here are three reasons why you need to run server testing:

Detect all the errors

While running server testing, you can find all errors and bugs that may affect the website or app performance. Server testing can assess how a new feature affects the app's performance.

Related: How to Write a Bug Report That Will Make Your Engineers Love You [+Bug Report Template]

Determine the number of concurrent users

Server tests can determine the maximum number of users who can use your app or website at the same time. Also, you can understand if your server has enough bandwidth, storage, and processing capacity for the desired amount of users. 

Improve app performance

Server testing can help you optimize the database and reduce the time required to request data. 

Server testing can help you deliver a better product or service to your target users. Flawless app or website performance leads to less customer churn and more users. Moreover, optimized server performance can also reduce your expenses. 

Stages of Penetration Server Testing 

Regardless of what type of server testing you're running, it usually goes through a set number of stages. Here's how we run the penetration testing series at Orangesoft:

Test planning

Our testers define the scope and goals as well as tactics and methodologies required to test your app.

Scanning the system

We need to understand how the app can respond to various loads at this step. 

Penetration testing

To ensure the highest security of our web and mobile app solutions, we run penetration testing to gain access to the system using security weaknesses, such as SQL injections and script injections in the input fields.

Access maintenance

The main idea is to simulate real persistent threats and find ways to fix them.

Analysis

The results of the penetration test are compiled in a report covering the following issues: vulnerabilities found, sensitive data access, the pen tester time spent, and ways to fix the bugs. 

Top Things to Keep in Mind with Server Testing 

While partnering with a professional web and mobile app development agency, you don't have to worry about any testing issues. However, it's better to know about them. Here are the top three things you need to know about before starting your project:

Testing takes time

It takes some time to write testing scripts and run the testing series, but it can save your team lots of time and resources in the long run. 

You need time for maintenance

Changes also require some time and resources. If a new feature is added, it will also need an extra script to be tested. 

Documentation

Without the appropriate documentation, you won't be able to write the scripts. So, from the perspective of testing, documentation is your king. 

Summing up 

The benefits of server testing are obvious from both a development and business perspective. The development of a web or mobile app solution involves multiple iterations of the same product that results in multiple rounds of tests. 

The goal of any development process is a bug-free software solution that meets all the initial requirements and security standards. With server-side testing, you test the backbone of your app or website, including the database, algorithms, or formulas for specific responses. Running server-side tests allows you to keep changes secure, easy to roll back, and low impact. But server-side testing cannot eliminate client-side testing that deals with the usability and appearance of a digital solution. 

Both types of testing are vital for your development process. At Orangesoft, we ensure that the developed application meets all security standards and the clients' requirements. Contact us to discuss your next project details. 

Rate this article!

(7 ratings, average: 5 out of 5)