Print Page | Close Window

Agile Testing -- A Statement of Concern

Printed From: One Stop Testing
Category: Quality Assurance @ OneStopTesting
Forum Name: Quality Methodologies / Streams @ OneStopTesting
Forum Discription: Any Good Testing Engineer must know about All the Quality Certifications & Methodologies like ISO, IEEE, CMM, PCCM, CMMMi, XP, Agile and many more.
URL: http://forum.onestoptesting.com/forum_posts.asp?TID=2641
Printed Date: 16Nov2024 at 6:45pm


Topic: Agile Testing -- A Statement of Concern
Posted By: tanushree
Subject: Agile Testing -- A Statement of Concern
Date Posted: 03Oct2007 at 12:05am

I apologize for the length of this post but it's one of those things that requires elaboration. I'm referencing here the article http://www.testing.com/agile/agile-testing-essay.html - "Agile Methods and Agile Testing" by Brian Marick and I'm doing so with a skeptical intent. I don't have an axe to grind with Brian. I don't even know the guy. His article just happened to be presented to me as being the "right way" by a fellow manager. What I'm really speaking to here is the notion of "agile" that I seen get thrown about so much. Quotes from the article will be in bold italics.

My focus here is more on how agility is used to filter into testing.

"Programmers are often in the grip of the Hands-On Imperative; that's why they don't like to write documentation. Agile Methods accept the Hands-On Imperative, but extend it to the users."

That's what I find "agile methods" do when they start to filter to testing: accept all the time. Instead of making a stand and advocating that something should be different, it just says: "Okay, I'll adapt and go with whatever." To some people that sounds good. After all, we should be flexible, right? Well, to me, it sounds much too accomodationist. They don't like to write documentation. Therefore it must be a bad thing. Therefore we should accept the "Hands-On Imperative."

"And a user asked to evaluate an abstraction like a requirements document or a design model thinks profoundly differently than one presented with working software."

This is a contention that is debatable. First of all, "working software" can be an abstraction of a problem that the software helps to deal with. But let's not quibble at that level of detail. Instead let's look at what the "abstraction" of a requirements or design model is. It's a story. People, over the course centuries of cognitive developement (and over the course of millions of years of evolutionary pattern development), have come up with workable, usable, successful techniques for telling stories to each other. Requirements and design models are stories. People can use the same techniques today because, at their root, they've changed very little over the centuries. Why? Because the human brain has not changed all that much. We still receive information and assimilate it in our minds in the way that our ancestors did. Our basic neural wiring has not changed, so the techniques of storytelling, of putting information into that human neural wiring, are basically unchanged. Yes, believe it or not, the software world did not alter thousands of years of cognitive wiring, even though some people like to think so.

Are requirements different from working software? Of course. There I would not disagree. But where I would disagree is regarding the conclusion that the agile community seems to draw from this.

The further contention is: "Development is organized into a rapid series of functionally complete releases, each one made available for the user to try." Okay. That sounds good. However, nothing says that documentation efforts can't be organized into a "rapid series of functionally complete releases", where such documentation is made available either before working development builds or along with it. The two could evolve together, for example, so that at the end of those rapid developments, you have rapid documentation that matches what was developed. You never see this advocated. Why not? Now, would this mean putting the brakes on some development speed? Maybe. But that's not necessarily a bad thing!!! Moving as quickly as possible means just that: as possible. Getting some documentation down can be part of what factors into the notion of "as quickly as possible."

"One of Scrum's practices is carefully crafted daily standup meetings that create and preserve group understanding."

That's great for institutional knowledge. However, is this how you want to preserve group understanding? By standup meetings? I would much rather preserve knowledge in documentation. The idea of oral tradition went out even before the printing press. I'm not sure I want to go back to it. I prefer practices that allow us to deinstitutionalize knowledge so that knowledge is not just captured in a group of individuals that are attending the same meetings.

"With a suitable customer representative at hand, you don't need a detailed requirements document. When you have a question, you turn around and ask. Worried that you won't know to ask the right question? Implement something and show it to the customer for a quick reaction - you'll quickly learn if you're going off track."

What if the "suitable customer representation" isn't always at hand? I know Agile methods want this, but what if they can't be? What if you can't just turn around and ask? What if the customer can't always give a quick reaction. Even if they can, don't you want to document what was decided and why so that later on people can refer to that, such as when (as often happens) the customer "forgets" what they said they wanted. Beyond this, agile approaches often indicate that customers don't know what they want even when they have time to write it down. So do they all the sudden know what they want on the spur of the moment? Yes, they can see the development happening so you could argue this lets them immediately see if they want it. But there's such a thing as changing their mind. There's such a thing as only seeing a limited part of the development as opposed to the whole thing. There's also the idea that adaptable documentation could go along with this "spur of the moment" customer focus.

"But there'll be a background of tacit understanding of the fundamentals, so that different people will reflexively make consistent choices when confronted with similar problems."

And where is that "tacit understanding" coming from? What's the "background"? Does everyone accept that background? How do we know? Do we ever check our "tacit understanding"? If so, against what? How do we know that what's "fundamental" is truly fundamental? Is all of this literally just based on past conversations or standup meetings? Is it truly based just on a shared understanding that isn't written down? How we can tell the choices are consistent? Do we just keep everything about our shared understanding in memory? In simple situations, maybe that's easy enough (although I doubt it). But situations have a way of becoming complex. Also, what's our basis for recognizing "similar problems"?

"We've always realized that the documents we base our tests on are flawed - incomplete, incorrect, and ambiguous - but our reaction has been to insist, in our usually powerless way, that the document producers do better. But now we can see that 'better' will never be good enough."

Regarding that last statement: According to who? The "Agile" crowd? To say something is "never" the case seems like a weak statement to me. (Plus in the context-driven world, you could only say this relative to a given context, right? It can't be a universal, by definition, since everything is contextual.) Seems to me that here's another case of accomodationist thinking. "Well, we're powerless anyway, so let's just assume that the practice is bad and come up with another one." Maybe the documents they've seen have been flawed. But the solution is what? To scrap all documentation as a bad thing? Or do we work at coming up with better ways to document?

"Documents can't be an adequate representation of working code."

And why should they be? And who said they were? This is a straw man that I often see established to argue against a focus on documentation.

All this said, the article ends with this: "Agile Testing is not the answer for all projects. Neither is any of the Agile Methods named in the first paragraph. No single approach can be." I would agree, even though a lot of times the Agile crowd talks as if you would have to be an idiot to not be utilizing "agile testing" or working in an "agile" environment.

I should point out here that I agree with some aspects of agile development. However, part of a good testing effort, to me, is making sure that there are reasonable breaks applied to some "agility" when it's in the best interests not just of the current project, but of the culture in which projects are done. My contention is that I ultimately see "agility" (as a concept for development and then filtering into testing) leading us, as an industry, down a dangerous path.




Print Page | Close Window