Thursday, 7 June 2012
What is a cultural change?
An ordinary change is one where they say Yes and then don't do it. A cultural change, by contrast, is one where they glare at you first, and only then say Yes and don't do it.
Wednesday, 6 June 2012
Advanced test scripts
All IT and most business organisations will be familiar with the idea that they have to test systems. A basic tool in this is the test script.
A test script sets out a succession of a step-by-step instructions to carry out a test. It is crucial that testing be scripted to an extent commensurate with the risks of not testing properly, but when looking at either corporate standards or individual projects it’s striking how seldom even the minimum standards are met. Do your scripts state the expected result, so you tell unequivocally whether the test has been passed or failed? In my experience, most don’t. Nor do they tell the user what preconditions must be satisfied before the test can begin (navigate to…, using these privileges…), or tell you how to check the result, and so on.
So here is my recipe for a truly complete test script. You won’t want to use it because it’s long and complicated and you can’t see the point of it, but if you can tell me which fields are not needed by anyone with a legitimate interest in your testing, feel free to take them out.
The script falls in five sections:
- Document control
- Setup information
- Execution
- Outcome
- Result
- Document control data
- Identifier.
- Test name.
- Reference no.
- Parent identifiers.
- Author.
- Authoriser.
- Preparation date.
- Version.
- Set up information
- Planned execution date.
- Tester
- Function.
- Summary of test’s objective or purpose.
- Test condition(s) implemented.
- Positive/negative test?
- Start point (i.e., navigating to appropriate screen/process/field.)
- Set up/Initial conditions.
- User ID/privileges required.
- Preceding actions/tests to prepare the application.
- File selection, parameter settings, etc.
- The preconditions for the test as a whole (Eg, account no., currency, etc.)
- Execution (probably in table format)
- Step no. (if sequence is significant.)
- Location (Screen/form/field name at which testing should begin enter, for example, “Go to screen…”, “Select ‘Reports’ menu”, etc.)
- Input data.
- Data to be entered.
- Option(s) to be selected.
- Test actions (Step by step, checklist-style – e.g., “Enter data”, “Select option A”, “Click on Submit”, etc.)
- Outcome
- Actual test time/date.
- Actual result.
- Checked boxes (against each test step, to confirm completion.)
- Notes, with a general prompt to record anomalies, unexpected results, unplanned steps, & unusual system behaviour.
- Narrative/commentary (to support re-runs & regression testing.)
- Sign off.
- Tester’s name & signature.
- Test result
- Expected result.
- Method for checking actual against expected (if not just “Check actual vs expected results” - including automated file comparisons, etc., as appropriate. E.g., checking back-end systems, end-of-day report, messages, etc.)
- Pass/fail.
- Cause of failure.(Eg, “Comm320 failure”, “Data feed”)
- Defect reference field (to locate defect reports, anomalies, etc. my be needed at both step and script levels.)
Try it. Really, it works.
Invest in your corporate brain
The brain consumes about 20% of the body’s energy, and that is why we are by far the most dominant organism the world as ever seen.
From the point of view of development, I would say that formal processes represent about half of every company’s brain – a good deal of its memory, its practical skills, its controls of perception and behaviour, quite a lot of its capacity for reasoning, balance and coordination, and most of its basic language and social skills.
On the other hand, most companies' formal processes - their lifecycles, their operational mechanisms, their ways of working - are designed more like the brain of a crocodile. (The analogy is more exact than you might imagine.) They are spread out across they organism, they barely speak to one another, they are almost never tailored to the practical needs of their users, they are seldom created with a meaningful outcome or benefit in mind and never tracked or measured to see whether they are doing their job and seldom fixed even when they plainly aren't, they have no effective direction or ownership, they are formally changed in an arbitrary and impulsive manner, they are never changed to anticipate a real problem, and so on.
Without major evolutionary leaps processes like this will never evolve into something truly intelligent.
Why is this?
It is, I think, because we don’t bother to invest in them to the extent necessary. Perhaps we just can’t believe that they need maybe 20% of all resources. Perhaps, like the brain itself, the significance of these processes is lost on people who, almost by definition, cannot see what they contribute. After all, we only need to invest so much in a corporate nervous system because most the useful things an organisation does require a span of knowledge, control and attention no individual possesses. Hence the paradox of processes – they are installed because we cannot manage such vast and complex systems, but even when they are installed and doing their job perfectly well, we seldom construct, implement or support them in a manner that really improves our view of the whole. We are still cogs in a machine that, although it may now be working better, we still cannot grasp processes as a whole.
So what needs to be done to improve our grasp? There are quite a few things that can be done:
- Engineer processes properly in the first place!
- Make it a collective activity, don’t under-estimate how much effort it will take, or the hidden cost of getting it wrong.
- Start with a clear end in mind – and constantly test processes to see whether they are doing their job.
- Make sure everyone understands what the processes are for – i.e., don’t allow people to wander blindly through their work.
- Train everyone and train in detail. The ROI on training is higher than the ROI on almost anything else in management.
- Not training is not only completely counter-productive but also extremely demoralising and defeats the purpose of hiring intelligent, capable people.
- Do not over-engineer processes:
- Define standards and processes in terms of functional goals, not detailed technical steps, so they can be implemented and adapted locally.
- Conversely, explicitly Maximise local discretion and flexibility, so decisions made remotely cannot inadvertently force absurd actions locally.
- Make sure that you can fix any problems with the process.
- Instrument the processes to make sure they tell you how well they are doing without having to ask specially.
- Have an intelligent waiver/exemption process so local teams can escape the worst excesses of processes not defined for their purposes.
- Part of every well-defined process is the possibility of changing it. It will need changing, and you need that fact into it. So make sure that all processes are owned, with clear local accountability and authority to improve. Invest in the time and re-training needed to do that.