Performance Testing Interview Questions and Answers

In software package engineering, performance testing is generally, a testing observes performed to see however a system performs in terms of responsiveness and stability under a selected work. It may serve to investigate, measure, validate or verify different quality attributes of the system, equivalent to measurability, reliability and resource usage.

Performance testing, a subset of performance engineering, is a computer science practice which strives to build performance standards into the implementation, design and architecture of a system.

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.

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.

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.

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

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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

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.