Skip to main content

Command Palette

Search for a command to run...

5. Essential Skills and Good Practices in Testing

Updated
4 min read
5. Essential Skills and Good Practices in Testing
M

Hello, I am Martin, a happy husband and father. I have done many types of jobs in my life, from cleaning car windows when I was 15 years old to being a Casino Supervisor at the biggest American cruise ship company. In every past job, I have found some meaning, but I haven't felt as much consistent challenge as I do when performing Software QA or Programming/Coding, and this is why I am passionate about it. I am a strong believer that putting any type of challenge in front of yourself and achieving it is the way to feel happy and find meaning in life. So, let's learn together how to be better at Software QA and Programming and become better versions of ourselves today compared to yesterday.

Skill is the ability to do something well that comes from one’s knowledge, practice and aptitude. Good testers should possess some essential skills to do their job well. Good testers should be effective team players and should be able to perform testing on different levels of test independence.

Generic Skills Required for Testing

While being generic, the following skills are particularly relevant for testers:

• Testing knowledge (to increase effectiveness of testing, e.g., by using test techniques)

• Thoroughness, carefulness, curiosity, attention to details, being methodical (to identify defects, especially the ones that are difficult to find)

• Good communication skills, active listening, being a team player (to interact effectively with all stakeholders, to convey information to others, to be understood, and to report and discuss defects)

• Analytical thinking, critical thinking, creativity (to increase effectiveness of testing)

• Technical knowledge (to increase efficiency of testing, e.g., by using appropriate test tools)

• Domain knowledge (to be able to understand and to communicate with end users/business representatives)

Testers are often the bearers of bad news. It is a common human trait to blame the bearer of bad news. This makes communication skills crucial for testers. Communicating test results may be perceived as criticism of the product and of its author. Confirmation bias can make it difficult to accept information that disagrees with currently held beliefs. Some people may perceive testing as a destructive activity, even though it contributes greatly to project success and product quality. To try to improve this view, information about defects and failures should be communicated in a constructive way.

Whole Team Approach

One of the important skills for a tester is the ability to work effectively in a team context and to contribute positively to the team goals.

In the whole team approach any team member with the necessary knowledge and skills can perform any task, and everyone is responsible for quality. The team members share the same workspace (physical or virtual), as co-location facilitates communication and interaction. The whole team approach improves team dynamics, enhances communication and collaboration within the team, and creates synergy by allowing the various skill sets within the team to be leveraged for the benefit of the project.

Testers work closely with other team members to ensure that the desired quality levels are achieved. This includes collaborating with business representatives to help them create suitable acceptance tests and working with developers to agree on the test strategy and decide on test automation approaches. Testers can thus transfer testing knowledge to other team members and influence the development of the product.

Depending on the context, the whole team approach may not always be appropriate. For instance, in some situations, such as safety-critical, a high level of test independence may be needed.

Independence of Testing

A certain degree of independence makes the tester more effective at finding defects due to differences between the author’s and the tester’s cognitive biases. Independence is not, however, a replacement for familiarity, e.g., developers can efficiently find many defects in their own code.

Work products can be tested by their author (no independence), by the author's peers from the same team (some independence), by testers from outside the author's team but within the organisation (high independence), or by testers from outside the organisation (very high independence). For most projects, it is usually best to carry out testing with multiple levels of independence (e.g., developers performing component testing and component integration testing, test team performing system and system integration testing, and business representatives performing acceptance testing).

The main benefit of independence of testing is that independent testers are likely to recognize different kinds of failures and defects compared to developers because of their different backgrounds, technical perspectives, and biases. Moreover, an independent tester can verify, challenge, or disprove assumptions made by stakeholders during specification and implementation of the system.

However, there are also some drawbacks. Independent testers may be isolated from the development team, which may lead to a lack of collaboration, communication problems, or an adversarial relationship with the development team. Developers may lose a sense of responsibility for quality. Independent testers may be seen as a bottleneck or be blamed for delays in release.

Good Testing Skills and Effective Practices