Skip to main content

Seven Ways to Make Testing Irrelevant on Your Team

Article

Seven Ways to Make Testing Irrelevant on Your Team

Article by Marlena Compton | Comments: (12) | Mon, 12/26/2011 - 7:00am
Summary:

Testers and developers can be friends. In fact, on teams working at a breakneck pace to deliver software, they must be friendly enough to rely on each other. However, there are a few sure-fire ways to ruin that relationship before it begins—and potentially make testing both irrelevant and unwelcome. Marlena Compton lists seven such ways here, along with suggestions for avoiding disaster.

Wouldn't it be great if everyone on your team loved testing and working with testers? When developers and testers have a respectful relationship, it's easier for developers to see the value and take an interest in testing. Instead, many testers pick up a knack of alienating themselves—and testing in general—from their team. The following is a list of ways in which testers may make themselves and testing irrelevant to others on their team, along with tips for avoiding getting stuck in these situations.

1. Insist that a highly functioning team working at a fast pace change their process just for you.
One thing I've noticed about good developers who work quickly is that if you find a bug, they often fix it before you even have time to write it up. If the developers have their own process for handling bugs and are effective at working through them, it's worth trying to do it their way before insisting that everyone changes to suit your personal needs. Otherwise, you slow down the pace and the developers will resent you because their work is taking longer for reasons that they cannot see.

2. Lock horns with the team on whether or not to release.
This can be hard for some testers to hear, but when to release really is not our decision. If you've advised the team of the risks they are taking with a release and everyone knows about it, you've done your job. It doesn't mean nobody listened to you. It means that they listened to you and decided to release anyway. It happens. If you keep disagreeing after the decision has been made, your team will hear nothing but tester interference.

3. After the business has made a decision you don't like, keep complaining about it.
One of the keys for having a fair discussion is that once a decision is made about something, it's time to move on. The truth is that there are plenty of changes and decisions over which testers have no control and no decision. It's important to be able to recognize what you can control and what you can't. That doesn't mean you can't report problems that result from decisions you dislike; just remember to keep it in perspective. If the problem is unlikely to be fixed, don't scream about it in your triage meeting.

4. Insist that everything be perfect when you look at it.
When the team is working on basic functionality for something critical like payments, it is not a good time to complain loudly about the rounded corners on the payment button. Doing so will only sidetrack the team from its central mission of producing a functioning payment workflow and sidetrack you from thinking about what may seriously go wrong, like if the system charges a customer $10,000 instead of $10. If the developers think you will sidetrack their work by only bringing up the minor problems instead of looking for big ones, you'll be seen as distracting from the mission. If the rounded corners really bother you, file it as a minor bug and bring it up later when the team is better able to focus on it.

5. Spread the attitude that developers are untrustworthy.
Developers make mistakes because they are human and because making software is hard. The ones I've known would never knowingly sabotage a project by creating bugs. Sometimes, they get the wrong information about how a feature is to be implemented or they don't get enough information and have to make some assumptions to finish their work. Treating them as though they intentionally did something wrong in the code to make your day harder is to blame them falsely and place them in a no-win situation. It's better to trust that developers are doing their best and not blame them for the bugs they produce.

6. Assume developers don't care about testing and testers.
Stereotyping developers as not caring about quality or not being interested in testing is to place unfair judgment on your teammates. I've met so many developers who want to write the best code they can. I've met developers who know as much and care as much about testing as I do. Highly functional developers are not stupid. Most have some humility about the code they write and want to make it better. If you work with such developers, you'll be working pretty hard to find their bugs. Spreading a false claim that they don't care about testing will create an adversarial relationship with them. If they see you as the adversary, they will also see testing as the adversary. Give them the benefit of the doubt, and assume that they want their code to be tested and they want a positive relationship with testing and you.

7. Tell the rest of the team that they can't test their application because they are biased.
If there is any generalization in testing I would like to kill dead, dead, DEAD, it is the assumption that developers can't test their own application because they are biased for their code. This is a magnificent way to create a testing silo. In actuality, I've never seen developers be more ruthless than when they were testing each other’s code. Whenever there has been too much testing for me to handle alone, I've scheduled an hour or two for developers to test their application and they have never let me down. Although developing good testing skills takes practice, developers are perfectly capable of doing it. Assuming that they are incapable of testing the application they work on is to give them very little credit. Involving them in testing activity will help them brush up on testing skills and think about testing more than they would otherwise.

Cultivating a collaborative relationship instead of a competitive relationship with a software team is important if testers want the team to have a good relationship with testing. This starts with the tester. Testers who are only willing to see themselves in an adversarial relationship with their team might have success at finding bugs, but it is also likely that they will alienate the rest of their team's relationship with testing. Software testing is hard enough. It's better to be on the same side as the rest of your team and to help them understand the relevance of testing.

About The Author: Marlena Compton

Marlena Compton believes that testing is a whole-team activity. Her experience includes both manual and automated testing in the US and Australia. Currently, she leads test automation for addons.mozilla.org for Mozilla.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

#1

been there and learned my lesson

Nice article. This is a topic I inevitably have to take up with team members or management on every contract I accept. Lately I have taken to discussing it before accepting the contract. It may be helpful to consider that management is central to this relationship. It is not the tester nor is it the developer that initiates this friction – I know that there are exceptions but such is generally due to individuals on the team alienating themselves rather than a true ‘us vs. them’.
I find that a good indicator of how Development works with QA is to look at what happens after a release. Is there a project retrospective? Is there an automatic assignment of praise or criticism to an individual or department? How does management look at defects reported from the field or even during the development process? The answers to these questions will reveal just how much work is going to be involved with creating a good working relationship between these people and departments.

#2

Nice Article

I enjoyed reading this article.

I would you like to make a point here. All the above points hold true when the entire team works as a cohesive unit and each and every member (be him a developer, or tester or the project manager) is commited to deliver quality code out of the entire software lifecycle.

Typically it hold true for teams working in an agile manner. Each one of them work for the success of the delivery rather than proving a point. Any kind of success is proudly shared and cheered across the team. Whereas any kind of failure is considered as a team's failure, rather than pointing fingers at each others.

Whereas in conventional projects, testing teams are generally a seperate team which has been hired/consulted to perform the testing phase. In such an environment testers generally become a easy scapegoat if some issue is observed in the production application. In this scenario, tester need to take care of all the processes and artefacts so as to ensure that everything is documented and testing has been performed as per the agreed scope.

A good developer should always try to write good code and should always be open to welcome and accept bugs in his code. Similarly a good tester should always try to find legitimate and correct defects.

I believe, it is all situation and individual dependent. It will always be an ongoing never ending debate till the existence of software industries.

#3

and then there's waterfall...

Thanks for taking the time to read and comment.

It's true that I work in a place where there is a lot of freedom for testers and developers to organize how they work together. A few months ago I saw a researcher do a presentation about how projects are organized at Mozilla and she said that while we do have some top-down management, there is a lot of peer-to-peer organization going on.

I have, in the past, worked on Waterfall projects. Even in those projects, when it came time to test, I noticed that the most effective testers would still talk with developers and ask questions while they were testing. This is where "the rubber meets the road" and management might say you're doing "process x" but it really comes down to you doing your testing against code written by another person.

Even if the only contact you ever have with the developer on the other end is through the bugs you write in the bug tracker you've been told to use, that's still a tester-developer relationship and it's worth thinking about the choices you make when you write your bug.

#4

Good one but where's the other side

Hi Marlena,

It was great reading the article which I would certainly be sharing with my colleagues. But I did feel the article was a bit biased showing that it is the QA team who is looking for a fight. And the comments above just prove that.

According to me testers who take there job seriously are only interested in finding the maximum no of bugs and what gives them most satisfaction is finding a bug which was challenging to find.

Finding a defect is not a victory for a tester and is neither a defeat for programmers. But often a programmer will get defensive if any defect is raised by a QA. In contrast I have seen teams where the programmers welcomed any defects considering that as an opportunity to improve the code. Such programmers would often find bugs themselves, log them, fix them and give the build for testing.

I think this attitude in a team is set not by a tester or a programmer but the management itself. If finding a defect is considered bad on programmers part sure enough the programmer will think anyone finding a defect is his/her arch enemy. Same goes for testers, if every defect they find is tried to be shoved below the carpet they are bound to react.

#5

Regarding management

Thanks for the great comment. This is, indeed, a very focused article and only represents things testers do to make testing suck for their teams.

The point you make in your last paragraph is very interesting: "I think this attitude in a team is set not by a tester or a programmer but the management itself."

I've worked under managers who didn't seem to understand the connection between having a good relationship with development and building a testing culture. In one case, I quit because it was a miserable place to work and in another case, the manager was replaced at a workplace where it's pretty hard to get replaced. In both cases, developers did not like working with either manager which ultimately made it more difficult to get the testing done.

For those who are in this situation: If the manager is micro-managing to a high degree...good luck. If they still give you some autonomy, there might be some things you can control about how you get to work with developers. In that case, it's worth doing what you can to work with them.

Working more closely with developers and also others on a software team such as product managers will ultimately help you find more and better bugs because you'll get a sense of where people are more challenged in what they are doing. If you help others to see that they can test as well, you will all be finding more bugs.

#6

Great job!

Nice writeup Marlena! point 6 resonated most with me, as its a good reminder that filing bugs in developer code should not be looked at as a negative thing. Testers should be seen as sidekicks to developers! knowing how to test something after architecture has been explained well by developers will only create good results from both sides, which is Quality Code. Good work!

#7

Thanks for the comments

It means a lot to see the points I make being embraced on twitter and here in the comments. Each of these points comes directly from personal experience or from seeing someone make the mistake and the cost to their team. Thanks for all the great ratings and comments.

#8

Great write up Marlena

There are many, many great points made here! It goes back to the point that we (testers) are there as support for the team. For instance, I guide decisions, sometimes with a strong opinion, but ultimately there are others that must make use of that information.

Support: "To maintain (a person, family, establishment, institution, etc.) by supplying with things necessary to existence; provide for: to support a family." I.e. information.

Maybe that is me being idealistic from working with a lot of small teams. Either way, an antagonistic relationship doesn't help anybody and potentially hurts the one thing the team has in common, the product. Plus all that drama and finger pointing creates a terrible work environment. Who wants to work in a place where you have to constantly protect yourself from your coworkers. I know I don't.

The only point I actually would partially contest (in my context) is #1. Most aren't in the situation where they are working with as many as 7-8 totally different projects with totally different teams all at once with limited testing support spread amongst all of them, but that is how it is in my situation. If I didn't have some modicum of control on when fixes were pushed into builds and deployed I (and my testers on my teams) would be locked in a perpetual cycle of regression. We have to break it out into manageable chunks.

Of course that schedule is a compromise between everyone on the team, so it still working with, not against developers :)

#9

Every QA should read

This is something I wish every QA would read. Great article!

#10

It is these points that

It is these points that everyone needs to be aware of. By working together great things can be achieved. These points may seem like common sense but if we all keep these things in the forefront of our minds then QA and developers can be best of buddies.

#11

well said. i this much of

well said. i this much of the dev\qa issues are all in the heads of the qa. i think other disciplines are ready to give us a seat at the table and it's qa that is not always ready to take the seat because it requires all of us to act as full team members, and participate as such. this is even more the case in an agile environment.

@qamob

#12

Great first article!

Great first article!