performance testing: performance engineering: web development

Basilio Briceno is the Senior Developer at Naranya – one of the leading new media companies in LatinAmerica, with special focus in the mobile entertainment and mobile marketing world. He is also a Community Member of the Mozilla Foundation and Project Lead at Tlalokes PHP framework.

Basilio is or has been a college professor, a public speaker, and an independent consultant with these specialties: PHP, UNIX, GNU/Linux, FreeBSD, Solaris, Apache, IIS, Bind, Bash, Photoshop, Gimp, (X)HTML, DB/2, Websphere, JSP, JSF, Javascript, MySQL, Oracle, Perl, PostgreSQL, Postfix, and XML. Check out his personal blog site when you get a chance.

Let’s start the interview.

How much involvement do you have with load and performance testing?

That’s what I do everyday, and that’s why companies hire me. My principal task is to be the most worried person in the company about performance testing. That’s why I try to be involved in every aspect, from UI testing, to load testing, and OS tuning.

What would you say is the difference between load testing and performance testing?

To put it into a boxing metaphor, performance testing allows us to know the precision and speed of the fighter’s arms and fists, the power of his punches, the resistance, velocity and movement of his legs. Load Testing allows you to know the amount of rounds the fighter is capable of competing.

What do you think is the most important aspect of load testing?

Emulating the real conditions that the application is going to be exposed to and exceeding the expectations. If the Load Testing results are superior to expectations, it is less likely that uncomfortable surprises will appear in production.

Is there anything commonly overlooked in web application testing?

I believe teams overlook a counterproductive cycle in testing. If developers make an excessive use of unit testing, then it can impact delivery times negatively. Project Managers can then begin to think of testing as something that consumes too much time and makes teams less productive. Consequently, the next time they assign less time to testing tasks which leads to the higher probability of having defects. This cycle becomes a loop that decreases quality of code and usually lowers application performance.

Another overlooked problem with web application testing is how decisions are made regarding infrastructure. For example, when the developers suggest to use some software like a certain web server because it can deliver the required application performance, but the Sysadmin’s team rejects that suggestion based on their current infrastructure. They are comfortable with a different toolset. Their decision results in lower performance and potentially a failure to fulfill customer requirements. The time you invested testing that web server goes directly to the trash. It is a common problem and decreases team productivity.

What is your technical background?

My technical background is very uncommon. I started as a designer, and over the next 12 years, I became a developer and sysadmin. I’m the guy who takes care of proposing new ways to provide more performance to the products and, if necessary, re-engineering them. My personal goal is to produce code that doesn’t require debug.

Do you consider yourself more of a software developer or QA professional?

Usually I’m busy in more than one area. My highest priority is the quality of code of course. I’m also worried about the development and production environment because as developers we can provide a very well-tested and enhanced application, but if some piece in the production environment has not been tuned properly (VM, Web/Application Server, RDBMS, OS, etc.), the results could be unexpected poor performance. So, I’m the kind of guy who is always pushing everyone about every aspect of the application. Some teammates say I’m obsessive about perfection, but what can I do? That’s the way I work.

When and why did you get into the performance engineering industry?

It was natural for me because when I was a child my father had an electrodomestics store. As early as I can remember I was always trying to find the way to make everything easier, to avoid waste of time and resources. So when I move to the web development world, optimizing performance was simply natural. I guess it was some kind of integrated policy in me. Maybe that’s why I’m always in more than one area trying to help to enhance the processes – everything from the requests to the responses.

How do you determine the load to apply to the target app during load testing?

If the application is already online, I find out the peak volume of traffic currently to establish a baseline. I then add at least 30% of addition volume to the baseline to set a target load. If the application is new, I ask for the stakeholders’ expectations and establish that as the baseline. Then I add at least 50% of addition volume to the baseline to set a target load.

Do you feel like performance and load testing are accepted critical parts of the development life cycle?

I think the interest in this field is growing. However, it requires more attention and acceptance – especially from the highest levels of management in every organization.

What are some of the most common web app bottlenecks that you find and/or fix?

Poorly-written SQL statements are the number one problem with web performance. Bottlenecks are also commonly created by the excessive consumption of web services from third parties.

Do you prefer using requests per second (RPS), concurrent users, or some other metric to define load?

RPS is the default metric. Concurrent users are also important because I can compare the volume of concurrent users from the log files in an existing application.

Do you see any intersection points between performance and usability testing?

Yes. Performance and load time are fundamental to usability. Performance is the most important piece of the user experience in production. The success of an application is based on the success of both usability and performance.

What do you believe to be the most critical elements of web application testing? Why?

I think every aspect is important and critical; however, if you ask me for priorities, I’ll prefer this list of priorities:

  1. Knowledge of the customer’s goals and real requirements for the next 2 to 5 years
  2. UX architecture and design – compatible with the engineering team’s capabilities
  3. Quality of Code
  4. Performance
  5. Security
  6. RBDMS tuning
  7. OS tuning

What is your specialty? Why?

The quality of code. Most of the developers I have worked with have difficulty optimizing their code. In some cases it is because of time pressures placed by project managers, and that gives me an opportunity to promote performance, maintainability, and functional quality for the medium and long term.

Do your clients get involved in performance testing when you are developing a custom app for them?

I always try to convince them of the real necessity of good web performance, it’s benefits and the amount of money they can save by doing it.

How do you see development or testing evolving over the past few years? the next few years?

My prediction is that organizations are going to use a mixture of development and testing techniques that adapt to their delivery times and custom needs. Test Driven Development techniques are good; however, these techniques are only guidelines rather than rules written in stone. Every day more and more people tell me they agree with my view of Test Driven Development.

If you could make a career from one of your favorite hobbies, what would it be?

Augmented Reality. I think that’s the future of computing and applications development.

Similar Posts