As a performance tester I spend most of my daily time somewhere between the browser and a web server. I also so spend a lot of time on servers themselves analysing data. So I thought I’d write a bit about the tool landscape I tend to use. In my tool selection I favour Open Source software. Mainly because I don’t have to fluff around with licenses but also because I can look at code if I need to. It allows me to focus my resources on training people. I do tend to feed back into OSS, whenever I can (which is seldom as I am usually not that clever;-) ).
I also do a lot of bespoke programming to automate processes. This is not at the level a developer would do things but more on a simple scripting level. But not to be underestimated what power this can unleash in your day to day work.
Browser & Co
I use Chrome and Firefox, both for different reasons.
Chrome (and derivatives) is my favourite browser. Mainly because tabs are nicely segregated and you don’t have data spill between sessions. It has a very good developer view and includes things like Y-Slow and network analysis.
Firefox is part of the bundle because there is a plugin that makes my life easy, that is not available on any other browser. This plugin is Live HTTP Headers (https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/). It records requests and responses (no source though). But that is exactly what I need when scripting tests. This plugin also allows you to filter the incoming stream by site, extension and a few other things, cutting down on the noise. This tool is slowly being replaced by BurpSuite of late.
BurpSuite is a Java (read… runs everywhere) proxy with frontend, that runs on your machine between browser and backend. It records pretty much everything. It is actually a security tool and offers heaps of hacking options but I am only interested in it’s traffic recording functions. One of the most useful features is that you can highlight transactions with different colours. BurpSuite is free in the basic version (all I really need) and about $350/year in the pro version. The pro version is probably only of interest if you plan on doing security testing. (https://portswigger.net/burp/)
Vi – My (Linux) editor of choice. Just because I have gotten used to it and there is a really cool cheat sheet: http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
Sublime Text – In my opinion the best editor out there (https://www.sublimetext.com/2). The really cool thing is it runs on Linux, Windows and Mac. So no need to re-learn. Sublime Text does set you back US$70 but for what it offers that is a bearable hit.
Notepad++ – Seems to be the most common Windows editor that I see. Probably due to the fact it is free to use. Has really nice features and an easy interface. Plugin structure… (https://notepad-plus-plus.org/)
[Update #2] Also have a look at https://atom.io/ as an editor. Have used this for quite a while now and I really like it. Nice to be X platform too.
https://diffnow.com – This is a neat and powerful site to do file comparisons. I just love it because you can send links to someone with your comparison to see online or download it as a static HTML file. I use it daily and shelled out the $20/year for the pro version.
http://codebeautify.org/ – where do I sart? It just does what it says. I mainly use it for XML and JSON formatting in conjunction with DiffNow to compare.
http://pro.jsonlint.com/ – JSON Lint is a cool tool to verify JSON code you concocted. That’s all it does.
http://textmechanic.com/ – Some useful text manipulations that you can do online.
https://regex101.com/ – Regular expressions can do your head in at the best of times. I use this when I start to get problems. It is easy to use. Careful though, it’s not as powerful as regex can get. So for the super intricate keep looking for a better site. [Updated]
http://www.monkkee.com – Nice little service I just discovered for just a plain log of activities. I like to log my day just so I can remember when certain things happened. This is the cleanest form. You can do that in a private Slack too but you’d need to pay monthly for full retention. I’ve fed back a huge list of requests to the developer (amongst a call for an API) for making some changes that would improve usability but in general I am happy. Simple and just what you’d want. [Updated]
JMeter – My performance tool of choice. Free, proven track record, super good community, flexible and portable. I just keep on coming back to it. But there is also surely a bit of hammer&nail attitude too. It’s the program I know the best. (https://jmeter.apache.org/)
JMeter-plugins – I cannot quite understand why this is a separate project. These plugins cover a lot of stuff that was “forgotten” in JMeter. In my world installing JMeter includes adding most of the JMeter-plugin packages too. I’d never contemplate not doing it. (http://jmeter-plugins.org/)
Apache Bench – Just a tool to do some Q&D load generation. (https://httpd.apache.org/docs/2.2/programs/ab.html)
Technical Tools & Development
Wireshark – Use in emergencies only! Tool to see what is going across the wire. So if you love hex and reading raw protocols this is the tool for you. I mainly use it if I need to analyze at the lowest level when all else has failed. If I use it it is an admission to failure and clearly indicates that there is a huge problem. (http://sourceforge.net/projects/wireshark/)
Shell Scripting – My weapon of choice. So endlessly powerful, while having been around for decades means there is no limit to the information on how-to do stuff. Of course this comes with most Unix style operating Systems but also with tools like Cygwin (babun for a configured install without amin rights) on Windows.
Python – Clean easy and powerful semi interpreted language that probably doesn’t need an intro. I mainly use it for results and data calculation, where shell scripts reach their limits. Also quite useful when driving the cloud (RackSpace, AWS,…). (https://www.python.org/)
PHP – I mainly use this to do very Q&D interfaces to tools or processes I develop. (https://www.php.net/)
Ruby – If I really have to. But Ruby has risen to one of the most used development languages in test automation. (https://www.ruby-lang.org/en/)
Groovy – A friendlier version of Java. Used for scripting in tools like JMeter and SoapUI.
[Update] I have found https://groovyconsole.appspot.com/, which is a great online interpreter for Groovy to test stuff before using it in JMeter.
APM & Monitoring
Splunk – The current tool of tools. Ingests any data and you can deep dive and integrate all sorts of interesting stuff. A warning to the wise though, you will need deep deep pockets….but oh so shiny! (http://www.splunk.com/)
Elastic Search– The OSS version of Splunk. Slightly different but the idea is the same. This is not a tool I have used yet but it’s on my horizon. Problem is that like Splunk these systems like raw power and space so usually cannot be run locally. (https://www.elastic.co/products)
PerfMon – Microsoft’s built in monitoring tool that I use if I really really have to. It can monitor anything and everything that is happening but the UI and command line options leave a lot to be desired. That’s why there are a lot of tools that hook into PerfMon but use their own UI.
sar, top, htop, iotop, nmon, bwmng,… – There are tons of tools on Unix OSs to monitor anything and everything. They are too numerous to list here. I use most depending on what environment I am confronted with.
GNUPlot – Plotting library to get numbers into graphs. (http://www.gnuplot.info/)
Grafana & InfluxDB – Grafana (picture above) and InfluxDB go well together but don’t necessarily. It’s a simpler version of what you’d do with Elastic Search and Splunk. It is a time series DB and a fancy graphing frontend. So mainly geared towards measuring stuff like CPU, memory,… but can also be used to see business data if you connect it to the right source. The advantage is that it is OSS and it is relatively easy to implement. I’d say a large majority of projects wouldn’t need more (i.e. would be over the moon if they had fancy stuff like this) and could save the investment in costly or complex tools. A nice extra is the direct and real time integration with JMeter. (http://grafana.org/ and http://influxdata.com/) [Update]