Testing in Team

Welcome to the series “Leadership in testing” from software testing guru and consultant Paul Gerrard. This series is designed to help testers with years of experience, especially in Agile teams, succeed in their roles as test leaders and managers.

IN previous article we talked about how to manage the execution of a testing project. Today we will talk about the changing role of a tester in a project team and how to improve interaction with colleagues both in the office and remotely.

In recent years, testing responsibilities have become more distributed. Instead of dedicating teams to testing, teams now encourage users, analysts, developers, and testers to redistribute testing responsibilities to improve collaboration. As a result, some testing activities and responsibilities are shifting to the left.

In this article we will talk about:

Shift Left (shift testing processes to the left)

Shift-Leftor shift left, can refer to several different scenarios. It can mean that developers take on more responsibility for their own testing. It can also mean that testers become involved earlier in the project, analyzing complex requirements and providing developers with examples as part of a behavior-driven development (BDD) process.

Sometimes this may mean no testers at all, with business analysts and developers taking full responsibility for testing.

The shift to the left is not new – the mantra of testing advocates has been “test early, test often” for years. As early as 1993, it was suggested that all artifacts of the incremental process – both document and software – can (and should) be tested frequently.

Shift left is primarily intended to force thinking about testing earlier in the process.

Although the dominant approach to the life cycle at the time was the “waterfall approach”, the number or length of the phases did not matter. The underlying principle was that the sources of knowledge that guide the design and development of software should be verified.

In a phased project, this might include formal reviews. In an agile project, a tester (or developer, or business analyst, or user) might propose scenarios in which the requirement or story author is asked to think through specific examples and discuss them before any code is written.

Here are the main changes associated with the “shift left” phenomenon:

  1. Behavior-driven development (BDD) allowed developers, users/business analysts, and testers to interact with what can be called business stories. Test-driven development (TDD) has been used by many developers for 15 years or more. Today, BDD is becoming more widely adopted because it promotes better collaboration in agile teams, as well as the introduction of BDD tools that can be used by developers. It is a simpler, test-driven approach.

  2. Continuous delivery (CD) has been around for 5-10 years, with roots in the highly automated build and release automation approaches pioneered by large online companies. It is now used by most organizations operating online.

  3. CD systematized and accelerated the release process through automation. But it also exposed delays in production, deployment, and infrastructure changes that were previously hidden behind slow build, test, and release processes. DevOps is a cultural shift in which developers collaborate much more closely with operations staff. New tools are now being released almost daily, and vendors are touting DevOps as “the next big thing.” It's a very hyped and dynamic situation.

  4. SMAC, or Social, Mobile, Analytics, and Cloud, represents a change in the way businesses are managed and a systemic change in the mobile space. Big data is collected, processed, and business decisions are made based on the insights gained.

Frequent experimentation with production systems enables business innovation to be implemented “at the speed of marketing.” Experimentation underlies what has become the most important achievement of the 2010s: digital transformation.

Testing as an activity, not a role

Shift left changes the role of testers. The redistribution of testing caused by shift left makes it clear that testers are not solely responsible for testing, i.e. testers no longer own testing.

If you think about it, they never really did their own testing, but there was an unspoken understanding in the projects that no matter what the rest of the team, particularly the developers, did in testing, the testers were the ones keeping things safe. If the developers were pressed for time and cut their testing time short to get the job done, the testers were there to keep them safe.

Testing is now an activity, not a role.

Developers are adopting better testing methods and increasing the transparency of their work. Good component or unit testing has specific goals that are different from system testing (as an example). Therefore, the amount of testing at the system level can be reduced.

Properly allocating test objectives and conducting testing to achieve these objectives is the primary goal of a testing strategy. Unfortunately, until recently, developers were not effectively held accountable, so they relied on late system testing to compensate.

Shift left increases developer responsibility.

Overall, the responsibility for testing is being redistributed, so the role of the tester is changing. Testers may do less tactical testing, but their strategic contribution is increasing. Testers may have their own testing strategy, challenge requirements, consult with stakeholders, and develop closer relationships with developers to improve developer testing and test automation.

New role

Shift left means that whenever there is an opportunity to provide feedback that will help the team understand, challenge, and improve goals, requirements, design, or implementation, such feedback should be provided.

Users, developers, and the entire software development team should be prepared to share feedback in this way. Sometimes there is resistance, but the overall goal is to make the project better and more informed – that’s all.

The simplest way to sum up this behavior is: “Get involved early.” Participate in discussions and collaboration on ideas, requirements, and at every step where the outcome of that step affects the value of the final project result.

Simply put, a tester checks sources of knowledge, whether they be stakeholders, users, developers, business stories, documents, or use cases.

The most common approach is to test with examples. At all stages, these examples can be thought of as tests. They can be quickly discarded after use, or systematized for automated testing or manual verification. These examples can be used simply for tactical purposes, to point out flaws in human thinking, or provided to developers, say, as test ideas. They can also be used as tutorials, to show users or developers how to create better tests.

Think of your software project as a process of acquiring knowledge. This knowledge accumulates throughout the project and often improves over time. The goal of shift-left is to ensure the validity of this knowledge by verifying and testing it close to its source and, if possible, to give it credibility before it is frozen in code.

Shift-Left takes the test-first philosophy further. Agile has always encouraged collaboration and rapid feedback — shift-left can be thought of as a consistent approach to rapid feedback. If your team is taking a test-first approach, having the right tools can make all the difference.

Agile testing methods

The shift left approach is fundamental to the testing strategy of agile projects. In the context of agile, the testing strategy can be viewed as a series of testing interventions. All projects have critical moments when there is an opportunity to gather information and provide feedback. The tester should focus on these critical moments and be prepared to contribute to their resolution.

In your own projects, you need to identify critical moments where intervention is possible and identify the choices you can make when testing as a team. For example, should a tester write unit tests for developers, provide examples to help them get started, or train them to improve their testing skills? This is something only you and your new software testing team can decide.

We will use a typical Scrum process to demonstrate how test interventions can be used within the Scrum approach. Interventions are performed either at the project (or release) level or at the sprint level. The diagram below shows the project level view and the five key interventions.

Story testing and story definition are the steps in which the tester checks the user story and the proposed acceptance criteria for the story, respectively. Integration tests check whether new features are correctly connected to other features and the system as a whole. System and user (acceptance) tests are performed as needed.

A project typically consists of several phases, and the four phases of a sprint are shown in the diagram below. The daily standup is an opportunity to report on progress, raise concerns, identify risks, or discuss questions raised and answers received during the sprint.

Story refinement and developer testing participation are daily activities that are conducted through discussions with users, analysts, and developers. The tester combines developer tests and new system tests into an ever-growing collection of tests to be automated.

The table below provides a summary of tester interventions. Your process may be different or based on Scrum with variations, but the table shows the typical types of interventions in a typical Scrum process. You may have more or fewer active interventions at different stages of your own unique process.

I suggest you identify the critical points, offer your input, and negotiate with your team. You offer more testing leadership and guidance, rather than just volunteering to take on the testing work. This approach will make it much easier to demonstrate your value to the team.

Relationships with developers

In some organizations, relationships between developers can be distrustful, blameworthy, and antagonistic. In the worst case, the relationship becomes toxic: developers do little testing at all, and testers are seen as servants of the developers. Testers adopt what might be called codependent behavior and act like victims. This is precisely what the shift left approach seeks to avoid.

There are many metaphors that have been used to describe a good developer-tester relationship. We'll use the pilot-navigator style of working to illustrate how a comparable developer-tester relationship might work. But first, let's look at a dysfunctional situation.

The navigator does not board the plane, but waves to the pilot as it takes off. The navigator travels by bus, separately, but slowly. Eventually, the navigator arrives at his destination, but after a while it turns out that the plane flew in the wrong direction and crashed into a mountain.

Surely the navigator would have been on the plane? Imagine pilots and navigators working together in real life.

The pilot/navigator relationship is comparable to the programmer/tester relationship. Splitting developers and testers into separate teams working sequentially also doesn't make sense. However, that's what we've traditionally done for the last thirty years or so, especially on larger, longer-term projects.

Shift left redistributes the notion of testing and effectively moves it forward. Testers act as full partners with developers, just as navigators act in relation to pilots:

The developer-tester relationship just described does not happen automatically in an ideal world. It must be designed by the team. You can view each of the above actions as an intervention, but intervention is not always convenient for all parties. Give this approach the best chance of success by discussing each type of intervention with your partners at the very beginning, when you know for sure that you will have to work closely together.

Interventions, like good user stories, are triggers for conversations.

Each type of intervention requires agreement from both parties that it is an acceptable action. To feel comfortable, each must trust the other that there are valid reasons to ask questions, raise issues, and challenge demands, or to understand each other in meetings, planning sessions, or retrospectives.

Problems of distributed and outsourced teams

The discussions above have assumed by default that everyone is working on the same team and in the same location. When a software testing team's workload is outsourced and/or offshored, several negative factors come into play. The table below lists three typical factors to consider.

Physical (and temporal) separation

Teams may be spread across offices, buildings, cities, countries and time zones. Communication is disrupted, channels are limited and less information is received.

Different motivations

The supply team works for an organization that is paid to perform testing work. Ultimately, their motivation is to make a profit. Fixed-price contracts require fast work. When deadlines and material contracts are met, there is a temptation to expand the work.

Cultural differences

National and cultural differences can be significant and sometimes take time to acknowledge and accommodate them.

Company/Corporate Culture

Corporate cultures also vary – companies tend to work best with companies of comparable size, flexibility and formality. Companies are more or less cautious when it comes to confidentiality, security and so on. Companies have different leadership styles, and the differences between government and commercial organisations also take some getting used to.

Suppliers work under contracts

Your supplier is not loyal to your project stakeholders or their business goals. They operate under the rules specified in their contract. If you can, make sure your contracts define all responsibilities of both parties and that the contract rewards good behavior and punishes bad behavior.

Some companies expand their existing software testing teams to provide more capacity for larger projects, or hire specialist testing companies rather than relying on contractors or internal users to perform testing. In other situations, all development and/or testing may be outsourced to vendors. In all cases, the client company must manage its vendors. This does not mean that a restrictive contract with harsh penalty clauses will suffice.

When things go wrong, you want quick responses and cooperation from your supplier; you don't want them hiding behind legal contract provisions.

The secrets of success are as follows:

Food for thought

And finally, a few questions to get you thinking.

What kind of relationship do you have as a tester with your developers? Or, if you're a developer reading this, what's your relationship with your testers? Maybe ask your development or testing partners how they would describe your relationship. Compare notes!

For software testing teams to be productive, they must communicate and collaborate.

Similar Posts

Leave a Reply

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