Good code
Monday, January 10th, 2011XKCD on writing good code: http://xkcd.com/844/
XKCD on writing good code: http://xkcd.com/844/
I used to be fairly uncomfortable with the term Quality Assurance (QA) being used in a software engineering context. In my view Software Testing is the engineering discipline of detecting and isolating software failures – and that’s what us testers did. To me, the term QA Engineer simply felt like a flamboyant way to avoid the job title of Tester.
After reading the Wikipedia definitions for Quality Assurance and Software Quality Assurance it became clear that I had not really appreciated the difference. QA is an integral part of the entire software delivery project affecting quality at every level, whereas software testing is just one aspect to QA. Software testing remains an important and highly skilled discipline – Finding ‘bugs’ is relatively easy, finding business threatening defects is non-trivial.
So where does that leave me? When I examine my own role I find that I spend more time working out what to test, planning and delivering it, collecting results and working out what it all means to the project, than I do testing. I guess that makes me more QA than tester.
Merry Christmas
Just found this amusing and insightful site:
http://cartoontester.blogspot.com/
Just been sent an excellent article on what makes a good test.
Cem Kaner describes the different types of tests and when they are appropriate. a good pragmatic paper.
My usual rant is the difference between stress and load. Cem outlines some clear definitions. (stress is load beyond the system’s capabilities). I often hear stress used instead of ‘high load’ – makes me mad (although not stressed)
Anti-spamming software is an integral part of many websites, often taking the form of “type in the distorted text you see”. The assumption is that this is – hopefully – too difficult for a machine to do quickly and trivially, but easy for humans with our better pattern-understanding skills.
reCAPTCHA is an example of this which takes this a step further: the second word is used to confirm I am indeed human and not spamming, while the first word is text from a failed attempt to digitize historic documents: i.e., reCAPTCHA provides a (free!) way to get humans to help digitize old text from before the computer era. This is a great idea, but does throw up some interesting examples in practice:
It’s obviously rather harsh to expect someone to be able to enter (i) a mathematical forumla with superscript and subscripts and (ii) Greek text, particularly as the text box only accepts plain English with no formatting. More worryingly, I got thinking about whether other even more inappropriate (i.e., offensive) data might wing its way to the user. I followed this up, and got the following response:
“The facility does have filters in place to prevent offensive words coming up… some of the words in these texts are difficult for computers to process, we are using the results of your efforts to help decipher them.”
Which makes me wonder: if the texts are difficult to process, how can we truly be confident in any filters? And how should a tester go about raising a concern like this: is it a real defect? Or just a worry…?

The Times has an interesting article on investors’ attitudes to financial risk tolerance. Data suggest that investors’ perceived and actual risk tolerances can markedly differ, affecting the suitability of their investment portfolios.
So why’s this relevant? Well, as testers we always make risk-based calls on what to test and to what extent. We therefore need to understand how our perception of our own risk tolerance maps to that of the business so that these decisions are in line with what the delivery, and business, needs.
For a short while The Times has teamed up with finametrica.com who provide an online risk tolerance questionnaire. It’s obviously geared towards financial risk, but it’s well worth a look to see how your own risk tolerance maps to that of the adult population.
How does a website hosting a search for used cars already know my postcode?
I was a little confused about this, but the answer is obvious – yes I had used this search service before. In fact the basic search criteria could be easily pre-populated from data already persisted to my machine. The website in question utilizes Adobe Flash Player technology and a quick trip to their Settings Manager helped me understand what was going on. In my case the feature was quite convenient, but certainly behaviuor to be aware of if you are using a shared machine.
A few days ago, the network interface on my system ground to a halt. The arp and netstat commands suggested something strange might be going on, but I really needed to correlate the network connections with the system processes. I then discovered the -b flag for netstat (on Windows XP) which does exactly this, and helped me to isolate the problem.
More information on netstat and the -b flag is available here > http://commandwindows.com/netstat.htm
Just been involved with the beta testing of the new Feature Pack for OSGi Applications and JPA 2.0 for IBM WebSphere Application Server V7:
We’ve been using a much more agile development process than in the past, continually tweaking our approach and trying out new development and test tooling. I’m really pleased to say that this investment has paid off: even as a hardened test cynic, I’m genuinely impressed by the quality.
I was on a conference call today and someone mentioned that C has regained its place as the industry’s most popular programming language. I couldn’t believe it, after all Java has ruled the #1 spot for the last four years.
A quick check on the TIOBE index showed this to be true:
The explanation they give is not that C is growing but that Java is declining. So what does this mean for the industry? Is Java dying? Is there another contender for the top spot gradually working its way up the ladder?
The one thing that stands out is that C is a good language to know. It’s been around a while and it’s not going anywhere in a hurry. I wonder if they’re still teaching it at college and university