goldb.org home

AS OF MAY 2008, THIS BLOG IS NO LONGER BEING UPDATED.
Visit the new blog at: http://coreygoldberg.blogspot.com



 Friday, December 14, 2007

Technical Skills For Performance Testers

A performance engineer is a little bit of a jack-of-all-trades.  Rather than focusing on small technological niche, performance testers must have a very wide range of technical skills to understand the inner working of a complex system under test.

As far as skill go, Scott Barber has said that you need to be a "mid-level everything":

"Become a "Mid-Level Everything" – Developer, DBA, Network Admin, Systems Admin, Architect, Business Analyst, etc."

If you want to become proficient in analyzing system performance and scalability, there are many technical areas you should study.  Here are some skills I have found to be invaluable in my success as a performance engineer:


Performance Concepts:

  • Methodology
  • Load Generation Tools
  • User/Workload Modeling
  • Results Analysis (Latency, Throughput, Metrics)
  • Bottleneck Detection
  • Code Profiling
  • Scalability
  • Concurrency
  • Charting/Graphing
  • Statistics

Operating Systems and Servers:

  • Monitoring (CPU/Network/Mem/Disk/etc)
  • System Tuning
  • Web/Application/Middleware Server Tuning
  • System Administration
  • Virtualization
  • OS Concepts (CPU Scheduling, Memory Management, etc)

Database:

  • SQL
  • Stored Procedures
  • Monitoring
  • Tuning

Network:

  • Topology
  • Monitoring
  • Load Balancing
  • TCP/IP
  • HTTP
  • Packet Sniffing and Protocol Analysis
  • Caching
  • OSI Model

Programming:

  • Proficiency in at least on general programming language. Preferably a dynamic scripting language (Python/Perl/Ruby/etc)
  • Code/Algorithm Analysis


(Note: There are lots of "soft skills" a performance tester would need to be successful. This post focuses only on technical skills)

#    Comments [2] |
Wednesday, January 30, 2008 11:29:47 AM (Eastern Standard Time, UTC-05:00)
Hi Corey,

Great post! It would also be nice to see pointers to resources (tools and additional info on the topics you mention.)

Also, I am a bit curious as to why you suggest a scripting langauge for performance testing since scripting languages are notoriously slower compared to say C/C++, or even C# or Mono C. But, I guess it depends on the underlying system also, but I am thinking you don't want your perf tools to have too much of an artificial influence on the system.
Wednesday, January 30, 2008 1:31:42 PM (Eastern Standard Time, UTC-05:00)
Well.. performance of dynamic languages isn't usually a problem I run into, and the productivity gains I get from a dynamic language tend to be dramatic. I am actually working on some tools today in C#. It would have taken me about 1/4 of the time to develop it in Python (though I'm a good Python programmer and my C# skills are a little light, so that could also explain that).

Though true, for certain things, you would want to drop down to a lower level language for a speed increase. So i guess you should know C :)

thanks for the comment. I will try to put together some resources to link to.

-Corey
Comments are closed.