I’m interested in the extent to which this phrase is taking off as a replacement for the old “non-functional testing”.

I try not to be a linguistic pedant, and I think that words mean what they’re understood to mean by the audience. I want to be clearly understood, not linguistically pure. Hanging on grimly to some ancient literal definition of a word and ignoring modern usage is ludicrous. We have to adapt.

I’m happy enough to go along with parafunctional testing, if that is the clear consensus. However, I have reservations, so I won’t be promoting the term till I’m sure it’s widely accepted.

I have three concerns. The first is that I don’t have a problem with “non-functional”. I agree it’s a bit ridiculous, but its meaning is clear to those in the testing profession. Cleaning up the language by removing or changing terms that have become detached from their literal meaning is verging on the quixotic. It's not wrong. It just doesn't get me excited.

My second concern is more serious. Parafunctional is an existing word, with a different meaning. It’s used in medicine to describe parts of the body being used in ways for which they’re not intended., e.g. grinding teeth, which wears them down quickly, rather than merely chewing. Of course there’s no end of words that have two meanings. Another pair of homonyms is no big deal, but it seems a bit strange to deliberately create a new one, especially when the existing term is a precise medical term. People aren’t surprised when short simple words are homonyms, but are entitled to be puzzled when they meet them with technical words.

This leads me on to my main concern. The existing meaning for parafunctional describes a phenomenon for which we have no existing testing term, as far as I know. Sometimes we need to test applications to see whether they can be used in ways for which they were not designed. In my experience, this is important for financial systems. These need testing that goes beyond the functional requirements, to explore for ways in which they can be exploited and abused by fraudsters or irresponsible users. Parafunctional testing would be, or would have been, the right term for this. It would be a pity if we have to coin a new phrase for such testing because parafunctional has already been taken.

So, I have two questions. Has parafunctional testing taken root as the new term for non-functional testing. If so, fine, I’ll go with the flow. However, that raises the second question. What would be the right term for the sort of testing I’ve described, which goes beyond the functional requirements. It’s an aspect of exploratory testing I suppose, but it has a precise focus, testing for unintended functionality, and it doesn’t necessarily have to be done by exploratory testing, though that seems the right way to me. I have used the clumsy term “business rules security testing” elsewhere, but I’m not keen on it. What should it be called?

Views: 503

Reply to This

Replies to This Discussion

Some very serious testers have been using it. Matt Heusser, Ben Simo (same link), Michael Bolton, Cem Kaner & James Bach have adopted it, to name just a few! These are guys I respect and whose opinions I take very seriously. I agree that "non-functional" is deep rooted and would take some shifting, but if guys like these are using the term then there's a chance it will take off, among testers at least.

So I'm interested in how far their campaign has got. Actually, "campaign" is too strong a word. They're just pushing at the boundaries, aren't they? It's largely because the term is being punted by heavyweights like these that I'll be happy to go along with it if it takes off. It's not just about going along with the herd. But I'm still looking to be convinced!

Whatever the outcome I think the debate is healthy. Cleaning up the language is only really of value if it cleans up our thinking.

I'm not convinced by your suggestion of affordance testing for what I've described. I agree it's close, but I think it's subtly different. I think affordance is based on what a user is entitled to expect, whereas the sort of testing I've described can entail users being willfully perverse. However, I think there's an interesting link between usability testing and security testing that I'm meaning to write about sometime.
I don't remember to have seen the term used in any project. But I just found by searching internet that it was used in Cem Kaner's article dated 2004. The article I've red and referenced several times. And still don't remember the term...
It seems that Kaner refers to "parafunctional dimensions of product quality" rather than Parafunctional testing. Functional attributes are those having direct benefits to the end user. While for example supportability, localizability,
interoperability, installability, and scalability are attributes that may impact support costs, not the end user satisfaction. Those are features not intended for end-user exposure (hmm not sure if I make myself clear here).

I agree with your first concern, however.
I would say "parafunctional" has not caught on beyond those you regard as heavyweights.

The term "non-functional" is, I agree, somewhat clunky and I've never liked it much. At the same time, I think most people in IT understand what it means, which will make it difficult to supplant. Consider that most testing professionals regard QA and QC as different animals, and yet over 90% of all companies refer to testing as "QA". It drives some of my colleagues crazy. And new terminology for existing stuff just adds to communication issues within and outside the field.

I'm not sure "parafunctional" fits my understanding of non-functional testing, in fact, I have yet to work for a company that does what I would call "testing" of non-functional items, with the exception of load/stress/performance/response time reqs. Maintainability, for example. Portability. I've never seen those "tested".

I found your corollary to the existing use of the word "parafunctional" more logical. Actually, outside fraudsters or irresponsible users, we have, on occasion, been called upon to test a given function or application to see if it would be suitable for another set of clients who would like to use the app in a different way. I've never had a "term" to describe this kind of effort and I like "parafunctional".

- Linda
That's a very interesting point, Linda. I hadn't considered testing such as you describe. Clearly it's related to the sort of "abuse" testing I was talking about. Both are forms of testing for functionality that goes beyond the functional requirements. We can look at the spec and see what the application is meant to do, but what can it actually do if we push the boundaries?

Extra-functional testing would also have worked. However, I see that some academics have already used that as an improvement on non-functional. Why don't the parafunctional supporters adopt that and leave parafunctional for the "unintended functionality" testing? The "non-functional' sceptics can't hog all of the possible alternatives!

We're talking about exploring latent functionality, but that term has already been used for two different roles. One is to describe unconscious behaviour, and the other meaning has cropped up in IT where it really just seems to mean background processing.

We could use the Greek for hidden and call it cryptofunctional testing, but people would associate it with cryptography. The Latin would be occulofunctional, which is getting just a bit silly and pretentious.

I guess that unless we can claim parafunctional I'll just make do with "testing for unintended functionality". Clumsy, but reasonably clear.



© 2017   Created by Rosie Sherry.   Powered by

Badges  |  Report an Issue  |  Terms of Service