Friday, 27 September 2013

WinMerge Revisited - my default file and directory comparison tool

I seem to default to WinMerge for my file and directory comparisons.

Whenever I need to:

  • compare two directories
  • compare two files for differences
  • copy a set of files between directories
  • compare contents of zip files or rar files

When you install WinMerge:

  • You can choose to use it as the merge view in Tortoise SVN. I tend not to do this because the built in Tortoise SVN diff works fine for me. 
  • Add WinMerge to your system path, which allows you to call it from the command line easily and use the command line options. I choose this option.
  • Enable explorer context menu integration - an essential option.
Read the online documentation, or the help file.

When you install. Have a quick flick through the quick tour to get you up to speed quickly.

If you download the .zip file then you essentially have a portable install so can use it from a USB stick.

A few things I especially like:
  • You can drag and drop like a crazy man
    • drag and drop folders on to the desktop icon for comparison
    • drag and drop on to the main pane to start a compare
    • drag and drop into the input fields
  • If you install 7-zip and the7-zip plugin you can compare rar and zip files
    • 7-zip acts as my default archive management tool
A few things to note:
  • The tree mode makes life excellent, just make sure you enable it
  • Look through the options and switch on all the "Shell Integration" options - particularly the "Include subfolders by default"
Why would I use this?
  • I create a backup folder before testing. I test. I can compare and see what changed.
  • I want to revert back to previous files selectively, so I compare dirs and selectively move changed files
  • I have an oracle file and want to compare results
What do you use for your comparison tools? In built version control tools? Commercial tools? Leave a comment if you want to share your secret weapon of choice.

Wednesday, 25 September 2013

Alternative Uses for Fiddler

A few days ago I realised that one of my use cases for Fiddler, did not stem from a need for debug proxying.

Since I work on a variety of client sites, I periodically have issues with restrictive proxy servers where a .pac file somewhere sets up the browser config, and you have username and password issues etc. etc.

In those circumstances some tools need configuring to use the client site proxy - I recently tried to use httpgraph based on a suggestion from James Lyndsay

Like many tools that allow you to configure the proxy httpgraph has a url and port. Nothing else. No http or https config, no usernames, no passwords.

And like many tools, it didn't work out of the box with a restrictive client side proxy.

So, choose your own adventure time:
  1. Game Over? Stop using the tool?
  2. Mess around with config settings for a few hours trying to get it to work?
  3. Use Fiddler?
1. Stop using the tool

You sit back in your chair and sigh. Nothing ever works out of the box. Why don't vendors make technical tools easy to use. Oh well, nothing lost except a few minutes downloading the tool. Time to get on with the hum drum day to day work with no advantages.

You finish your tasks, and complete the day, but leave with a nagging sense of unfulfilled potential. 

Game Over.

2. Mess around with the settings

You try everything you know. You tweak the registry. You setup system variables. You run the app from the command line with -D proxy settings. You even mess around with the Windows Routing table. Sadly to no avail. You look at the clock. Crikey, its 4pm already, and you still have to finish the test strategy, distribute it, add it to version control, setup the review meeting, and respond to emails. 

Looks like you need to get your priorities in order and stay here till midnight.

You Lose. Game Over.

3. Use Fiddler

"I'll do what I always do first" you think. 

Start up fiddler.

Fiddler hooks in to the Windows internet controls seamlessly, it handles all the proxy stuff, including passwords. Then I'll configure the new tool, to use Fiddler as its proxy. This way the tool has a simple proxy server to connect to, where I control the port and protocol config, and as a bonus, I can see the traffic sent.

So you start up fiddler, and point your new tool's proxy to "", the Fiddler defaults. 

You know you can use other Fiddler urls if this doesn't work 
But it does work.

Leaving you plenty of time to get on with today's necessary todo list items.

A Double point win. Congratulations. Adventure completed.

Do you have any use cases for debug proxies that you take for granted, that don't immediately involve debug proxying? If so, leave a comment to let me and the world know.

Wednesday, 11 September 2013

How to Turn on and off JavaScript in Firefox

Whoa, I turn my back for a couple of months and Mozilla remove the option to switch off JavaScript in Firefox.

Short version: Install QuickJava or type "about:config" as the URL then search for "javascript.enabled"

We spent a good 5 or 10 minutes thinking we were crazy. "I'm sure the option used to live here..."

As ever, Google came to the rescue..

Why did Mozilla do this? Because of "Checkboxes that kill your product".

Unfortunately, as a tester I still experience moments where I need to kill the product, so How can I do that now?


Firefox has the built in "about:config" which you can type into the URL entry field. Then search for "JavaScript" and click on the "javascript.enabled" to switch JavaScript on and off.


One of the official forum Q&A items mentions an add on called QuickJava, just make sure that enable the "Add on bar" from the toolbar menu "View \ Toolbars \ Add-on bar"

Other plugins mentioned in this other official forum Q&A item

I chose to install QuickJava because it lets me toggle a bunch of things quickly.

End Notes

As an opinion, I find it a bit odd that since Browsers make ever more developer functionality available at the click of a mouse to every user: allowing them to edit the DOM, or execute arbitrary JavaScript, or amend and delete cookies, etc. etc. I don't think I'd make switching JavaScript off a hard thing to do - this is one of the few things I actually do, as a user, to make a misbehaving website behave. 

But hey ho. Testers have had it worse - remember when we used to have to same html to the desktop to edit it? And edit actual cookie files? We have it easy - particularly when you get to discover a new helpful add-on that you didn't know about - QuickJava.

Friday, 6 September 2013

10 Experiments to Improve Your Exploratory Testing Note Taking

I have some 'rules' that I apply when I take notes as I perform exploratory testing.
When I look back over how I took notes in the past I can see that I tried different experiments with my approach when building those 'rules'.
I recommend some of my experiments to you now:

  1. In Memory
  2. Only use pen and paper
  3. Only use a text editor
  4. Use a text editor and screenshot tool
  5. Record the screen and talk as you test
  6. Use a tool designed for exploratory testing
  7. Use a Mind Map
  8. Draw a diagram
  9. Automate the capture of logs
  10. Use a Spreadsheet

1 - In Memory

Only use your memory to track your exploratory testing.
This experiment mainly helps me remember that I need to do more. I now feel very uncomfortable testing with just my memory, but when I started this felt natural. I changed.

2 - Only use pen and paper

Yup, you use your computer to test, but you make notes on pen and paper.

  • different pens, 
  • different colours, 
  • different sized paper,
  • notebooks, 
  • loose paper, 
  • text, 
  • diagrams, 
  • mind maps, 
  • scribbles.

I find this works well with a single screen, and intense moments in the testing, but I try to re-transcribe or take a photo with my phone and have the image in evernote.

3 - Only use a text editor

Experiment with different text editors, find an editor you like - I've pretty much settled on NotePad++ and Sublime Text, and I import the text files into evernote for later searching.
Different styles of note taking:

  • Prose, 
  • Notes, 
  • Time Stamped Entries, 
  • Annotations like #test #bug etc.

Can you parse your logs at a later date automatically? Would that benefit you?

Do your own search and find a text editor that works for you at the moment.
Touch typing helps. learn to touch type if you can't already.

4 - Use a text editor and a screenshot tool

Sometimes you need to capture the moment as a screenshot.
Do you just use Ctrl+Print? Do you use an image editor? Do you use a dedicated screenshot tool?
I tend to use SnagIt or Jing now. I've used lots of others in the past.
  • Where do you store the images?
  • What filename standard do you use?
  • How do you cross reference your text edit notes to the screenshot?
  • Do you think you would benefit from using a Word Processor and embedding the screenshots along side your text?

5 - Record the screen and Talk as you test

Environment can get in the way for this if you work in a shared office.
Do you have equipment that you can comfortably use for long periods of time?
Talking, and thinking and doing takes practice and time.

6 - Use a tool designed for exploratory testing

People have created a whole bunch of tools; designed, or marketed, as helping exploratory testing.
Try them. See if they work for you.
If your style clashes with the tool. consider if the tool benefits warrant a change of style from you.
Do your own search and find other tools designed for exploratory testing
If you could write your own, what features would it have? Perhaps you could use a combination of tools to gain those features now?

7 - Use a mind map 

Everyone loves creating mind maps. Few people use mind maps like Buzan suggests. Who cares, use mind maps and do it your way.
Do your own search and find a mind map tool that works for you.
What do you represent in the model?
  • Ideas?
  • Steps?
  • TimeStamps?
  • Images?
  • Screenshots?
  • Links?
  • Observations?
  • Questions?
  • To Dos?
  • ?

Over time, learn the features of the tool. consider which features you don't use. Should you? Would they help?
Perhaps you don't use enough of the features? Try a less featured tool and see if it still works for you?

8 - Draw a diagram

Pen and Paper works well for diagrams.
What do you diagram?
  • Structure? 
  • Flow? 
  • Entities? 
  • Notes? 
  • All?

GraphViz lets you write text files that it compiles into automatically positioned graphics.
You can use as an online diagrammer.
At last count there existed a Bazillion diagramming approaches and tools. Try some of them.

9 - Automate the capture of logs

You can't argue with logs right? Why bother making notes when the logs will do it for you?
  • Fiddler - for HTTPsessions
  • tail system logs (logtail, multitail, etc)
What do you make notes of when you use logs?
Do the logs capture everything you need?
How do you cross reference your notes to your logs and to your screenshots?

10 -  Use a spreadsheet

What about a grid?
Would that help?
Try it and see.


The above covers a lot of note taking styles
  • Visual
  • Tabular
  • Outline, Tree
  • Sequential
  • Adhoc
  • Formal
Evaluate what worked and what didn't.
Take care about your judgement because some of it didn't work due to your lack of experience - try it again. Some of it didn't work because it doesn't fit you, your environment, your system, etc.
Having done them all - try them again. Some of them will seem offensive. Some will feel restrictive. You gain gain more insight when you try it again.


Even though I gave you this as a "10 experiments to improve your exploratory note taking". I have not given you a quick fix.

  • If you tried one each day, this would take you 2 working weeks.
  • If you try variants in each of the experiments ( different tool, different paper sizes, etc.) This could take a month or more.
  • If you repeat them and challenge yourself to master them, and change them, this could take up to 6 months.
  • I still experiment with my approach. I have done for years.

What experiments would you recommend" or "What experiments you have conducted?". Let me know in the comments below.

You might want to watch "What is Good Evidence" by Griffin Jones, which reminded me I needed to write about this. Griffin's talk overlaps very nicely with this post. I recommend you watch it.