Introduction to Siege

Several factors play an important role in order to make a business succeed. One of them is its online presence in today’s world. In simple words, online presence means an informative and attractive web page. Web page/server are the mirror reflection of how successful a business is. It is crucial to have a stable web server as the performance of an application or a web server will define the user experience which will have a direct impact on business as well.

Now you must be thinking if a web page is so important, so it should be able to function efficiently when in use. The stability of a website is a matter of concern in case of an extreme situation which highlights the importance of testing the web server. By testing, we mean load testing and performance testing which will give stress to the website and tells its performance under stress.

Now you must be thinking testing will require a huge cost and effort for servers which sometimes makes us skip the testing phase. Let me help you in solving this doubt by introducing you to “Siege” which will make testing a simple and achievable task.

What and Why Load Testing?

Its a software testing technique used to examine the behaviour of a system when subject to both normal and extreme expected load conditions. While benchmark utility can be defined as a metric or a point of reference against which software products or services can be compared to assess the quality measures.

Now the question arises why do we need load and performance testing for web applications. The answer is to expose the vulnerabilities. It is a specialized method for detecting issues directly related to user load. It relates to the maximum speed and capacity of the web application in perfect working conditions. It helps us identify the shortcomings of our products and thus improve their performance. Thus, we can see the importance of testing in the following points for  better understanding :

  • Helps in Debugging 
  • Removes shortcomings
  • Improves performance
  • Minimise possibility of failure

Let’s get Started with Siege

Siege is an HTTP load testing and benchmarking utility, a tool for testing web applications. It is used to stress a single URL with a user-defined number of simulated users. Also, it can be used to read many URLs into memory and stress them simultaneously. Additionally, it supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. It lets its user hit a server with a configurable number of simulated clients. Siege was designed and implemented by Jeffrey Fulmer.

The tool has three modes, in which it can operate –

  • regression
  • internet simulation and
  • brute force.       

The question which arises in our mind is why to use Siege only when there are various tools available for load and stress testing. Some alternatives to Siege are Apache Jmeter , Locust , Hey, Wrk. The answer to the above question is the features of Siege. Features of Seige are as follows:

  • Free and open source.
  • Easy to install.
  • Beginner-friendly tool.
  • Configurable with command-line options.
  • Flexible to use.
  • Can customise the testing parameters.

Key concepts

To understand the functionality of the tool Siege, we will go through some key terms which are used in it –

Transactions: It is characterised by the server opening a socket for the client, handling a request, serving data over the wire and closing the socket upon completion.

Concurrency: It is an average number of simultaneous connections, a number which rises as server performance decreases.

Throughput: It refers to the performance of tasks by a computing service or device over a specific period.

Rest all the terms used are self-explanatory like availability, transaction rate, elapsed time, and response time. 

Installation

The process to install Siege is very simple and fast. Following are the steps :

Ubuntu/Debian                                                                                                                                    sudo apt update && sudo apt upgrade -y  
sudo apt install siege -y 
siege --version  

For installation from centos/RHEL or from Source, one can visit the official website of siege “https://www.joedog.org/siege-home/“.

Using Siege

To use Siege is also a simple task, depending on the requirements of the testing we want on our application.

siege -c=1 -r=1 http://<your application url>

Where -c represents the concurrent users and -r represents the repetition value.

Note :  We can use more flags depending on the use case

Example

First Case : When siege aborted due to excessive socket failure

Second Case : Normal Scenario

Conclusion

It is a very efficient tool for stress, load and performance testing for web applications. Although, there are a lot of other options available in the market for testing its features that make it so popular. It gives plenty of options we can use to make our tests behave as close as possible to a real-life environment.


Blog Pundit: Deepak Gupta and Sandeep Rawat

Opstree is an End to End DevOps solution provider

Connect Us

Leave a Reply