Project 365 – week 6 to week 8

It’s been a while: I took some time out of this whole blogging malarkey. Things were just insanely busy: I got quite close to posting stuff a couple of times, but it just didn’t quite happen. Today, I’m hoping to catch up on a number of posts.

First up is a quick update of how the project 365 is going – because, yes, it is still going!

Having said that, I broke my github streak at the start of the weekend. I stupidly messed up my committing somehow. No matter – I still coded and intended to publish. (At least that’s what I’m telling myself).

What kind of stuff have I been looking at?

In week 5 (when I last posted), I was running through “C++ – Concurrency In Action”. I then spent another week doing “more of the same”. I have now caught up with where I am in the book and it is kind of the next book to finish. Hopefully, I’ll have some time in a couple of weeks to dig a little deeper. (There are just so many different things to look at!)

Over the last two weeks, I have been playing with acceptance testing. In particular, I have been trying Robot Framework (I may give Cucumber a go in the future, but technologically Robot Framework is a little closer to home).

I played around with the different test case formats (html, tsv, plain text) and experienced the benefits of a keyword driven approach to testing (wider appeal: non-developers can write tests too).

The end goal with this little sub-project is to write a library for .NET UI Automation framework based acceptance testing:

Yes, I know there are a number of downsides to UI based acceptance testing, but I do think that there is a place for them. (A good Thoughtworks article explaining the downsides can be found here. In my opinion, Robot Framework will enable you to write a layer of tests for the latter phases even if lower level keywords are UI based and therefore more brittle than they might otherwise be.)

Yes, I also know that Robot framework comes with an existing UI automation framework. However, this has very much been a “get to know the technology” type project.

So how far have I actually come towards this goal?

After exploring some Robot Framework basics, I played around a little with the .NET IronPython integration. Now all I needed was a .NET UI framework: I didn’t want to go down to the low level of the built in .NET UI Automation framework and (in my private life) I don’t quite have the deep pockets to shell out for Coded UI (VS Premium/Ultimate), so I settled on (and played around with) TestStack.White. This has been pretty impressive product and very to easy to get to work.

One of the nice things of Robot framework is that it offers two types of integration with .NET: One is through IronPython (which very handily and completely by coincidence made use of my newly acquired Python skills). The other is through the Robot Framework Remote library (which allows for an XML-RPC based web service: Generic host servers are available in a variety of languages including .NET. These then host keyword libraries in the respective language. Niftily, this also allows for test case distribution among different machines).

So I played around with the .NET host server (nrobotremote) as well as the Ranorex library written by the same guy. (Both are pretty impressive – although I found the documentation a little hard going and had to debug through a load of stuff to get this to work.)

Essentially, in the end, I butchered his Ranorex library and turned it into a basic TestStack.White library. This is now ….almost…. working. (The words “tantalizingly” and “close” spring to mind).

….and this is (roughly) where I am as of day 56!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s