What is Performance testing?
Performance testing is that the testing that is performed to establish however the elements of a system are acting underneath a selected given situation. This testing is that the method of deciding the speed or effectiveness of a computer, network, software program. This process can involve quantitative tests done in a lab, such as measuring the response time or the number of MIPS (millions of instructions per second) at which a system functions. Qualitative attributes such as reliability, scalability and interoperability may also be evaluated. Performance testing is often done in conjunction with stress testing.
Why performance testing?
Performance Testing is finished to produce stakeholders with info concerning their application relating to speed, stability and quantifiability. most significantly, the quicker the web site, the additional revenue it’ll generate.
Performance testing does not aim to find defects in the application. It also does not pass or fail the test. Rather, it addresses the critical task of setting the benchmark and standard for the application. Performance testing should be done very accurately. Close monitoring of the application/system performance is the primary characteristic of performance testing.
The primary goal of performance testing includes establishing the benchmark behavior of the system. There are a number of industry-defined benchmarks which should be met during performance testing.
This testing encompasses a range of different tests which enable analysis of various aspects of the system. One of the simplest ways to test the performance of a website is through load testing. This provides information about the behaviour of the system when handling specific loads of users, who might be providing a number of transactions simultaneously on the same application.
What is the difference between Performance testing and Performance engineering?
Performance testing: In Performance testing, testing cycle includes demand gathering, scripting, execution, result sharing and report generation.
Performance engineering: It is a step ahead of Performance testing where after execution; results are analyzed with the aim to find the performance bottlenecks and the solution is provided to resolve the identified issues.
What are the Types of Testing in performance Testing?
There are different types of testing in Performance testing:
Load Testing:It is a type of performance testing conducted to evaluate the behavior of a system at increasing workload. It’s a type of performance testing that simulates real-world load on any software, application, or website. It examines how the system behaves during normal and high loads and determines if a system, piece of software, or computing device can handle high loads given a high demand of end users. This tool is typically applied when a software development project nears completion.
Stress Testing: It is a type of performance testing conducted to evaluate the behavior of a system at or beyond the limits of its anticipated workload.
Soak testing or Endurance Testing: It is a type of performance testing conducted to evaluate the behavior of a system when a significant workload is given continuously. it’s typical during this type of performance test to keep up an explicit level of user concurrency for an extended amount of time. this sort of test will establish problems relating to memory allocation, log file handles, and database resource utilization.
Spike Testing: It is a type of performance testing conducted to evaluate the behavior of a system when the load is suddenly and substantially increased. Spike testing is mainly done to see how the system reacts with unexpected rise and fall of the load. It is also called Data volume testing.
Volume Testing: This testing is to verify that the performance of the application is not affected by the volume of data that is being handled by the application. In order to execute a Volume Test, a huge volume of data is entered into the database. This test can be incremental or a steady test. In the incremental test, the volume of data is increased gradually.
Configuration testing: Rather than testing for performance from a load perspective, tests are created to see the consequences of configuration changes to the system’s elements on the system’s performance and behavior. a typical example would be experimenting with totally different ways of load-balancing.
Isolation testing: It is not unique to performance testing but involves repeating a test execution that resulted in a system problem. Such testing can often isolate and confirm the fault domain.
Internet testing: this is often a comparatively new sort of performance testing once international applications like Facebook, Google and Wikipedia, area unit performance tested from load generators that area unit placed on the particular target continent whether or not physical machines or cloud VMs. These tests sometimes need an immense quantity of preparation and monitoring to be executed with success.
Reliability or Recovery Testing: This testing is to verify whether or not the application is able to return back to its normal state after a failure or abnormal behavior and how long does it take for it to do so
What are the benefits of load runner on testing tools?
Benefit of LoadRunner testing tools is
- Supports most of the protocols2.
- Makes correlation3 much easier. We will dig into correlation through a series of posts later.
- Nice GUI generated script through a one click recording, of course you would need to modify the script according to your needs.
- Versatility
- Test Results
- Easy Integrations
- Robust reports
- Enterprise Package
Can you define Agile Testing?
A software testing practice that follows the principles of agile software development is called Agile Testing. It is an iterative development methodology, where requirements evolve through collaboration between the customer and self-organizing teams and agile aligns development with customer needs.
Can you define baseline and benchmark testing?
Baseline testing is the process of testing a set of tests to get the performance information. This information can be used as a point of reference when in future changes are made to the application whereas Benchmarking is the process of comparing your system performance against an industry standard that is given by some other organization.
What is the difference between pilot and beta testing?
pilot testing is nothing but actually using the product (limited to some users) and in beta testing we do not input real data, but it’s installed at the end customer to validate if the product can be used in production.
Can you explain distributed load testing?
In this testing we test the application for a number of users accessing the application at a same time. In distributed load testing test cases are execute to determine the application behavior. Now application behavior is monitored, recorded and analyzed once multiple users at the same time use the system. Distributed load testing is that the method exploitation that multiple systems may be used for simulating load of enormous number of users. the explanation for doing the distributed load testing is that to beat the limitation single system to come up with large number of threads
What are the best performance testing tools?
The best Performance Testing Tools are:
- Apache JMeter
- LoadRunner
- WebLOAD
- LoadUI NG Pro
- SmartMeter.io
- Appvance
- NeoLoad
- LoadComplete
- WAPT
- Loadstorm
- CloudTest
- Httperf
- Loadster
- LoadImpact
- Rational Performance Tester
- Testing Anywhere
- OpenSTA
- QEngine (ManageEngine)
What are tools of performance testing?
Following are some popular commercial testing tools are:
LoadRunner(HP): this for web and other application. It provides a variety of application environments, platforms and database. Number of server monitors to evaluate the performance measurement of each component and tracking of bottlenecks.
QAload(Compuware): It is used for load testing of web, database and char-based system.
WebLoad(RadView): It allows comparing of running test vs. test metrics. It is an enterprise-scale load testing tool which features a Load Generation Console, comprehensive IDE, and a sophisticated Analytics Dashboard.
Rational Performance Tester (IBM): It is used to identify presence and cause of system performance bottlenecks. It is a performance and load testing tool developed by IBM Corporation.
Silk Performer (Borland): allow prediction of behavior of e-business environment before it is deployed, regardless of size and complexity.
SmartMeter.io: It is an alternative to JMeter and aims to fix its drawbacks. It allows for easy scriptless test scenario creation using the so-called Recorder, yet still lets you make advanced edits of the test.
Can you explain profiling?
Profiling is a process of pinpointing a bottleneck performance at minute levels this is often done by performance groups for engineering which has developers or performance testers. you’ll profile in any application layer obtaining tested. If you would like to try to application profiling you may got to use tools for performance profiling of application servers.
once profiling an application server, you identify problems at the amount of code resembling memory intensive API’s If the database is what you’re profiling victimization the tools for database profiling, you’ll establish variety of things such as a full table scan question, high value queries and therefore the range of executed SQLs.
Can you define Overlay graph and Correlate graph?
Overlay Graph: It overlay the content of two graphs that shares a common x-axis. Left Y-axis on the merged graph show the current graph value & Right Y-axis show the value of Y-axis of the graph that was merged.
Correlate Graph: Plot Y-axis of two graphs against each other. The active graph Y-axis becomes X-axis of merged graph. Y-axis of the graph that was merged becomes merged graph Y-axis.
Can you explain performance tuning? How many types are there?
Performance tuning is done for improving the system performance. Performance tuning can involve configuration changes to hardware, software or storage resources and network components. Performance tuning can also include tuning SQL queries and tuning an application underlying code to cater for concurrency and to improve efficiency.
Performance tuning can result in hardware changes being made. This is a last resort; ideally tuning changes will result in a reduction of resource utilization. There are two types of Performance tuning
Hardware Tuning: Optimizing, adding or replacing hardware components of the system and changes done in the infrastructure level to improve system performance is called hardware tuning.
Software Tuning: Identifying the software level bottlenecks by profiling the code, database etc. Fine tuning or modifying the software to fix the bottlenecks is called software tuning.
Why does JMeter become a natural choice of tester when it comes to performance testing?
JMeter tool has benefits like:
- It can be used for testing both static resources like JavaScript and HTML, as well as dynamic resources like Servlets, JSP, Ajax etc.
- It provides a variety of graphical analyses of performance reports
- JMeter has a tendency to determine the maximum number of concurrent users that your website can handle
Can you explain components of LoadRunner?
The components of LoadRunner are:
- The Virtual User Generator(vugen.exe)
- Controller(wlrun.exe), and the Agent process(magentproc.exe)
- LoadRunner Analysis(analysisui.exe) and Monitoring
- LoadRunner Books Online
What are the Common Performance Bottlenecks?
Some common performance bottlenecks include:
- CPU Utilization
- Memory Utilization
- Networking Utilization
- Disk Usage
- S limitation
Can you explain testing lifecycle?
There is no standard testing life cycle, but it is consisting of following phases:
- Test Planning (Test Strategy, Test Plan, Test Bed Creation)
- Test Development (Test Procedures, Test Scenarios, Test Cases)
- Test Execution
- Result Analysis (compare Expected to Actual results)
- Defect Tracking
- Reporting
Explain what all thing involves in performance testing process?
Right testing environment: Figure out the physical test atmosphere before carry performance testing, like hardware, software and network configuration
Identify the performance acceptance criteria: It contains constraints and goals for output, response times and resource allocation
Plan and design Performance tests: Define how usage is likely to vary among end users, and find key scenarios to test for all possible use cases
Test environment configuration: Before the execution, prepare the testing environment and arranges tools, other resources, etc.
Test design implementation: According to your test design, create a performance test
Run the tests: Execute and monitor the tests
Analyze, tune and retest: Analyze, consolidate and share test results. After that, fine tune and test again to see if there is any enhancement in performance. Stop the test, if CPU is causing bottlenecking.
Can you define concurrent user load in performance testing?
Concurrent user load can be defined as when multiple users hit to any functionality or transaction at the same time. Concurrent user testing is also called simultaneous user testing. The idea behind concurrent user testing is to identify the response time of a website for a specified number of simultaneous users making requests to a website.
Can you define protocol and how many you have worked on?
It is a set of rules for information communication between 2 or more systems. There are many protocols such as Http/Https, FTP, Web Services, Citrix.Mostly used protocols are Http/Https and Web Services.
Explain common mistakes done in performance testing?
The common mistakes done in Performance Testing are
- Failing to choose a tool
- Direct jump to multi-user tests
- Test results not validated
- Too small run durations
- Use a Small Amount of Hardcoded Data
- Unknown workload details
- Lacking long duration sustainability test
- Confusion on definition of concurrent users
- Data not populated sufficiently
- Significant difference between test and production environment
- Network bandwidth not simulated
- Underestimating performance testing schedules
- Inappropriate base-lining of configurations
- Incorrect extrapolation of pilots
Explain how do you do the analysis of the system for identifying issues?
To study the varied graphs generated by the tool corresponding to time interval, turnout graph, running Users graph etc. and also, we are able to see the server logs to identify the problems in system
Explain how can you check the system for memory leaks?
To identify the memory leaks by running load tests for a longer duration and analyzing the ram of the system, generally it will grow with time and will lead to deadlocks and breakpoints.
What are the exiting and entering criteria in the performance testing?
First start the performance testing of application during the design. After the execution of the performance testing, we collected the results and analyzed them to improve the performance. The performance tuning processed will be performed throughout the application development life cycle. Performance tuning is performed which is based on factors like release time of application and user requirements of application stability, reliability and scalability under load, stress and performance tolerance criteria.
In some projects the end criteria is defined based on the client performance requirements defined for each section of the application. When product reaches to the expected level then that can be considered as the end criteria for performance testing
What is the need for Performance testing?
Performance testing is needed to validate the below:
- Response time of application for the intended number of users
- Maximum load resisting capacity of application.
- Capacity of application to handling the number of transactions.
- Stability of application under expected and unexpected user load.
- Ensuring that users have proper response time on production
Can you define modular approach of scripting?
In Modular approach, a operate is formed for every request (e.g. login, logout, save, delete, etc.) and these functions area unit known as where required. This approach offers a lot of freedom to reuse the request and saves time. With this approach it’s counseled to work with web custom request.
Explain the difference between performance testing and functional testing?
Functional Testing: To verify the accuracy of the software with definite inputs against expected output, functional testing is done. This testing can be done manually or automated One user performs all the operations. Customer, Tester and Development involvement is required. Production sized test environment is not necessary, and H/W requirements are minimal.
Performance Testing: To validate the behavior of the system at various load conditions performance testing is done. It gives the best result if automated. Several users perform desired operations. Customer, Tester, Developer, DBA and N/W management team ,Requires close to production test environment and several H/W facilities to populate the load.
Can you define IP spoofing and why is it used?
It is used to spoof the system so that each host machine can use many different IPs to create hypothetical environment where system believes that request are coming from different locations.
Mention how do you identify which protocol to use for any application?
Previously Performance tester had to depend much on the development team to know about the protocol that application is using to interact with the server. Sometimes, it also used to be speculative.
However, LoadRunner provides a great help in form of Protocol Advisor from version 9.5 onwards. Protocol advisor detects the protocols that application uses and suggest us the possible protocols in which script can be created to simulate the real user.
How to calculate pacing for your application?
We can calculate pacing by the formula as
No. of users = (Response Time in seconds + Pacing in seconds) * TPS
TPS is transaction per Second.
What are the automated Performance testing phases?
The phases involved in automated performance testing are:
Planning/Design: This is the primary phase where team will be gathering the requirements of the performance testing. Requirements can be Business, Technical, System and Team requirements.
Build: This phase consists of automating the requirements collected during the design phase.
Execution: it is done in multiple phases. It consists of various types of testing like baseline, benchmarking testing.
Analyzing and tuning: During the performance testing we will be capturing all the details related to the system like Response time and System Resources for identifying the major bottlenecks of the system. After the bottlenecks are identified we have to tune the system to improve the overall performance.
What the reason behind performing automated load testing?
Following drawbacks of manual Load Testing that leads to Automation load testing:
- Difficult to measure the performance of the application accurately.
- Difficult to do synchronization between the users.
- Number of real time users are required to involve in Performance Testing
- Difficult to analyze and identify the results & bottlenecks.
- Increases the infrastructure cost
What concurrent user does in load testing?
When the multiple users at an equivalent time hit on an equivalent sort of event of the appliance within the load test is named as a concurrent user hit. The concurrency purpose is additional in order that multiple Virtual User will work on one event of the appliance.
By adding concurrency purpose, the virtual users can await the opposite Virtual users that are running the scripts, if they reach early. once all the users reached to the concurrency point, only then they begin hitting the requests.