Wednesday, 23 September 2015

The different types of Performance Testing



Performance Testing of an application determines its responsiveness, throughput, reliability and scalability under a given workload. This process evaluates the software against its performance criteria. It compares the software performance on multiple system configurations and quantifies the levels of throughput.

Performance testing usually identifies the bottlenecks in a software application and helps to identify its compliance its initial requirements. The results generated by performance testing also helps to assess the hardware configurations that will be required while deployment. 




Types of Testing:

The types of performance testing can be categorized into the following three categories.

-      Performance Testing: This process validates the responsiveness, speed, scalability and stability of the software. It measures the response times, throughput and the level of resources utilized by the software. This category is the super set of all the performance related testing. 

-      Load Testing: This validates the performance characteristics of the software application when it is subjected from normal to peak load conditions that can be expected during production. It aims at identifying the breaking point of the application within peak load conditions. Endurance test can be considered as a subset of load testing. It determines the performance of the system under load conditions over an extended period of time. Endurance level of a system can be defined by Mean Time Between Failure(MTBF) and Mean Time to Failure(MTTF).

-      Stress Testing: This process is an extension of load testing. It verifies the performance characteristics of the system when it is subjected to conditions beyond the anticipated workloads during production.  It also tests the system under other stressful conditions such as limited memory, insufficient disk space and server failure. These tests help to estimate the conditions under which the application is liable to fail. It reveals bugs that can occur only under extreme load conditions. This helps to identify the indications which need to be monitored to avoid failures. Spike testing can be considered as a variation of stress testing that verifies the performance of a system on repeated extreme loads for short periods of time. 

-      Capacity Testing: It determines the upper limit of the users and transactions that can be supported by the software. It is conducted in conjunction with capacity planning. This can be used to anticipate the additional resources required to support increased user base or increased data volumes. It also helps to determine whether the system should be scaled up or scaled down in future.

Automated Performance Testing Tool:

JMeter is an automated open source testing tool in Java used to perform load and stress testing of application software. It can be used to test the performance of both static and dynamic resources of an application. It can simulate heavy loads on a server or group of servers to test overall performance under different load types. It generates the test results in graphical formats like charts and tables which are very easy to understand. It can be installed by running the JMeter Shell script in Linux or by starting the .bat file in Windows.
 
Conclusion: 

Performance Testing is an indispensable activity for assessing business risks. Besides identifying business risks, it reveals information about usability, functionality and security of the system. It is a qualitative and a quantitative evaluation of the software under test. It generally occurs at the end of the test plan. However, it should be also incorporated in the earlier stages of the development system when important logical structures are being decided.

Wednesday, 2 September 2015

Understanding Performance Testing in Agile Environment

Performance Testing is performed to evaluate the compliance level of an application or software with its initial requirements. It is an integral par Performance Testing is performed to evaluate the compliance level of an application or software with its initial requirements. It is an integral part of the agile process. Its main goal is to test performance and functionality in each sprint. In a traditional development cycle, performance testing usually takes place at the end of the development life cycle. However, this finds its place early in the Agile methodology.  


Managing Performance Testing in Agile Environment
The key element in Agile methodology is its flexibility. To ensure efficiency and thoroughness in this environment, the ways of performance testing may require changes. This approach requires an understanding of the project as a whole and further evaluates the contribution of performance testing into the project. This helps the team to estimate the success criteria for the effort.
Once these criteria are established, a strategy is formed to achieve these criteria by summarizing the testing activities to be performed that will add value at various points of the development cycle. These points refer to project delivery, sprints, iterations or weekly builds. With the continuous evolution in strategy, a performance test and load generation environment will be set up.
 With a strategy and a test set up in place, major tests are planned for the weekly builds. As a build is delivered, the plan is appropriately reported, recorded, revised, reprioritized, added and removed, thus improving the application and the overall strategy as the plan progresses.
Types of Performance Testing performed:
Load Testing is done to verify the application behavior under normal to peak load conditions. It enables to quantify the response time, throughput rate, resource utilization and the breaking point of the application. Endurance Testing determines the performance of the product when subjected to workload volumes over an extended period of time.
Stress test:  It determines the behavior of the application beyond normal to peak load conditions. It reveals errors and faults that arise only under high load conditions. It helps to identify the weak points of the application during extreme load conditions. Spike Test is a subset of stress test that validates the behavior of an application under extreme workload over a short period of time.
Capacity test: This determines the number of users or transactions the system can support.
Testing with JMeter:
JMeter is an open source testing tool in Java with a graphical interface. It is used to measure the performance and load management behavior on a variety of services. It is platform independent and capable of loading performance tests in variety of servers like HTTP, HTTPS, SOAP, Database through JDBC, LDAP, JMS and Mail POP3.It supports various kinds of testing such as Load, Distributed and Functional Testing and can generate heavy load against the application under test. It is capable of performing automated testing using Selenium. It generates the test results in easily understandable formats like chart, table and log file and can be easily installed by running the JMeter Shell script in Linux or by starting the .bat file in Windows.
Additional Considerations for Agile performance Testing:
All significant information must be communicated to the team.
For a major portion of the development life cycle, the testing is about compiling adequate information to enhance the performance as the design and development progresses.
Testing should not be forced on a build simply because it is planned in the strategy. If the current build is not appropriate for testing, then another build should be waited for on which the test can be performed.
Performance testing brings about significant changes in the application architecture, code, hardware and the environment. Hence, the test reports need to be read and understood efficiently to bring about appropriate changes.
Conclusion:
Performance testing in Agile is actually based on the principle of continuously asking what can be done at a point of time to increase the most value of the project. This approach allows managing the test process in a very flexible way. It helps to revise the project vision and context and reprioritize tasks based on their value addition.