A conversation with James Bach on testing tools and being unpleasant
Anna Patterson
Principal Software Test Engineer | Cypress & Applitools Ambassador | Mentor | Speaker
James Bach is founder and principal consultant of?Satisfice, Inc., a software testing and quality assurance company. In?the 80s, James cut his teeth as a programmer, tester, and SQA manager in Silicon Valley in the world of market-driven software development. For 20+ years, he has traveled the world teaching rapid software testing skills (and serving as an expert witness on court cases involving software testing).
*James is the author of 'Lessons Learned in Software Testing,' and 'Secrets of a Buccaneer-Scholar: How Self-Education and the Pursuit of Passion Can Lead to a Lifetime of Success.*
While?at STAREAST 2015, I sat down with James to discuss his views on developers testing, and his favorite testing tools.
**Originally posted on Utest blog.
Anna:?Nowadays there are a lot of companies, especially startups, that make developers do both developing and testing (mostly just unit testing) in an effort to speed up delivery and eliminate the expense of having a QA department. Do you think this is a good approach?
James Bach:?No, I really don’t. The testing mindset is a sophisticated and difficult thing to achieve. You can’t be in the testing mindset while you are in the building mindset. I am both a developer and a tester, and I can’t be in the testing mindset and the development mindset at the same time. They fight each other.
If you are a parent, you know that it’s very hard to see your child, your creation, your offspring, the way other people see him or her. Same way with the code - it’s very hard to take something that you have been building and creating and think of the following things at the same time: “What do I have to build next?" and “What are 900 things that can go wrong with what has already been built?” It’s painful!
You can switch from the building mindset to the testing mindset; but to be in both at the same time is almost impossible. I tried to do it with my own code and I just gave up. Of course, while I am creating it, I am thinking about a few little things, and doing a bit of some low-level testing – yes. But I don’t get into my serious hard-hitting testing mindset until I have been away from my code for at least about an hour, and after I have totally switched into “I don’t care who wrote this, all I want is to find its problems” mode.
And it’s not a matter of training – if it was, I would have already embodied both of these things.
Anna: Do you have a favorite testing tool?
James Bach:?Perl, Excel, Google?– those are my three favorite testing tools.
The thing is, I don’t believe in?testing tools. I believe in?tools. Any tool is a testing tool, and at the same time, there’s no tool that does actual “testing.”
There are all kinds of tools out there, but I generally use the following: I write programs in Perl to do anything I need to do, I use Google to get information about all kinds of things, and I use Excel to organize data of different kinds.
Anna: Is there anything you wouldn’t use as a testing tool?
JB:?Actually, a human being is the only thing I wouldn’t use as a testing tool, because I would rather have you use your judgment and have ownership for your work. And tools, on the other hand, don’t have ownership over their own work; they just do what you program them to do.
Anna: What advice would you give to the testers that want to be like James Bach?
JB:?You mean combative and unpleasant like James Bach?
Anna: I mean professionally.
JB:?I didn’t get to be like me by following anybody. So I think that if you really want to be like me, you need to question and reinvent testing for yourself, because that’s what I did. Another reasonable thing to do is to look at the quality that you admire and analyze it, and think about cultivating that quality in yourself.
So if you ask me a more specific question (Do you want to be confident like me? Do you want to have a good reputation like me?), then I can give you a more specific answer. But I personally didn’t just look at someone and say, “I’m going to copy them.” Instead, I felt that if I want to be really good at testing, I need to understand it, look at it very carefully, and constantly question it, instead of accepting what other people say about it.
And that was my attitude as a very annoying, brash young man, who was constantly arguing with people who had way more experience than me, questioning them, challenging them, and being unpleasant. That was an important part of my development – willing to be unpleasant. And I am willing to be unpleasant now, but now I am mostly unpleasant to powerful people rather than to weak people. In general, I try to cultivate a reputation of being angry.
Anna: Why? Doesn’t it turn people off?
JB:?It definitely turns people off me, but that’s OK for a couple of reasons. One – it takes a lot of pressure off me. The truth is, once in a while, I do lose my temper. But since everyone expects me to, they just say, “That’s just normal for him.” So I can be nicer, but if I fail to be nice in some particular situation, then people are not shocked -- they say, “Oh, I heard that he does that, it’s fine.”
The second reason I do it is the fact that I don’t see myself as one person, but rather as a team player. My strength is that I have a silver tongue and I am able to make strong arguments, as well as put passion into these arguments. It’s hard for many other people to do that. So I’ve taken on a role within my community of being a strident outspoken person, a fighter, and a person who says “This shall not stand.” I have worked very hard to earn that reputation, and I think it’s OK to be unpleasant in the service of truth. That is why I am strict and uncompromising about ethics.
A lot of people like to play that down and say, “Eh, he just has his own style of testing, and he doesn’t like anyone else who has a different style.” That’s not true -- there are a lot of different styles of testing, and I am fine with them. I do not complain about people who don’t test the way I do, but I do complain about the forms of testing that are fraudulent and ineffective.
But if we go back to the question of what advice I would give to someone who wants to earn a good reputation and feel like a real tester, I would urge your readers to do the following.
Take a piece of paper, and make a picture or a diagram of what software testing represents to you. Later on, when you do actual testing, you can refer to this diagram and ask yourself: “Is this what I am doing? Is my diagram correct?” If it isn’t - cross it out and try again. Develop a diagram that you can put on a whiteboard to explain to people what you mean and what you do when you are testing.
This process will help you better understand what you are really doing, and you will always be ready to explain it when somebody comes to you and asks: “What do you do? Tell me how you do your work.” Then you can just draw a diagram for them -- it’s a really good feeling when you have that kind of an answer. That’s one of the things that I tell people when I coach them in my testing expertise class. Making a diagram that helps you and others to understand how testing works is like making your own lightsaber!