“Define structure”: my thoughts on James Bach’s challenge


Yesterday evening (in the UK anyway) James Bach set a challenge for Rob Lambert:

jamesmarcusbach:  @Rob_Lambert Quick tester challenge for Rob Lambert: Define “structure.” You have 10 minutes. #softwaretesting

It got me thinking too and my brain went into overdrive so I thought I would set out my own thoughts on the matter in a blog post.

In his response Rob highlighted several different types of structure and brought out that structures are in essence a ‘system’.  I like to think of structures as providing a framework or a set boundaries within which people, or things, should operate.

For example:

  • The laws of the land – a set of constraints governing how people in the country are to behave;
  • Buildings – the walls of the building define the space available to its occupants;
  • Skeletons – defines the shape and provides the basis for growth of the person or animal it belongs to;
  • DNA – defines the characteristics of the living organism containing that DNA sequence;
  • Roads – show us where we should and should not drive.

Some of these structures are more flexible than others; they are easier to change than others.  For example there are some fish and animals which, because of their DNA, can change their shape or their colouring to exactly match their surroundings and thus evade predators.  This change can happen in an instant.  Buildings can be extended but someone has to do something to make that happen and it requires hard work.  The impact of structural change can be quite dramatic.  If a road is re-routed the impact on the natural environment can be huge and get people quite upset.

Some structures are clearly vital for us: what we know of as the laws of physics attempt to document the way the universe works.  It would be horrendous if what we know as gravity stopped behaving in a constant fashion; if the earth’s rotation round the sun stopped we would have massive problems.

In computing we rely on certain structures.  For example networking: could you imagine trying to test a network application if there was no defined way of communicating between two computers and every manufacturer did something completely different?

There seemed to be a lot of emphasis at Agile Testing Days this year on education.  Our education provides us with a structure and I believe we are each responsible to ensure we keep ourselves up-to-date, that we self-education and strive to be as flexible and adaptable to our environments as possible.  We will not do this by sticking rigidly to the requirements of a particular certification body, we have to go out there and do what is right for us and for our clients.  We need to be like those creatures that can change in an instant to blend into their surroundings.

Your thoughts and comments are, as always, welcome…

About these ads

7 Responses to ““Define structure”: my thoughts on James Bach’s challenge”

  1. James Bach Says:

    Nice analysis, Stephen. I’m happy that this fits with my sense of structure, which may seem a bit abstract, but think about it: “structure is that which manifests a pattern or causes it to persist over time and space.”

    In other words structure may guide, or constrain, just as you say. Take away structure, whatever it is, and some pattern, somewhere, will disappear.

    In mathematical chaos, some simple structures may *prevent* a pattern from appearing, which is another kind of pattern!

    And one popular use of the word “structure” focuses entirely on “externally imposed structure.” The problem with that is there is, of course, a great deal of structure that doesn’t come from the outside of a system. For instance, we follow our interpretation of the rules of the road, not actually the rules themselves.

    Thanks for considering my challenge. I hope you will challenge me, too.

    – James Bach

    • Stephen Hill Says:

      Hi James,

      Thank your for commenting – and for setting me off on this with the original challenge.

      I have been pondering the subject a bit more during the course of today and in the light of tweets appearing on my timeline. I like your suggestion that any fixed relationship between two elements is ‘structural’. I think we need to add ‘at a point in time’ to that because the relationships between elements can change – for instance as new facts come to light – or other forces acting upon the elements vary.

      Thanks again for commenting and for your encouragement.

      Stephen

  2. Jeremy Sloan Says:

    As a thought experiment, imagine rock candy growing on a string that has been suspended over and into a solution of sugar water.

    The crystals that begin to grow on the string exhibit properties intrinsic to the sugar molecules themselves.

    Environmental factors, such as the ambient temperature and the amount of sugar dissolved in the solution, control the speed at which the crystals can grow.

    The string itself is a guiding framework that provides the conditions optimal for the crystals to emerge. If it did not exist, the crystals would still eventually form as the water evaporated from the solution. However, they’d be stuck to the sides of the solution container in an inconvenient way.

    Since we’re using a string (instead of something rigid like a stick), we could change the shape of the emerging structure by exerting external pressure. For example, once we had a certain length of hardened sugar crystals, we could prop that length of string up at a 90 degree angle. Different frameworks impose different kinds of constraints.

    These factors: intrinsic properties, environmental factors, frameworks and external pressure, help to define the ways in which many different kinds of structures emerge.

  3. George Cover Says:

    Firstly, this will be my first comment on one of the many (excellent) blogs I’ve found about testing so the challenge for me will be accepting opinion on mine and learning from it, rather than retreating.

    In regards to structure, focussing on testing, my immediate reaction to the tweet, and post here, was “a net”. Trawlerman use them to direct their catch towards certain targets and a similar principle could be employed to direct exploratory testing towards a certain piece of information, or quality measurement.

    Overly specific test cases could be seen as a line dropped in the ocean; granted we could drop many many lines but catching nothing could mean the bait is wrong. Using a net we could be fairly certian that if we didn’t catch anything then there’s probably nothing around that could be caught with that net. Addtitionally it’s easier to change the size of a net than to change the bait on a million single lines.

    Net size could be influenced by many things including external parties as well as internal experience and knowledge. Trawling through the water with different sizes nets allows a more productive use of time in catching fish – could this also apply to testing?

    I’d be interested to hear your thoughts Stephen – pedantic (or semantic) is a word used by my colleagues and friends to describe me so I have a particularly warm feeling knowing there’s at least one more tester out there willing to admit to it :-)

    • Stephen Hill Says:

      Hi George,

      I really like the analogy of the net for a number of reasons. Firstly because they provide a framework: if you have a small net no matter how hard you try you will not catch a large fish like a shark. This has regulatory issues because there are many people concerned about using nets which allow dolphins to become trapped, for example. The trade-off for trawlermen is that they cannot therefore catch as many types of fish as they would like.

      In testing we have to be aware of the constraints that are enforced by our testing regime. If we are too loose in our testing practices we risk not catching bugs – or not catching the right bugs. Similarly, as you point out, if we use too rigid a structure for our testing we will find very specific bugs but not others.

      Thank you very much for commenting, George. Do feel free to add your voice to the many discussions that go on about testing: engaging with other people lets us all learn from each other and broadens our understanding, as individuals, of our craft.

      Stephen

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


Follow

Get every new post delivered to your Inbox.

Join 761 other followers

%d bloggers like this: