Chapter 1 – 1.5 – The psychology of testing – Part 1/2

  1. Recall that the success of testing is influenced by psychological factors: (K1)
    • clear objectives;
    • a balance of self-testing and independent testing;
    • recognition of courteous communication and feedback on defects.
  2. Contrast the mindset of a tester and that of a developer. (K2)

In this section, we’ll discuss the various psychological factors that influence testing and its success. These include clear objectives for testing, the proper roles and balance of self-testing and independent testing, clear, courteous communication and feedback on defects. We’ll also contrast the mindset of a tester and of a developer.

You’ll find a single Syllabus term in this section, independent testing, and the glossary term, independence.

1.5.1 Independent testing – who is a tester?

The mindset we want to use while testing and reviewing is different from the one we use while analyzing or developing. By this we mean that, if we are building something we are working positively to solve problems in the design and to realize a product that meets some need. However, when we test or review a product, we are looking for defects in the product and thus are critical of it.

Suppose you were going to cook a meal to enter in a competition for chefs. You select the menu, collect the ingredients, cook the food, set the table, and serve the meal. If you want to win, you do each task as well as you can. Suppose instead you are one of the judges evaluating the competition meals. You examine everything critically, including the menu, the ingredients, the methods used, keeping to time and budget allowances, choice of ingredients, the elegance of the table setting and the serving, and the look and taste of the meal.

To differentiate between the competition chefs, you’ll praise every good aspect of their performances, but you’ll also note every fault and error each chef made. So, it is with software testing: building the software requires a different mindset from testing the software.

We do not mean that a tester cannot be a programmer, or that a programmer cannot be a tester, although they often are separate roles. In fact, programmers are testers – they test the components which they build, and the integration of the components into the system. The good chef will be as critical as the competition judges of his own work, in order to prevent and rectify errors and defects before anyone notices them. So, with the right mindset, programmers can test their own code; indeed, programmers do test their own code and find many problems, resolving them before anyone else sees the code. Business analysis and marketing staff should review their own requirements. System architects should review their own designs.

However, we all know it is difficult to find our own mistakes. So, business analysts, marketing staff, architects and programmers often rely on others to help test their work. This other person might be a fellow analyst, designer or developer. A person who will use the software may help test it. Business analysts who worked on the requirements and design may perform some tests. Testing specialists – professional testers – are often involved. In fact, testing may involve a succession of people each carrying out a different level of testing. This allows an independent test of the system.

We’ll look at the points in the software development life cycle where testing takes place in Chapter 2. You’ll see there that several stages of reviews and testing are carried out throughout the life cycle, and these may be independent reviews and tests. Early in the life cycle, reviews of requirements and design documents by someone other than the author helps find defects before coding starts and helps us build the right software. Following coding, the software can be tested independently. This degree of independence avoids author bias and is often more effective at finding defects and failures.

Several levels of independence can be identified, listed here from the lowest level of independence to the highest:

  • tests by the person who wrote the item under test;
  • tests by another person within the same team, such as another programmer;
  • tests by a person from a different organizational group, such as an independent test team;
  • tests designed by a person from a different-organization or company, such as
    outsourced testing or certification by an external body.

We should note, however, that independence is not necessarily the most important factor in good testing. Developers who know how to test and who are, like good chefs, self-critical, have the benefit of familiarity and the pride-of-work that comes with true professionalism. Such developers can efficiently find many defects in their own code. Some software development methodologies insist on developers designing tests before they start coding and executing those tests continuously as they change the code. This approach promotes early testing and early defect detection, which is cost effective. Remember, independent testing may be carried out at any level of testing and the choice of independence level depends on the risk in the particular context.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *