QA: Someone that assures quality and hence the full form Quality Assurance. I believe QA is not a single person, for me it is a group of people with different authorities(product owners, managers, doc writer, engineers and many more) who combine there efforts to assure quality. I alone, as an engineer, cannot assure quality. I can write test plans, execute tests, write automation but cannot assure complete quality. Wikipedia defines engineer as “An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics and ingenuity to design and develop solutions for technological systems problems.” Also the word “engineer” is derived from the Latin root “ingenium”, meaning "cleverness". I am an engineer. So I can be clever, use my technical knowledge and design and develop tests and test plans, which other engineers, managers and product owners review and give a go or no go. Lets say a customer case comes from something that was not in the test plan than I am not solely responsible for that. I can assure, that the tests in my test plan have been executed and those areas are fine. It is the resposibility of the whole team to assure the quality, not a single person.
Tester: Any person who uses the system - Could be anyone. It could be the engineers, doc writers, customers, anyone. I turn into a tester when I execute the tests that I have designed and developed. At the same time I could give my set of tests to my manager and then he would become a tester. When those Beta products are released then even customers are your testers. Ever wondered where the weird term “Monkey testing” came from? My guess is that it came from this view that anyone can be a tester.
Test Engineer: Now that’s what I am. I am an engineer who thinks creatively and tries to break the system. I can dig into the code and find execution sequences that no one has ever traversed, I can come up with complex business and integration scenarios that the customer might run into, I can check for performance hiccups,etc. Basically, as a test engineer I try to find the cracks before the customers fall into it. I do not sign legal documents assuring quality. I design tests and test plans, execute them and go home. I take responsibility and ownership for making a feature robust and close to perfect, but everyone knows that there is never a 100% bug free software. I feel bad if a customer case comes in for my features and I think “Why didn’t I think of that and include that in my test plan. I should do that going forward.” but I won’t go to jail for that. I know of a lot of test engineers who feel they are the only ones responsible for the quality of the product, but sorry I beg to differ there.
This definitions are my own understanding and I am willing to tweak them with good reasoning. :)
Happy thinking and testing,
Anal-Utsavi