Why Performance Projects Fail?

Projects involving performance testing and engineering fail for a variety of reasons. The majority of performance project failures occur for various highly complex reasons from every phase of the development life cycle and performance testing life cycle. Sometimes, performance problems are uncontrollable, and it’s out of the control of a project manager, technical architects, or performance engineers. In my experience, from both business and personal levels, most the performance projects fail due to simply a lack of communication between performance engineers, developers, DBA's, business teams, and stakeholders from the beginning, and this ends up causing many other problems which will directly impact application performance and ROI. The only objective of strategic, effective performance testing for any application/product is to achieve a satisfactory return on investment. Performance testing and engineering the applications are risky and always require a lot of trial and error with rigorous testing from the early stages of development.

Failures in performance testing projects must be treated similarly to other business problems. It is essential to understand what went wrong, why it went wrong, and what can be done to prevent it. In most scenarios, the performance engineers have to run the one-man show role to make everyone educate/understand the performance challenges in the end-to-end full life cycle implementations. Working with Practice and COE teams, we continued seeing the same mistakes repeatedly from multiple teams and projects, so, based on my personal experience, I have compiled a  list of reasons Why Performance Projects Fail.

The Importance of Access Logs in Performance Issue Analysis

An access log is generated by the web server to log the details about the request that it has processed. It logs status code, response time, URL, protocol, size, client IP address, etc., about the request.  Load Balancers will have similar log files created to log the request details. While doing any performance analysis, these logs play an important role. It is being neglected most of the time due to lack of awareness and the usage of APM tools abstracts it from the users by allowing them to focus visually on coarse-grained data instead of fine-grained data. Most people are aware of the application server log but many of them are not aware of the web server/load balancer access log. Most of the time, this log will not be striking in the mind of a person who investigates the problem.

Access logs are available for the below servers while the format for each of them varies:

Open Model Thread Group in JMeter

The Apache JMeter community has been swift in releasing the major security patches for the Log4j fiasco. I have already covered multiple posts about Log4j vulnerability, JMeter 5.4.2 and JMeter 5.4.3. JMeter 5.5 was supposed to be released in the last quarter of 2021. I have already covered what's new in JMeter 5.5. JMeter 5.5 will be released in early January 2022. In this blog post, let us deep-dive into one of the important features, which is the Open Model Thread Group in JMeter 5.5.

About Open Model Thread Group

Open Model Thread Group is available starting from JMeter 5.5 under Threads menu when you right click on the Test Plan as shown below.

Ten Things You Should Learn Before Learning About Performance Testing

So, you want to learn about performance testing and progress towards performance engineering or DevOps or Site Reliability Engineering. I get it. Jumping directly into performance testing might be overwhelming. I was directed to learn the tool, then the performance concepts. It is like, learning to swim by directly jumping into the pool. Either someone needs to save you from drowning if things go south, or if you are smart enough, you can manage. I was able to manage myself to learn the performance concepts parallel while learning the performance testing tool around a decade ago.

I do not want you to go down that route. In this blog post, I am going to list ten things you should learn before learning about performance testing and its tools. There is no end to learning stuff. But I have highlighted the essential and fundamental concepts you may need to go through for your performance testing trip.

Recording on JMeter

Welcome to Learn JMeter Series! This series helps you to learn Apache JMeter in a much simpler way with the relevant examples and exercises. This tutorial focuses on Recording on JMeter.

What Is Recording?

To get started with application performance testing, the first step in JMeter is recording your business transactions. Recording the business flow helps to expedite the process of creating test plans. Otherwise, you will be spending more time manually crafting the requests.

Performance Engineering Management: A Quick Guide

In every project performance testing, assessment, and resolution become the key phase before going to production. In this article, there will be a sneak preview of key concepts, lifecycle steps, tips, and further guidance.

I will try to cover the holistic view in this short writing including non-functional requirements with high-level details but the focus will be on the performance aspect mainly, beyond this a lot more detailed steps will be involved. Additionally, the focus will be on Java-based web applications mainly while some of the details are generic and applicable to other platforms and technologies.

Native App Network Performance Analysis

Introduction

When 54 percent of the internet traffic share is accounted for by Mobile, it's certainly nontrivial to acknowledge how your app can make a difference to that of the competitor!

Once you're done with the app development and all looks good on the simulators and internal network devices—but out there in the wild, with bandwidth restrictions, TCP congestion, cache hit/miss, the device configuration, your user may not experience what you intend to provide & not every unhappy customer leaves feedback; they just stop coming. 

Load Average: An Indicator for Only CPU Demand?

Load Average‘ is an age-old metric reported in various operating systems. It’s often assumed as a metric to indicate the CPU demand only. However, that is not the case. ‘Load Average’ not only indicates CPU demand, but also the I/O demand (i.e., network read/write, file read/write, disk read/write). To prove this theory, we conducted this simple case study.

Load Average Study

To validate this theory, we leveraged BuggyApp. BuggyApp is an open-source Java project that can simulate various performance problems. When you launch BuggyApp with the following arguments, it will cause high disk I/O operations on the host.

I/O Waiting CPU Time – ‘wa’ in Top

CPU consumption in Unix/Linux operating systems is broken down into 8 different metrics: User CPU time, System CPU time, nice CPU time, Idle CPU time, Waiting CPU time, Hardware Interrupt CPU time, Software Interrupt CPU time, and Stolen CPU time. In this article, let us study ‘waiting CPU time’.

What Is ‘Waiting’ CPU Time?

Waiting CPU time indicates the amount of time the CPU spends waiting for disk I/O or network I/O operations to complete. A high waiting time indicates that the CPU is *stranded* because of the I/O operations on that device. For optimal performance, one should aim to keep the I/O waiting CPU time as low as possible. If waiting time is > 10%, then it is worth investigating it.

How We Implement 10x Faster Expression Evaluation With Vectorized Execution

The query execution engine plays an important role in database system performance. TiDB, an open-source MySQL-compatible Hybrid Transactional/Analytical Processing (HTAP) database, implemented the widely-used Volcano model to evaluate queries. Unfortunately, when querying a large dataset, the Volcano model caused high interpretation overhead and low CPU cache hit rates.

Inspired by the paper MonetDB/X100: Hyper-Pipelining Query Execution, we began to employ vectorized execution in TiDB to improve query performance. (Besides this article, we also suggest you take Andy Pavlo’s course on Query Execution, which details principles about execution models and expression evaluation.)

Writing About Performance [Prompts]

Prompts to banish writer's block.


Trying to write an article but have nothing to write about? You're in the right place! This is the solution to all your writer's block needs! No more excuses, just solutions. Below, you will find a couple of prompts to get you started in writing for our Performance zone!

Application Scalability — How To Do Efficient Scaling

When you build a great product or application, sooner or later, it will be drawing attention more and more users who will expect a flawless, perfect application as the demand grows in the time it handles more and more requests per minute. If we are not prepared for this, the application performance will start degrading, and you will lose your audience and business. In this article, we explain why you should pay attention to when building a scalable application.

What Is Application Scalability?

Application scalability is the potential of an application to grow in time, being able to efficiently handle more and more requests per minute (RPM). It’s not just a simple tweak you can turn on/off; it’s a long-time process that touches almost every single item in your stack, including both hardware and software sides of the system.

Skills Required To Be A Perfect Performance Engineer

Performance testing and engineering is always a niche area with many challenging objectives across the globe. The challenge of performance testing with performance engineering is far more complex and requires one to be multi-skilled to find problems/issues/defects. In the last few years, I have come across several interviews, discussions with client-facing groups and customers, and what they have in common is a high demand for performance engineers, not just performance testers.

Having knowledge and experience on any performance testing tools like Microfocus LoadRunner, Apache JMeter, Neotys Neoload or IBM RPT is good, but they are not really sufficient to find the hard and hidden bottlenecks. The ability to find degradations and root cause analysis in performance testing projects is really a challenge for any performance guru. So, what makes a performance tester a performance engineer? We all know that anything is possible in the IT industry and that skills can be acquired if one has a positive attitude and the only prerequisite to learning is spending time. So, based on my experience and understanding of this area, I have tried to lay down the general guidelines which I believe will help make any performance tester become a Perfect Performance Engineer. This article can help many performance engineers understand how to start a career from performance testing to performance engineering and the essential skills that every performance engineer should have.

Testing Trends to Look Out for in 2019

The adoption of DevOps and Agile has been one of the biggest trends to be seen in the testing domain. A rising trend in the domain of automation testing is leading to more systems being developed in every minute. With the development of information technology, the testing domain is also changing. Gone are the days when the testing phase of software is satisfied with manual testing. With the IT industry already witnessing DevOps, there are few skills that are needed to be adopted by a tester in 2019 to remain competitive.

1. Testing in Advanced Machine Learning and Artificial Intelligence

A horde of futuristic developments is brought in the IT industry by AI. The center stage is already dominated by natural language processing, neural systems, and machine learning. The best thing about artificial intelligence is the capacity of a system in developing more systems.

Key Software Testing Trends That You Can Anticipate for 2019

Businesses across the globe are evolving each day to confront the market challenges and deal with maturing customer expectations. Even the ongoing technology advancements keep twisting the arms of software testing experts for more attention and precision in the practice and processes. The year 2018 brought into its fold new technology solutions and enablement for Quality Assurance and Software Testing. At the same time, practices such as Agile, DevOps, DevSecOps, and Test Automation continued to sustain their relevance and applications through the software testing cycle.

As the year ends, we can gauge some strong trends that are expected to rule the software testing and development scene in 2019. We have shortlisted prominent trends and we would be glad to get your views and value additions on this post as well.