Software Performance Testing
Improve this article..
Performance testing helps identify bottlenecks in a system, establish a baseline for future testing, support a performance tuning effort, and determine compliance with performance goals and requirements.
Performance testing is an ongoing task throughout the life cycle of the project. It not only involves testers, but also developers and operations to run and maintain the application to its performance expectations.
What is performance testing in software?
Performance testing is testing that is performed to determine how fast some aspect of a system performs under a particular workload. It can serve different purposes, such as to demonstrate that the system meets performance criteria.
What should be the focus of performance testing?
Following are some focus areas for performance testing:
- Speed: Determines whether the software application responds quickly.
- Scalability: Determines maximum user load the software application can handle.
- Stability: Determines if the application is stable under varying loads.
What are the common goals of performance testing?
Performance testing has the following goals:
- Assess production readiness
- Evaluate against performance criteria
- Compare performance characteristics of multiple systems or system configurations
- Find the source of performance problems
- Support system tuning
- Find throughput levels
What are the types of performance testing?
Each type of performance testing has a specific focus as noted below:
- Load Testing: Checks the application's ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live.
- Stress Testing: Involves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify breaking point of an application.
- Endurance Testing: Done to make sure the software can handle the expected load over a long period of time.
- Spike Testing: Tests the software's reaction to sudden large spikes in the load generated by users.
- Volume Testing: Large amount of data is populated in database and the overall software system's behavior is monitored. The objective is to check software application's performance under varying database volumes.
- Scalability Testing: Determine the software application's effectiveness in "scaling up" to support an increase in user load. It helps plan capacity addition to your software system.
What are the steps of performance testing?
- Identify the Test Environment: Identify the physical test environment and the production environment, which includes the hardware, software, and network configurations.
- Identify Performance Acceptance Criteria: Identify the response time, throughput, and resource utilization goals and constraints. In general, response time is a user concern, throughput is a business concern, and resource utilization is a system concern.
- Plan and Design Tests: Identify key scenarios, determine variability among representative users such as unique login credentials and search terms.
- Configure the Test Environment: Prepare the test environment, tools, and resources necessary to execute each strategy as features and components become available for test.
- Implement the Test Design: Develop the performance tests in accordance with the test design best practice.
- Execute the Test: Run and monitor your tests. Validate the tests, test data, and results collection.
- Analyze Results, Report, and Retest: Consolidate and share results data. Analyze the data both individually and as a cross-functional team. Reprioritize the remaining tests and re-execute them as needed.
What performance parameters are monitored during performance testing?
- 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.
- Memory Pages per Second: Number of pages written to or read from the disk in order to resolve hard page faults.
- Page Faults per Second: Overall rate in which fault pages are processed by the processor.
- 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.
- Maximum Active Sessions: Maximum number of sessions that can be active at once.
- Hits per Second: Number of hits on a web server during each second of a load test.
- Database Locks: Locking of tables and databases.
- Thread Counts: Number of threads that are running and currently active.
Could you name a few performance testing tools?
Some open source tools include Apache Jmeter, K6, LoadUI, and Grinder. Commercial tools requiring a license include HP LoadRunner, IBM Rational Performance Tester, and Microfocus SilkPerformer.
- AgileLoad. 2013. "Application performance testing." AgileLoad, February. Accessed 2018-06-29.
- Microsoft Docs. 2010. "Chapter 1 – Fundamentals of Web Application Performance Testing." Performance Testing Guidelines for Web Applications, Microsoft Docs, April 27.
- Murty, Srinivas. 2016. "Performance Testing in a Nutshell." Blog, ThoughtWorks, February 23. Accessed 2018-06-29.
- Odom, Phillip. 2014. "Steps of performance testing." Blog, Loadstorm, APRIL 29. Accessed 2014-04-29.
- guru99. 2018. "Performance Parameters Monitored." Blog, guru99.
- Performance Testing in the Cloud
- HTTP Performance Testing
- Mobile App Performance Testing
- Test Frameworks
- A/B Testing
- Cloud Load Balancing