Wednesday, 30 January 2008

I thought you were a tester but... you're programming

I state no "MUST"s in here, you don't "HAVE" to know how to program to work effectively as a tester but...when you do know how to program, then you have more options. How many more? Well...

"Reasons to be cheerful - one, two, three..."

Reasons why I have found it useful to have programming knowledge:
  • Speak to the developers in their own language – build relationships with the development team
  • Different languages have their own problems and idioms – useful to know these
  • Different languages have to make different physical decisions when implementing logical designs
  • Implement custom test tool utilities – metric collating, defect management, data generation
  • Use existing test tool APIs and customise your test tools e.g. mercury open test architecture, TPlan API
  • Automate your test process
  • Identify new tools that you can use to help you
  • Build the application from the version control system directly
  • Learn the database schema without extensive documentation
  • Reuse development code to construct test tools
  • Get free tools working – Java & Perl
  • Regular Expressions - use and read
  • Understand the design process and artifacts (OO, UML)
  • You know what the developers mean when they say: Refactoring, polymorphism, mock objects, ...
  • Compile in Debug Mode to make applications testable
Early in my career, I busied myself learning how to test and I worked on some projects where I didn't know the programming language in use (IBM System 360 ASM anyone?). That meant that I had fewer options in how I could approach my testing and my dealings with the development team, and sometimes I could not even understand the problems they discussed. I decided never to stay in that situation for the duration of the project again.
"Do Testing Early" – "More Unit Testing" – Can you really promote automated unit testing if YOU don't know how to do it? What tools can you use? Why should the developers listen to your advice on coding if you can't code?
How easily can you make the system testable? Could you help make it testable, or do the development team need to do all the work?
Can you easily add logging in the current development language without interfering with the code? Do you know?
I cannot claim "greatness" as a programmer, but I do learn the language for the projects that I work on - even just a little. I use the fact that I want to learn the language to strengthen my relationship with the development team by asking them for help with my learning process.
---
Now. I find it interesting that I wrote the above text 4 years ago. And in that time I've worked on Agile projects, paired with developers, learned TDD, created mock objects to aid in Unit Testing. I did a lot of this through book learning and experimentation. Fortunately I have worked with developers kind enough to explain things to me, recommend books, and point out what web-sites and blogs they read.
I appreciate that a lot of people don't want to do this. But I feel the need to reiterate - when you do, you increase the options available to you and increase your own personal flexibility.
I highly recommend every tester learns how to program in the language used to develop the system under test.
At least a little bit. Just a little bit? A teeny bit, just a teeny weeny bit?
Yes, yes, dear, dear, perhaps next year
Or maybe even never
In which case .....
Reasons to be Cheerful (Part 3)

by Dury, Payne and Jankel

Monday, 28 January 2008

Panicky Tester meets Evil Tester

What happens when Panicky testersmallPanickyTester meets Evil Tester smallEvilTester ? Find out in the latest episode of the exciting cartoon adventures of Evil Tester.

Thursday, 24 January 2008

How to find out where the time goes

jWorkSheet is one of the secret tools that form part of my productivity armoury.
What does it do? Why do I use it?....


Well, I work across multiple projects and if I like to be able to see which projects are taking most of my time. If I don't track my time I get to the end of the day and go "so what did I do all day?".
If you face a similar issue then...jWorkSheet might help you.
jWorkSheet has gives me the ability to report on where I have been spending my time. When I need to do that formally, or informally.
I needed a (Project -> Task -> event) model where I could track work-done-time spent on Tasks across disparate days or weeks I don't often get to work on a single task for a number of days (or hours) straight.
I was originally using a spreadsheet that I wrote, because I would periodically browse the web but never found anything that worked the way that I did.
But jWorkSheet uses this exact model!
You setup the projects and tasks on one tab, then in another tab you track your day.
I use the default reports and haven't tried customising them. The reports are all written in XSL so it should be a simple matter to write my own when I need to.
Now for a lot of people the notion of tracking their time on an event by event basis is 'tooooo much work'. But I find it a useful practice to log what I do.
I carry this practice through to my testing, where I log the decisions I make, the thoughts that I have, the things that I do. When I do this incrementally across the day, as it happens, it really isn't too much work, it is simply a natural part of each task. When I switch task - I spend 5 seconds making a note of it.
The end result of all these 5 seconds? A feeling of control and the ability to see where my time goes so no more uncertainty. And with that comes the ability to use this information to plan more effectively, to make decisions about priority and optimisation more effectively.
If you don't track your time during the day then I'd suggest as an experiment to you that you try it. And if you already do it, then see if jWorkSheet works for you.
I subscribe to the freshmeat entry to receive update notifications.
And so if you every find you're solidly working but end up unhalfbricking then you have no need to ask yourself "who knows where the time goes?", instead you can relax with this...
Youtube Video

Sunday, 20 January 2008

Please stop the fiction

I have an unhealthy dislike of the current trend towards "fictional" example 'based' essays.
You know the type...
It was Monday and I struggled into the office out of the pouring rain and before I'd even sat down, let alone think about getting a cup of coffee and reading the latest Dilbert gag, Jane walked up to me and said "We have been looking for you for half an hour, there has been a new release, we only have 20 minutes to test all the software and we have 27000 tests to run manually - what are we going to do?"
Then the author goes on to extricate the characters from the situation gracefully and easily so that we can learn a lesson.

I've done it myself, I'm not proud of it, probably no-one read the little bit of fictional dialogue that I put in a conference paper, but I've done it. And I think it was wrong. I'm even kind of embarrassed by the few short pieces of 'real' fiction that have been published in the 'real' world. Fortunately few people read those.
I don't think I'd mind so much if the writer was a published fiction writer, but even then I'd have doubts. I'm currently working my way through a hefty chunk of David Morrell's back catalogue. I find much to admire in David Morrell's fiction - I have some of his books set aside as 'exemplar' action novels for study when I start writing fiction again, but I have a 50-50 hit rate with David Morrell - I like about half of the books of his I read, and half I don't and they go to the Charity Shop.
I'm fairly picky when it comes to fiction. If I think it is bad, I stop reading, I don't like to waste my time with junk fiction. I don't read computer mags, and books, to read fiction. So how many articles in computer literature do I have to skip now? It feels like a lot.
So aside from the 'bad' fiction what other 'reasons' can I harangue you with?
There was one section of the Harvard Business Review that I consistently did not like. The fictional 'based on a true story' case study, and I think they use a professional writer to produce it.
I feel like a single point is being strung out for too many pages. If you are paid by the word then pages mean money. Hey, I have written fiction - dialogue is an easy page filler and that means money spinner. If I'm trying to pad to push the page count - I default to dialogue, I can up the page count in minutes with a good stream of verbage.
It is too easy for the protagonists - I probably read too much action fiction but there are never any twists in these articles. It always reads too much like a romance novel - where is the action? the drama? the pulp? I never get to read text like this...
Jane hadn't noticed the tired bags under my eyes - I didn't get much sleep last night on account of the neighbours next door shooting stray cats with their M-16's. And they were lousy shots. The clatter of shells hitting a trash can sounds pretty loud at 3am - I wasn't feeling in a mood to panic. But I was grouchy. I guess I might have had a tendency to overreact. "Which environment is it loaded on?"
"P37..."
"Forget it, it doesn't matter". I left her staring at the back of my head as I walked into the machine room. Let me see. P37... P37... ah heck. I started pulling the servers off the wall one by one. I'd bring down the test environment sooner or later. I wasn't thinking straight. I hadn't had my morning coffee yet. I'll call this a denial of service attack and write it up as part of the test completion report - at least this would buy me some time so I could get my coffee and read Dilbert.
I stopped short when I pulled the last server to the ground. I slammed my hand to my sweaty forehead suddenly realising what I had done.
No Server = No Internet. I could kiss the latest Dilbert gag goodbye - at least until the server boys managed to bring the environments back up.
I walked off to get some coffee shaking my head and trying to catch my breath, thinking about how stupid I could be at times.
See - fiction - bad Idea. I promise I'll stop. But to me the 'fiction' trend in the mags (and books) looks like continuing. And the worst of it?... based on the popularity of the style I think it is just me that doesn't like it.
So some pleas, rather than a lesson...If you have to write a fiction kind of thing then:
  • could you try different genres? Horror, or Action?
  • Or try and write a comic or a cartoon? (I like comics)
  • Or use a metaphor instead
But please no fiction.
No servers were harmed in the making of this blog post. All names are fictional and are not intended to represent real people. This blog post was for entertainment purposes only, do not copy the actions in this blog post, they were not done in a real environment.

Friday, 18 January 2008

"Martial deals with surprise" - GTD related to testing

I made some notes when watching the Dave Allen's Google Tech Talk on Getting Things Done. In order to help remember them I have mapped them on to Software Testing, with a few additional notes.

If you haven't watched the Google Tech Talk by Dave Allen then this post may not make as much sense now, but I think it will after you come back from watching the talk. And if you have watched it, then this post may act as a small reminder for you to.
Dave Allen said a number of statements during the talk that I made a note of. By taking tiny snippet quotes, I get the benefit of applying them to whatever I want and take them out of context. So warning... I did that below.
Martial deals with surprise.
So does testing. Surprise heavily influences my testing. And I currently hold the belief that the more 'surprised' we get when testing, the more information we generated with our test. A 'scripted' test which passes generated no surprises, and no real information since it 'confirmed' our model. If a test 'fails' then it expands our model since we didn't expect it to fail, we have to adjust our model to the reality of the situation and thereby generated new information that we have to report and incorporate into our model.
Dave Allen had a few quotes which I relate to 'state' or how we feel. I view personal 'state' as an underrated concept in Software Testing and Dave Allen actually describes a very effective state for conducting exploratory testing in.
You lose speed if you are not "present"
Perfectly appropriate response with and engagement with what is present
Available at present with full resources.
If you could generate a state that you can describe using the words above, what does it feel like. Now you may find be that you have to remember a state very close in form to that description and tweak it a little, or that you can instantly adopt that state. And when you test like that, and you extend your senses, and you observe keenly and you focus your on the system and the test at hand. Do you think you can act more effectively?
So one application for GTD would involve using it, to avoid the distractions that remove us from that state. The GTD system aims to help you create a trusted system so that we do not get distracted and we can stay on focus.
The exploratory testing literature talks about session based testing. One tool of session based testing, the 'Charter', can act as one of the techniques to remove the 'clutter' from your mind before you start testing.
Dave's "working hypothesis" - as soon as it in your brain and managed by your brain - it keeps getting popped back - until you put it in some trusted system that you trust you will look at at the important time in the future.
So as an exploratory tester my 'trusted system' involves a charter and a notebook for making notes as I go along. I make notes of observations. I make notes of new ideas - I don't want to forget them, but I don't want them detracting from my focus, so I write them down, knowing that I review them after the completed testing session.
Pay attention to where your mind is going - there is a message there - handle that otherwise you get stress
I consider this good advice and I apply it not just to me, but also to the system under test.

Wednesday, 16 January 2008

Get yourself a free computer science education

On Lambda the Ultimate I found a link to the ACM Classic Books Series. There are some great books here that I haven't read since University. So a few of my choice favourites follow...

All the books I'm going to list below are available on the web page once you register with the ACM (and you can do this for free)

I'm going to reread E.F Codd's "The Relational Model for Database Management" as I remember getting a little lost in there the last time I read it.

I have read Seymour Papert's "Mindstorms" several times and my paperback copy is yellowing slightly so a pdf version will do me nicely. I'm looking forward to playing Logo with my Son as he gets older but I suspect that Squeak might be taking the place of Logo in the discussion of Children and Programming now.

But what is really exciting me is the inclusion of Aho and Ullman's "The theory of parsing, translation, and compiling". The contents for this looks fantastic although I suspect Volume 1 parsing is going to be most interesting. I don't think I've read this one.

The Dragon book got me through my final year university project butI still haven't properly digested Ullman's "Introduction to Automata Theory, Languages and Computation".

ACM are trying to get pdf versions of the other books in the list, and from that list I am particularly interested in reading "Anatomy of Lisp" and Von Neumann's "The Computer and the brain" if they become available.
So, next action: check out the list.

Tuesday, 15 January 2008

Some tools just get better and better

I have been a MindManager user for a long time, but I'm not a power user. I don't script it. I don't use any plug-ins. I don't generate many documents from it. But it still seemed like one of the best mind map tools out there: fast, easy to use. Every so often it would hog the processor for no good reason. But then FreeMind suddenly got really really good. Is FreeMind now the best mind mapping tool as well as being completely free?

For my purposes - FreeMind is my tool of choice.
Why?
  • I've been doing more and more of my writing in OpenOffice and FreeMind exports directly to that.
  • Out of the box pdf export with no additional drivers
  • A good organic layout is created automatically
  • I can script it if I want to with Groovy
  • It can support attributes on the nodes now
  • The file format is easy peasy xml for easy parsing and manipulation
  • It is fast and when not in use doesn't hog my processor
  • It can open MindManager maps directly so I have no messing about moving tool
  • Very easy to use
  • Because it is cross platform I can share my mind maps with my 'strange' Mac using colleagues
It does support planning and calendars and schedules and all that nonsense, but I don't use a mind map tool for that.
The fact that it is free and open source is a bonus and means that anyone can benefit from this tool with no monetary investment. I thoroughly recommend trying this tool out.

Friday, 11 January 2008

Music to Test By

I just discovered my new favorite internet music site. www.progarchives.com

I have only just dusted off my old vinyl albums from 20 years of storage, but haven't gone out and bought a turntable to re-listen to them yet so... www.progarchives.com is allowing me to re-experience the delights of Kaleidoscope (the UK band), Procol Harum, Dead Can Dance, Jade Warrior, and find some new (OK...old) music to enjoy.

The site also has links to some online radio stations that specialise in Prog Rock - what could be better to test by than prog rock? The 10 minute French masterpiece "Depuis L'Automne" by Harmonium?
I've just heard Gryphon for the first time. Ah, splendid, they don't make music like that anymore.