As you can witness the rapid growth in IT industry, the software application development has become pinnacle of our daily usage. Every year thousands of software’s are being developed and are creating a buzz in the industry. Not all software’s can reach user expectations, they may lack many aspects such interface, look n feel, user friendly and “Performance“. Well performance is surely is an important and crucial aspect which should not be ignored . Performance testing is necessary before marketing any software product. It ensures customer satisfaction & protects investor’s investment against product failure. Costs of performance testing are usually more than made up for with improved customer satisfaction, loyalty and retention.. Lets get familiar with performance testing and what is the impact of performance testing on a software.
What is Performance Testing ?
Performance Testing is a discipline concerned with detecting and reporting the current behavior of the software system. Performance testing is a technical investigation done to determine or validate the responsiveness, speed, scalability, and/or stability characteristics of the product under test.
Why Performance Testing ?
Performance testing is done to tune an application without any performance glitches such as speed, stability and scalability. Most importantly, performance testing uncovers what needs to be improved before the product goes to live. Without rigorous performance testing, software is likely to suffer from issues such as: running slow while several users use it simultaneously, inconsistencies across different operating systems and poor usability. Performance testing will determine whether or not a software meets industry set standards such as responsive, speed, scalability and stability requirements under expected workloads. Software with improper performance testing will fail to meet the standards which results in a bad reputation and has a direct impact on the sales of the application. So it is recommended that a software should under go rigorous and planned performance testing to avoid performance bottlenecks.
Types of Performance Testing
There are various types of performance testing, well known types can be as follows:
Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the system under a specific expected load. This load can be the expected concurrent number of users on the application performing a specific number of transactions within the set duration. This test will give out the response times of all the important business critical transactions. If the database, application server, etc. are also monitored, then this simple test can itself point towards bottlenecks in the application software.
Stress testing is normally used to understand the upper limits of capacity within the system. This kind of test is done to determine the system’s robustness in terms of extreme load and helps application administrators to determine if the system will perform sufficiently if the current load goes well above the expected maximum.
Soak testing, also known as endurance testing, is usually done to determine if the system can sustain the continuous expected load. During soak tests, memory utilization is monitored to detect potential leaks. Also important, but often overlooked is performance degradation. That is, to ensure that the throughput and/or response times after some long period of sustained activity are as good or better than at the beginning of the test. It essentially involves applying a significant load to a system for an extended, significant period of time. The goal is to discover how the system behaves under sustained use.
Spike testing is done by suddenly increasing the number of or load generated by users – by a very large amount – and observing the behavior of the system. The goal is to determine whether performance will suffer, the system will fail, or it will be able to handle dramatic changes in load.
Rather than testing for performance from the perspective of load, tests are created to determine the effects of configuration changes to the system’s components on the system’s performance and behavior. A common example would be experimenting with different methods of load-balancing.
Isolation testing is not unique to performance testing but involves repeating a test execution that resulted in a system problem. Often used to isolate and confirm the fault domain.
Performance Testing Process
The methodology adopted for performance testing can vary widely but the objective for performance tests remain the same. It can help demonstrate that your software system meets certain pre-defined performance criteria. Or it can help compare performance of two software systems. It can also help identify parts of your software system which degrade its performance.
Performance Parameters Monitored
The basic parameters monitored during performance testing include:
Processor Usage – amount of time processor spends executing non-idle threads.
Memory use – amount of physical memory available to processes on a computer.
Disk time – amount of time disk is busy executing a read or write request.
Bandwidth – shows the bits per second used by a network interface.
Private bytes – number of bytes a process has allocated that can’t be shared amongst other processes. These are used to measure memory leaks and usage.
Committed memory – amount of virtual memory used.
Memory pages/second – number of pages written to or read from the disk in order to resolve hard page faults. Hard page faults are when code not from the current working set is called up from elsewhere and retrieved from a disk.
Page faults/second – the overall rate in which fault pages are processed by the processor. This again occurs when a process requires code from outside its working set.
CPU interrupts per second – is the avg. number of hardware interrupts a processor is receiving and processing each second.
Disk queue length – is the avg. no. of read and write requests queued for the selected disk during a sample interval.
Network output queue length – length of the output packet queue in packets. Anything more than two means a delay and bottlenecking needs to be stopped.
Network bytes total per second – rate which bytes are sent and received on the interface including framing characters.
Response time – time from when a user enters a request until the first character of the response is received.
Throughput – rate a computer or network receives requests per second.
Amount of connection pooling – the number of user requests that are met by pooled connections. The more requests met by connections in the pool, the better the performance will be.
Maximum active sessions – the maximum number of sessions that can be active at once.
Hit ratios – This has to do with the number of SQL statements that are handled by cached data instead of expensive I/O operations. This is a good place to start for solving bottlenecking issues.
Hits per second – the no. of hits on a web server during each second of a load test.
Rollback segment – the amount of data that can rollback at any point in time.
Database locks – locking of tables and databases needs to be monitored and carefully tuned.
Top waits – are monitored to determine what wait times can be cut down when dealing with the how fast data is retrieved from memory
Thread counts – An applications health can be measured by the no. of threads that are running and currently active.
Garbage collection – has to do with returning unused memory back to the system. Garbage collection needs to be monitored for efficiency.
Performance Test Tools
There are a wide variety of performance testing tools available in market. The tool you choose for testing will depend on many factors such as types of protocol supported , license cost , hardware requirements , platform support etc. Below is a list of popularly used testing tools.
- HP Loadrunner – is the most popular performance testing tools on the market today. This tool is capable of simulating hundreds of thousands of users, putting applications under real life loads to determine their behavior under expected loads.
- Apache JMeter – The Apache JMeter desktop application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance.Apache JMeter may be used to test performance both on static and dynamic resources (Files, Web dynamic languages – PHP, Java, ASP.NET, etc. -, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.
Reference from guru99 .I hope the above information is useful and easy to understand. Waiting for your valuable feedback and comments which helps to improve my standards.
Happy Performance Testing !!!