I'm curious to know how people test what they develop.
In my case the project is to have 2 or more Arduino Mini Pro on an I2C bus, as slaves.
The master is an Intel Edison, but I've tried also a Beagle Bone Black and I'm waiting for the delivery of a C.H.I.P. (it's a $9 ARM board with small footprint).
So I am in a situation where the master can (and probably will) change and anyway it won't be the PC I use for development.
I wrote my I2C driver for the slaves with the help of a Bus Pirate, which has a serial console, however I soon realized it was too tiring to enter every time the I2C emulation commands (and even worse decoding the raw output). So I ended up writing a small python tool that supports history reuse, issuing generic I2C commands and also higher level commands which are then translated to the I2C protocol I have defined.
[ Do you remember the Dilbert strip about poisoning by engineer-designed UI? It's something on those lines

But now that I look back at how things went, I can't help wondering if there would have been some more standardized way to do it.
And possibly easier. Right now the I2C protocol I use is kinda embedded in the python code, but maybe there are options to generate the UI programmatically through an xml file.
So what do you use when debugging both high level and low level parts of a protocol over some some standard bus, say I2C or SPI?