Saturday, October 3, 2015

Lesson 1 - Apache JMeter in the world of Performance testing


Prior to starting the course of JMeter, I want to start the course with a few basic definitions that are relevant to any person that want to take part in the world of performance testing.  I will explain each category with a very short description and add further information during the course.

What is Performance testing?

Performance testing is a is a non-functional testing technique that we execute when we need to validate how the tested software performs in terms of stability, reliability, responsiveness and scalability under a predefined system workload.

What are the benefits of Performance test types?

  • Comparing the performance attributes against other applications/Old version of the same application.
  • Understand the kind of errors that may affect the system functionality and user experience.
  • Understand the connection between slow performances based on the related defects.
  • Reveal the bottlenecks of the application that will not cover in the functional tests.
  • Understand how different hardware will affect the application performance.
  • Understand the tuning that you need to create a better load balancing.
  • Understand if the software behaves according to the client demands.
  • Reveal functionality errors that occurred during load/stress tests.
  • Get the answer to the basic question of "how many users can use the software at the same time prior to compromise the application performance?"
  • Collect great data about the software scalability and stability.
  • Understand of how the system behaves on different loads.
  • Understand how the system can handle different loads.
  • Reveal defects that come from concurrency scenarios.
  • Understand the system boundaries.
  • Determine the application performance against the market demands, which lead to continues improvement.
  • Provide a great view on the amount of data that the system can process when exceeding the upper limitations.

What are the Key Types of performance testing?

Load/Capacity Testing

Load testing is the process where we want to examine how the system behave when tested under a specific expected load while constantly increasing the system transactions (until the system reaches to the end boundaries). The load can simulated by the number of users that simulate a specific number of operations/transactions under a specific duration.
Load tests will help the tester to uncover bugs in the application related to bottlenecks, CPU/Memory overflows… and get a better knowledge about the system limits when the user uses it for a long period of time (Remember that load and Endurance tests are almost always executed as corresponding with each other).

Stress Testing

Every system has a capacity limit, when the system load exceeds this limit, the application will fail to be responsive to the user request and in some cases it becomes unusable.  Therefore, we need to run Stress tests to understand what the system limits are and how the system handles such situations.

Endurance Testing

Endurance testing is performed when you want to test the application behavior and parameters (Memory, CPU….) under long term loads.  The main purpose of this test, is to revel the bugs that may raise during sustained use of the application functionalities.

Spike Testing

Spike testing is performed when the tester need to test the application against sudden loads (Both increment/Decrement). The goal of pike tests is to determine the behavior of the application when its needs to handle a dramatic change in load.

Volume Testing

Volume testing is done when you want to determine the efficiency of the application when processing a Hugh amount data that processes be the application. Running volume tests will help you to show that the system cannot be used when the amount of data become too heavy for the system to handle.

No comments:

Post a Comment

My Presentations