Last year James Bach wrote
 that he “…"invented" testing…mainly by discovering that the problems of
 testing have already been solved in the fields of cognitive psychology,
 epistemology, and general systems thinking.” Well, there are simply 2 
things wrong with the 2 points James makes in his statement. First, I am
 pretty sure James didn’t invent testing. Although, he has been very 
successful at taking the most commonly used testing method, wrapping it 
with the fancy moniker of ‘exploratory testing,’ and having us believe 
that we really don’t understand it (until of course we drink the 
'kool-aid' and concede exploratory testing is the best thing since 
sliced bread). Secondly, the problems of software testing are complex 
and they certainly aren’t already solved. I won’t pretend to know what 
the solutions are to the problems we encounter in software testing, but I
 am pretty confident the solutions are not going to be found by studying
 cognitive psychology, epistemology, or systems thinking.
Now,
 don’t assume that I simply dislike James Bach. I agree with James on 
several points regarding the need for better tester education, the value
 (or lack thereof) of tester certifications, and some of his earlier 
writings. However, I do admit that James and I disagree on several 
issues. Professional disagreement is not bad; in fact it sometimes 
sparks healthy debate, and motivates thought so we can reach our own 
logical conclusion and reconcile alternative points of view.
One
 point of contention is the correlation of software testing with 
branches of philosophical, psychological, and sociological fields of 
study. The idea that solutions to the problems in software testing 
practices and processes can be found by studying philosophy, psychology,
 and systems theory is twaddle. These are interesting topics and can 
certainly heighten a person’s ability to think abstractly and question 
assumptions. But, are these subjects really unique to software testing 
or do they also apply as equally to development, or to any other job 
requiring a high degree of innovation and ingenuity?
Epistemology 
Epistemology is the philosophical study
 of the origin, the nature, and the scope of knowledge. When I find a 
defect in software testing, I must admit I really don’t spend a lot of 
time philosophizing how I know that I know this is a defect? Current 
theories in epistemology tend to focus on the subjects of truth and 
belief. Imagine a Venn diagram that illustrates an intersection between 
belief and truth as knowledge. So, I guess that if I believe an 
unexpected behavior to be a defect, and the requirements confirm it to 
be a defect, then I now know it is a defect. But, of course, if the 
requirements are wrong, then I can only theorize it is a defect, but I 
may be wrong because then it is only my belief (which may or may not be 
correct). Frankly, I
 am not too sure that understanding the difference between priori 
knowledge versus posteriori knowledge will help me decide whether or not
 the unexpected behavior is a defect. I am also not too sure how 
understanding the differences between the foundationalism  and coherentism approaches to knowledge will help me design better software tests. Personally
 if I were to correlate software testing to a non-engineering field of 
study, I would say that software testing is more akin to archaeology 
than it is to philosophy. To quote Indiana Jones, “Archaeology
 is the search for fact... not truth. If it's truth you're looking for, 
Dr. Tyree's philosophy class is right down the hall.”
Cognitive psychology
Cognitive
 psychology is the branch of psychology that studies mental processes. 
Basically, it studies how we learn and process that knowledge into 
behavior. As an educator and consultant I am very interested in how we 
learn and how we use the knowledge we acquire to reach logical 
conclusions, make reasonable decisions, and solve complex problems. 
Understanding cognition helps me design and develop better curriculum to
 train new software testers into professional testers and work with 
teams to resolve problems or implement new ideas. But, do new testers 
really need to study how people learn and how
 they process information, or do they simply need the capacity to learn 
engineering principles and apply that knowledge to design effective 
tests. 
Systems thinking
Systems
 thinking is related to general systems theory which studies the 
organization and interdependent relationships of systems. This seems 
logical in computer science, but general systems theory is usually 
applied to natural sciences and systems thinking is typically used to 
model human organizational behavior. Systems thinking views the ‘big 
picture’ of organizational relationships and the environment on a 
system. Systems thinking is mostly applied to change management 
processes because small events in an organization can sometimes cause 
catastrophic consequences. Effectively communicating decisions and 
continuously managing the processes effecting the change in an 
organization to minimize isolation of any part or element of the 
organization. Consultants must understanding change management and 
system thinking in order to be successful because their primary role is 
to introduce change to an organization. But, from a software testing 
viewpoint I am thinking that systems thinking may not be the best field 
of study to pursue. Perhaps a better focus would be systems philosophy, 
which is a form of systems thinking that focuses on design and root 
cause analysis. Systems philosophy studies the development of systems 
expressed as models. We often create models to help understand complex 
systems. In software testing we create models to help us design state 
transition tests.
I
 am not an expert in systems thinking, cognitive psychology, or 
epistemology. And, the simple fact is that I don’t need to be an expert 
in social sciences to be successful as a professional tester.(Of course 
taking courses in social sciences in university helps one think 
abstractly.)  And I certainly 
wouldn’t try to convince anyone who is serious about a career in 
software testing that they should spend a lot of time studying various 
branches of philosophy, psychology, or other human sciences to be an 
effective tester. As I said above, while these topics are certainly 
fascinating, they are of no greater importance to the practice of 
software testing then they are to software development or any other 
discipline that requires a high degree of intellectual horsepower 
and creative innovation.
http://blogs.msdn.com/b/imtesty/archive/2006/06/01/612734.aspx 
No hay comentarios.:
Publicar un comentario