Mobile App
#
31 May, 2018

Software Performance Testing with Apache JMeter

Software-Performance-Testing-with-Apache-JMeter

Performance Testing of a software is as important as any other activity required in the development of the software. Performance Testing is performed on a software to understand the behaviour of the software under a certain workload. Performance Testing is one of the key aspects of Quality Assurance of a software application.

Performance Testing is one of the main types of Non-Functional Testing for software applications. It is briefly classified into Load Testing and Stress Testing. In Load Testing, the Application Under Test (AUT) is subjected to a specific expected load. In Stress Testing, the AUT is subjected to workload which is above the handling capacity of the application. This is done to determine the breaking point of the software. To simulate high workload, performance testing tools are used. One of the best and most commonly used performance testing tools in the market is Apache JMeter developed by the Apache Foundation. It is widely used across the globe for performance testing of Web Applications as well as Mobile Apps. Let’s learn in detail about Apache JMeter.

The Apache JMeter application is an open source software and a pure Java application designed to load test functional behavior and measure performance. It can be used to simulate a concurrent heavy load of virtual users on a server, group of servers or networks to test its strength, load handling capacity and to analyze overall performance under different load types. Lets us see some features of JMeter which makes it attractive to performance testers around the world.

Open Source: As already mentioned, JMeter is an open source software and it is also a 100% pure Java application. The developer can use its source code, can modify and customize it as per their requirement. They can also contribute their code to make a better JMeter. Due to this feature, there are various interesting and helpful plugins available to use with JMeter, which were developed by the IT community worldwide.

1

And since JMeter is a Java application, it is also platform independent. It can be operated without any problem in any operating system, be it Windows, Mac or Unix based Operating System.

Realistic Performance Testing: In a real scenario of a large number of users using the application, the load of real users may not always increase or decrease gradually. The load may be normal at one minute, increase suddenly in the next, while it may decrease significantly the next minute and again increase suddenly afterward. This increase and decrease in the load may be gradual, exponential or sudden.

2Image Source: http://jmeterplugins.com/wiki/UltimateThreadGroup/index.html

We can simulate this real-world load in JMeter. Using the Concurrency Thread Group or Ultimate Thread Group in JMeter, we can increase, decrease or hold a certain load for a specific period of time. We can also enter random time delays in the load test script to simulate actual user actions. This helps in simulating workload which are as close as possible to actual world scenarios.

Script Recording: To load test an application a set of functionalities like Login, manipulating some data and logging out are generally tested. To simulate this action, instead of entering each request manually, we can record the functionality and re-run it for N multiple of Virtual users. This will simulate the scenario of multiple users accessing the functionality concurrently. To record a test in JMeter, we can use two methods – HTTP Proxy Recorder and Blazemeter Plugin.

~ HTTP(S) Test Script Recorder: In HTTP Test Script Recorder, we have to set up a proxy network in the system on which our application is running. We have to enter the port number of the IP address in HTTP Recorder, on which the JMeter will be listening for server activity. The server requests of the actions performed in the application will be recorded by the JMeter. The user can save the generated script and then run the script for multiple virtual users to simulate the action. The HTTP Recorder can be used for recording script in web applications as well as mobile apps.

~ Blazemeter Recorder: Blazemeter has developed a Google Chrome plugin for recording performance scripts. The Blazemeter plugin enables the user to record a script and later download the script for running it using JMeter. Similar to HTTP Proxy Recorder, it records all the HTTP/S requests that your browser sends. One drawback of Chrome’s Blazemeter plugin is that it cannot be used for recording mobile app performance scripts.

Non-GUI Mode: While running a JMeter test using GUI mode, a lot of resources like memory, and Swap are consumed which may lead to faulty test results. JMeter provides a solution to this problem. JMeter can run load tests without the GUI, but from the Command Prompt or Terminal of the system. JMeter provides various commands for running JMeter from the command line. Reports generated during the load tests are saved at a location specified by the user. These reports can be used to generate graphs later on. Running on Non-GUI mode consumes much fewer resources than in GUI mode.

3Image Source: https://octoperf.com/blog/2017/10/19/how-to-analyze-jmeter-results/

For running JMeter from the command line, a user has to set up the test in JMeter using the GUI mode and save it to a specified location. JMeter GUI mode must be shut down before starting the test. The user then has to open the command line and navigate to the bin folder of Apache JMeter. From here, the user can give a command to JMeter like to run the test, save the result to a specific folder, generate dashboard report, run the test on specific servers, etc.

Generating Graphs and Reports: JMeter is widely known for providing various graph, reports, and listeners. One of the key aspect of Performance Testing is Understanding and reporting the faults and drawbacks and taking necessary steps to correct them. To understand the results properly, JMeter can generate various graphs and reports. Some widely listeners are Tree listener, Table listener, Aggregate report listener. Using these listeners we can find various parameters like latency, response time, connect time of the performance test. This data can be used to make reports and understand the outcome of the test.

4Image source: https://jmeter.apache.org/usermanual/generating-dashboard.html

For a better understanding of the outcome of the test, JMeter has a Graph Listener, which can generate beautiful graphs to simplify the understanding of the outcome of the test. These reports and graphs can be exported to make the performance report.

Server-Side Monitoring: During Performance Testing, it is important to know the health of your side and how the server responds to changes in the load. JMeter provides a PerfMon plugin which is used for collecting and monitoring Server metrics like CPU, Memory, Swap, Disks I/O and Networks I/O. The PerfMon plugin consists of two parts:

~ The Server Agent: The Server Agent has to be installed on the system on which the server of the AUT is running. The Server Agents collects information on the server and send the information to JMeter via TCP or UDP protocol.

~ The Metrics Collector Listener: The user can view the information through the Metrics Collector Listener. We can choose which metrics we want to monitor and JMeter generates graphs using those metrics. We can also export the metrics and graphs for later use.

5Image Source: https://udayhere.wordpress.com/2014/07/04/perfmon-for-jmeter/

Conclusion
The large number of Plugins available for JMeter is the real reason behind the JMeter being the most widely used Load Testing tool. The simplicity and ease with which JMeter can be operated is also a plus point for performance testers. While there are many other performance tools for automation testing, but none are as successful as Apache JMeter.

 

28 July, 2017

Most Important Qualities of a Good Software QA Tester

QA has become an integral part of software development process worldwide. Many companies develop the same kind of product or provide the same kind of services. What makes the difference then?

Most-Important-Qualities-of-a-Good-Software-QA-Tester

It’s Quality. Quality matters a lot especially when you are doing business in the competitive market. We, 9series are software service providers so let’s focus on this sector. There are thousands of companies providing software services. Quality software service is a key in making our organization successful and sustainable in the market.

9series have dedicated team of QA testers to maintain best quality product delivery. Each and every dedicated tester contributes to great quality deliverables.

The reason QA requires a special kind of profile which requires one section that sits right in the middle of the software development matrix and works with & among developers, designers, product managers, users & clients.

There are many qualities a good tester possesses. Let’s list out some of them which are really crucial to provide best quality software which is thoroughly tested, fault free, easy to use and complete value package for customers:

  • Business Oriented: An exceptional software tester must be able to understand software from a business point of view, appreciate clients requirements, have the ability to understand people from the nontechnical point of view. He/she must also be able to understand how business issues can be converted into technical solutions.
  • Attention to detail: Identifying obvious issues is simple enough, but where your expertise as a software tester really comes into play is in recognizing bugs that aren’t quite as obvious. Oftentimes, it’s the small stuff that can have a pretty serious trickle-down effect on an entire application. So, in addition to the master plan, an effective tester knows how to pay attention to the details.
  • Creative Mind: It is one of the most requisite attributes of a great software tester. Test professionals need to think much beyond what is assumed from the software and the users. They must be able to think how users can do things that are certainly not spelled out in the software requirements, or how they may misuse the software.
  • Analytical Skills: These skills like root cause analysis, requirement analysis, and risk analysis are must for understanding client feedback while defining the test strategy and performance testing. Analytical skills are also crucial to gain insight, in order to build smart testing solutions. Testers need to comprehend data collected from testing and analyze them for specific behavior of product or application.
  • Curiosity: The characteristic is essential when it comes to considering the consequences. Curious testers will often think out of the box so that they can resolve problems in areas where no one else can even think to look.
  • Good Listener: It is a very good quality of testers to listen to others. They should know that there is always a room for advancement. They should likewise pay attention if anyone is giving any idea or implication, as this will surely help them to improve the quality of the software program under test. You may uncover some scenarios that others may miss if they are not paying attention.
  • Improvement Over Perfection: Good QA teams know the value of efficiency. There is always room for improvement and testers should be able to pick areas that need a change in their projects and complete solutions – even if incremental. QA Engineers should be able to firmly improve areas that are weak and less than efficient while still able to meet timelines for current work. This can be beneficial for both manual testing and automation projects.
  • Adaptable: Priorities regularly change so testers should be adjustable in handling that. The QA team works with a lot of multiple environments, development stages and types of testing like mobile app testing, cloud testing etc. On any particular day, testers can switch back and forth between multiple priorities. The trick is managing time well and supporting development and business teams with what they need.
  • Test Automation And Technical Knowledge: Automation testing skill set is very useful for testers. They must have the sound technical knowledge to determine which tests must be automated at which layer, utilizing the availability of various testing tools, execute tests on a constant basis provide worthwhile metrics to the organization and choose relevant and latest set of tools in order to help the testing effort.
  • Ability To Organize And Prioritize: A great tester must have the ability to first recognize and organize essential tests and later prioritize execution based on the test relevance. Also while calculating test efforts, good testers must consider the defect history.
  • Ability To Communicate: They must have the ability to communicate with both nontechnical and technical people. They must also possess the ability to adequately communicate well in written or oral form and convey the details of a problem to the development team. A good step by step document for reflecting the defect helps developers direct their effort on fixing the issue rather than back and forth communication.
  • Ability To Report: No one will be excited in knowing the number of test cases executed by the software testers. That is why a good tester must be great at reporting their current status at the end of the day. They must provide adequate and detailed bug reports and also attach screenshots, videos if possible along with the report.

The members of 9series with QA profile process these qualities. If you are looking for quality software development or testing services, feel free to send a mail to [email protected].We would really be happy to assist you.

 

Categories

Archives