Friday, December 20, 2013

QA as a Career - should I choose Manual or Automated Testing path?

Which one is more important for QA person – learning automated testing or learning the fundamental of testing, learning how to find issues/ bugs of a Software/ Firmware. 

For last few years, what I have seen many people are more interested of taking the Software Testing as their career. There could be many reasons why they were thinking of choosing this as their career. I welcome them all for feeling interested in this field. What I have seen is –  they are taking a short course on Software Testing which will teach them about Software Testing concepts and automation tools as well, which is good. They are educating themselves before coming to the practical job field, which is the right way to do it. I had the opportunity to meet some of teacher and student of some of those courses. Talked about their courses a little bit, talked about these with the students who were so excited. Sounds all good so far. Then I get scared a bit when I came to know why they are so excited.

When talked with few of them, they said, they will be learning all the new automation tools and there is a big market for automated Software tester. So they concentrated more on automation testing then the concepts of Software Testing. I would not say its bad, but it will have effects at the end. I talked with them about the Manual Testing, did they have any plan to learn how to do it. It seemed they were more interested about automated testing than the manual testing as Manual Testing is dead/ Backdated method.

When people want to start their career in this field, few fundamental things one need to learn/ study about. Once that part is done then they can advance towards the automation testing. Automation testing is for those who know how to test, how to test software thoroughly. 

When anyone learned how to do the software testing, in other words manual testing, then they can advance their level up with the automated testing. What automation testing does is to help minimize the effort for Regression Testing of the software. It definitely not a tool that will identify the issues, does not help finding/reporting issues. So, before learning automation, I would prefer learning the software testing (manual) first and then go with the automated tools. 

What we do with the automation is write some scripts that will automatically read input data from somewhere and then will apply those inputs to software UI. For example, lets say I’m given to test a web application that will calculate how much student loan I need from the bank. There are three parts of that web application. One take the input, then process the input and then display the amount that is needed for loan from the bank. There are some input fields on the application categorized under Expenses and Income. Once those Expense and Income fields are populated with data, clicking the calculate button will calculate the loan amount. 

As a tester my job is to identify all possible scenarios that can happen on/with that screen. Start planning about what type of Testing you want to perform – Functional testing, Regression testing, Performance testing, load testing. And then write down those possible scenarios in the Test Cases. Find out all the valid, invalid set of inputs for each field. Write down the expected results. Once these things are done then I can say I’m ready for actual testing on the software. 

With the Manual Testing, enter all those values, checking all those combination of inputs with valid and invalid data sets, checking the output whether it matches with the expected results or not. If there is any problem then I will have to report the issue. These are few steps with Manual testing. Same thing apply with automated testing. I’ll have to do all these test scenarios. Only difference is, I’ll write some scripts, will run it with some automated tools. I will have an Excel sheet that will have some Test Data as input. On the automated tools I’ll write the code that will read from the excel sheet and will apply the data on the web application and then store back the calculated output to the excel sheet. Then looking at the excel sheet I can tell whether any test data set failed or not. 

Advantage of using automated tools is, I can run multiple times to check the integrity of the software. It’s faster any than the human effort of doing it same amount of time. Only side effect is, additional learning is required based on which automated testing tools will be using. 

The point I wanted to focus through out this writing is, I’ll have to know, develop myself to identify all the possible scenarios, all the possible test I can and should perform on the software. Running and maintaining script for automation testing is not the key, the key is developing the skill for finding issues of the software, methods to find issues, learn to know which tools to apply, when to apply. Tools come and goes, but the concept, methods stays. 

Have fun testing! Cheers! 

Update: 12/24/2013
In this writing I was referring  the "Manual Testing" as the basis of "Software Testing Concept". It's Testing Concept that is more important to learn/ study about and that's what I was trying to point out. Manual or Automated method both has their own pros and cons and can be argued both ways. It's like if you want to learn driving a car, would you prefer learning a car with stick or the auto. Decade ago this could be a choice, now its very rare to find a car with stick shift. Anyway, the goal is to learn the driving concepts.

No comments:

Communication - it's very important in recruiting people

One of the common part of our professional life is we get mails from recruiters time to time regardless whether you are looking for job o...