Today we welcome back nFocus’ Jane Kelly with a blog on software testing and puppies!
Rather an odd combination isn’t it? The idea came about as my young daughter asked me what a blog was, and then what I was writing about. She suggested that someone should write a blog about testing and puppies, as she has been puppy crazy since a toddler.
So here goes, an alternative look at the synergies with puppies and software testing!
Typically, in Software Testing we look at a requirement or a set of requirements and then impact assess them. I imagine the initial stages of getting a puppy would be to consider the high-level requirements and they might be as follows:Requirements:
- To provide a loving home for a new young animal.
- To learn, grow and develop an education about animals.
- To promote healthy exercise within the family.
- To provide companionship for family members.
- To build and maintain a mutually beneficial bonding experience and lasting relationships.
- To improve the mental health and well-being of the entire family.
- To increase the fun and laughter quota in the household.
- To build awareness and consideration of the needs of others.
- Increase in spending – new bills for food, water, vet expenses, equipment, insurance, supplies, etc.
- Reduction in free unrestricted venues - dog friendly suitable activities and locations will need to be regularly considered.
- Increased risk of things being damaged, broken etc., such as puppy chewing, toilet training, exuberance of physical activity near breakables.
- Increase in activity – waking, days out to the forest, beach, countryside – through dog walking/swimming.
- Increase in awareness of animal needs, well-being, behaviour and related considerations.
- Reduction in free time, due to the added duties related to dog ownership, building time management/prioritisation skills.
- Increase in holistic family happiness, due to the loving and entertaining benefits of dog ownership.
- Increase in mental and physical health and well-being due to increased exercise and additional bonding.
- Increase in networking/socialisation - meeting new people, exploring new locations.
- Increase in knowledge via new experiences and speaking with more people.
- Increase in fun, laughter and family cohesion.
- Changes in social dynamics - i.e. people with phobias and allergies are much less likely to interact.
These requirements and impact assessment listings are of course, quite vague and begin to make me think about how they would be measured and evaluated. With software testing we can measure things like impacts and outcomes such as number of live defects, timings of transactions, number of sales, customers etc, more easily. To me though, there are many synergies with several areas of software testing especially the software testing fundamentals.
The fundamentals or basics of software testing are subjective and debated to a considerable extent. Some of the basics might typically involve the following:
- What are the requirements and are they all testable?
- What are our testing objectives?
- How much budget do we have?
- What time period are we working to?
- What action if any can be taken for items out of scope or those that are un-testable?
- Which areas have room for flexibility?
- Which areas have no flexibility and what actions are potentially needed as a result?
- Are we agreed on our processes and is everything in place to enable them?
- How will we measure quality assurance?
- How will we achieve quality control?
- How will we measure quality?
- How, where and to whom will we report on quality?
- How will we handle the change control process?
- How will we apply fixes to problems, then what about emergency fixes?
- What are our rollback (back out) options if things go wrong?
- Do we have any contingency planning?
How will the split of ownership be agreed, - in the example of the puppy ownership, agreement of who will cover the costs, the exercise, the expected and routine medical bills, the unexpected costs, the playful needs of the puppy, the socialisation of the puppy, the feeding /water routine quality, frequency and content. We would also need contingency planning for changes in sickness, unplanned absence, changes in income and family activity schedule etc. In short, who will own these changes and overall implementation and accountability for the changes?
What are the test requirements? How will we define a test? A test is to perform a specific activity with a targeted outcome and check that it achieves that outcome. In the case of the puppy we could specify the following test as an example.
Test: Take the puppy for an on-lead walk in the local neighbourhood for 30 minutes then return home together safely.
Test outcome: Walk is completed successfully and both puppy and walker return home together at the expected time.
How will we measure quality? Quality could be, where there were no mishaps, trips, slips, dog fights, rain, hours of daylight, sunshine, social contact, number of other dogs met, minutes of off lead, play, equipment used such as sticks, balls, frisbee etc. These would need a set of benchmarks to compare against. We would also need to consider enjoyment but that in part is measured by mood and user experience, which is far more subjective and transient but will heavily influence perceived quality.
What will we measure, and will that change over time? We could combine a collective list of the the key features of a dog walk, or perhaps set profiles with their own individual criteria to measure against.
How and where will we check the testing and its outcomes? We could jot it down or even track on the computer but overall, it would be highly likely to be based upon gut feeling memory and emotion combined with number of incidents. In this example we could define incidents as dog scuffle, slipping the lead, not taking enough supplies, lead breakage, trips etc.
How will we measure the testing? Testing could be measured in weeks, or months, or per outing perhaps? The collective or individual records could be used along with an incident tracker for the occasions when things go wrong.
When will we start/stop measuring? These things will change over time before life with a dog becomes the norm and can loosely be signed with BAU.
Verification and Validation: Are we building the product right and are we building the right product? Are we building a dog friendly life as per our structured intentions, is life with a dog right for our family and environment?
Debugging- analyse and resolve defects: When things aren’t going to plan, analyse the root cause, see if it is within our control either individually or as a team and recommend corrective actions where appropriate and retest to see if it is resolved.
Throughout the whole process we are each effectively user acceptance and user experience testing within a live environment. We will find ourselves testing puppy equipment, food supplies, holiday venues, veterinary offerings, day outing venues, dog friendly locations, maybe even dog-oriented forums, and clubs.
Lifecyle: In software testing, change has a planned lifecycle and can be viewed as the journey from the concept through to post-delivery support, including warranty period and post-implementation follow up. The needs of a puppy will change over its lifecycle many times, not too dissimilar to the solution of projects and related software testing.