WARNING--THIS IS A VERY--VERY--LONG POST
To respect a friend's blog space, I've decided to respond to a commenter on Theo Moore's blog regarding a review he posted about TestComplete.
The commenter posted the following comment to me:
Dear MES,
Thanks for answering my query on be half of Theo. I would still love to hear from her (I think theo is female not a male).
>> there are things that you can do with QTP that qualify as "testing."
Can you name them? I am especially interested to know what is testing according to you. QTP is a tool, a software that can help a human tester in executing some tests and do some comparision. Testing in my opinion is a deep human intellectual investigative activity that happens to cognitive engagement of human with the environment of software. It is way beyond what a tool can do. It is possible that testing according to you may be different from my definition. But, equating automation to testing is something that is difficult for me accept with some probing around.
>>> It is capablye of so much more than simple record and playback
Yes it is ... I did not comment on record/playback aspect. QTP can do lots of things. None --- none of them can qualify to be testing in totality. QTP helps a human tester in testing. I agree it does more than simple R/P
>>> I've used it to verify applications are storing data to a database correctly using ADO DB connection objects. I've used the DOM model of a webpage to dynamically determine objects on the page (with a little help from my friends of course) so that the tests were not relying on the Object Repository.
You are right. QTP can do all these. But none of these can be called "testing" on their own. They are tasks or constituents of testing. If you call these as testing - I can only say that your definition of testing is very narrow and is nothing more than comparing expected result to actual result.
>>> So, frankly--castigating Theo on his choice of language in an industry with no standards regarding what is a Test Case versus Test Script versus Test Scenario only shows your ignorance
I may be ignorant -- but I am open to learn from you and improve my understanding of testing. I feel that what theo is calling as testing is actually is automation. I am sure she knows the difference.
By saying there is no standard in terminologies, what stops me from calling automation as fish and testing as elephant. Blogs and public communications are open for criticism and scrutiny. So, I posted my view points - let Theo clarify what is the meaning of testing according to her.
>>> is in no way suggestive of Theo's lack of experience in this arena. Which btw he has considerable knowledge.
My intention was never to question and challenge Theo's experience. As a tester I challange anything that is testable.
Even my this comment is open for challenge
Shrini Kulkarni
First--I feel M. Kulkarni should understand a few things about my Quality Control/Quality Assurance (QA/QC) background before I respond to his questions directly.
-
I have been a QA/QC professional since 1998.
-
I am a Certified Software Testing Engineer (CSTE awarded in 2005)
-
In my career I have been an accomplished manual tester.
-
Currently I consider myself to be an accomplished software automation engineer specializing in Keyword driven automation framework development using HP QuickTest Pro as my toolset with homegrown extensions via vbScript.
-
And since he seems to think it matters--I am female.
For the purposes of this discussion I am going to assume that M. Kularni is referring to Software Testing.
Now to respond to M. Kulkarni's questions:
>>I am especially interested to know what is testing according to you.
Software testing is a deep and complex subject.
There are many activities that qualify as testing. In the strictest terms, testing is a Quality Control mechanism to ensure software defect detection and correction. Now, does that mean that all "tests" are executed against software. No--it does not. Any time a Quality Control or Quality Assurance professional performs a document inspection on a business requirements document, software specification or technical design, they are executing "tests" against those documents. They are verifying that the document is complete, that the requirements listed within are clear, consise, measurable, testable, unambigous and without room for interpretation. This is something that an automated testing tool could never do. Well, I say never, but until we create artificial intelligence, it may as well be never. These are the types of activities that humans do best.
That doesn't mean that Automated testing doesn't have a roll to play in a software testing organization. The best use of automated testing is to do those tasks that are frankly monotonous. Those tasks that when performed by people are likely to produce user error. For example, I've been spending the last two weeks at my job automating a series of test cases that a manual tester has to execute every week. These tests are rudimentary, very simple and frankly boring. They are the kinds of tests that in my 10 years of experience have been "passed" by manual testers without them actually doing the work because they've ran them week after week after week with no failures.
This is the strength of an automated test suite. It does the work that people don't want to do. In a parallel sense, Babbage invented the calculator because people didn't want to add things anymore. Its error prone and frankly machines do those kinds of things better.
>>Testing in my opinion is a deep human intellectual investigative activity that happens to cognitive engagement of human >>with the environment of software.
That is an interesting point of view. I don't know that we differ on our definition of testing. My educational background is in the hard sciences, Physics in particular. And my approach to software testing is unique in that when performing manual testing activities, be it test script execution or exploratory testing, I take a very scientific methodical approach to testing. The principal difference between software testing and scientific method experimentation is that in Scientific Method, if your experimental results don't match your theory you change your theory. In software, you change your experiment. What do I mean by this: Well in software the "theory" is your requirements document. And the experiment is what the software does when you try to apply a set of steps to recreate the "theory" as described in the requirements document. If the software doesn't recreate the theory, you change the software to make it match the theory.
So what does that mean in regards to automated testing. Well...first and foremost, automated testing cannot be done on "new" code. A manual tester must ensure that the code is working correctly and that the code is stable before you consider applying an automated solution. Meaning..."Regression Testing" should be the primary domain of automated test execution. The exception to this rule would be using an automated solution to create data for testing a new function. An example would be generating rows of data in a database to verify an ETL process works correctly. So, using an automated script, a tester puts 100 rows into a transactional system, then requests the DBAs run the ETL and see how many rows end up in the data warehouse. It would be extrememly time consuming for the tester to create this data themselves. So, using an automated process allows the tester to exercise the code that changed..without spending manhours putting the seed data in the system first.
So I think this gets the ball rolling regarding how I feel Automated Testing plays a roll in a QC/QA organization. Is it a panacea? No... Is it capable of everything? No
However, does it have its place within a testing approach? Absolutely.
Thanks for reading this exhaustive post..I'm sure there's more to come. 