Need for Performance Testing
Why Performance Testing?
Have you ever waited to load your favorite social networking site on a busy day? How many times you faced challenges because of slow responding web page? How many times did you say " it is slow..". These are some of the day in life performance issues faced by common people. Now so called Performance Testing is performance validation technique even before application being used by the end users. And the objective of this process is to avoid any potential performance issues. Performance Testing is unique among other testing skills since it requires additional knowledge of application architecture, development technologies and frameworks and of course the expertise of load testing tools. Another interesting aspect of Performance Testing is, it doesn’t stop by validating the performance of a system but it opens up an area to identify the performance bottleneck and drill down to find out the root cause of the problem. It can even go further in to Performance Engineering activities where we can recommend the solutions for performance bottlenecks identified.
So Performance Testing is definitely unique!!
What are the factors affecting Performance?
Most of the users are not really aware of the factors affecting the responsiveness of the system. To understand it better, let us try to understand the components in the application. In early days, most of the applications were client-server based. It means that client application will do all the business processing and connect to the backend database server application to store and retrieve data. So all the business logic is inside the client itself. That is the reason they are called as thick client or fat client applications. The web or internet applications brought in a big change. The whole business processing logic was moved from client to server. And the applications were made accessible using web browsers. These web applications have 3 types of components - client, web/application server and database server. Obviously, these applications are designed to support multiple users accessing concurrently.
Considering different components in a web applications, there are so many factors affecting the performance. Some of them are speed of the desktop computer running the browser, speed of the browser itself, internet type - Dial up, 3G/4G, DSL, Cable etc..., internet bandwidth like 512 Kbps, 7 Mbps, 15 Mbps, distance between web browser and the servers hosting the website, capacity of the servers and the number of users using the application. If the users and servers are separated by very long distance, it will affect the performance of the application. To access web page , data has to travel through multiple computers (hops) over internet. If the distance is more the hops will increase, which will in turn increase the time.
Server capacity is one of main factor affecting the performance of the server. Lets take an example of an application server. It has multiple compoments. First one is the Hardware, which includes the CPU and Memory. In a multi user , multi process, multi threaded environment, servers with 2 CPUs can do more work compared to one with 1 CPU. So it is one of the deciding factor. Next comes Operating System. It decides how to run the multiple processes on the hardware. And the final one is the application server software. It plays major role since it is going to manage the whole applicationl. Application server has it own threads to manage the application. Even if the Operating System allows the threads, but application server restricts the number of threads to serve the request, performance will be bad. So in summary, CPU, Memory, Operating System and Application server software decides the capacity of the server.