We will be covering different aspects of manual testing through this series of manual testing tutorials for beginners as well as experienced professionals.
Well, what does the word ‘Manual Testing’ tell you? Any testing which you do manually right? Though it be manual functional testing or measuring the response time of a web page manually or a security test which you perform manually. Same is not the case with our Testing industry. :)
Here when anyone says ‘Manual Software Testing’, it strictly means ‘Manual Functional Testing‘.
Yes, that’s what we are going to talk about in this series – ‘Manual Functional Testing‘ or you can say Manual Testing as you can better relate to this term.
You must be thinking why STH and I want to revisit this topic which is very basic of Software Testing and there might be many articles already floating in the internet space.
The reason is simple – It deserves much more than what we all have talked about. It deserves for being the very base of almost every Tester’s career. I do not have specific data about how many testers started their career as Manual Tester, but we all know right, the majority of us started there and the majority of our future testers will start there probably.
Hence, it is very important that we the existing Testers, understand it perfectly so as to educate future testers. It is even more important for people who are looking forward to choose Testing as a career.
I am of opinion that understanding, execution, and experience of manual Software testing will play a big role in your overall career if you are starting your journey with it.
I can frame this topic in industry style words and definitions, but I guess that won’t keep it easy to understand and relate for entry level testers, someone who is a novice.
So I will explain it in my own way and try to keep this manual testing tutorial series as simple as possible.
What You Will Learn:
Manual Testing (Manual Functional Testing) is a process in which you compare the behavior of a developed piece of code (software, module, API, feature, etc.) against expected behavior (Requirement). And how do you know what is the expected behavior? By reading or listening to the requirement and understanding it fully.
Remember, understanding the requirement completely is very very important. Think of yourself as a consumer of what you are going to test. After that, you are no more bound to some requirement document or words in it. You then understand the core requirement and not only check system behavior against what is written or told but also against your own understanding and against things which are not written or told.
Sometimes, it can be a missed requirement (incomplete requirement) or implicit requirement (something which doesn’t need separate mention but should be meet), you test for this too.
To further add, a requirement we talked about need not necessarily should be documented one. You can very well have knowledge of software functionality or you can even guess and then test it one step at a time. You can call it ad-hoc testing or exploratory testing (totally different topic to talk on).
First of all, let’s face one fact. If you compare testing a software versus testing something else (vehicle let’s say), the concept (as stated above) remains same. Approach, tools, priorities might differ. At the core it remains ONE and SIMPLE – comparing actual behavior with expected behavior (I mean the understood expected behavior as explained in above paragraph).
The second thing, may be best or worst part- Testing skill is something which should be within you. It can be learned, but only when you have few qualities by default in you. When I say it can be learned, I just mean focused and formal education around that particular testing.
I said best or worst because I don’t know if you have those needed qualities in you. You got to figure it out. I will try to help. I highly recommend you going through this before continuing. It will help you compare your qualities against the ones expected in Software Tester role.
Read it here => Qualities of Highly Effective Testers
If you are in a hurry, read this.
“Your curiosity, attention to details, discipline, logical thinking, passion for work and ability to dissect things is all what matters to be a Destructive and Successful Tester. It worked for me and I strongly believe it will work for You. If you have these qualities, it got to work for you.”
Now as we have talked about the core and pre-requisites of becoming a software tester, let’s understand why it has and would always have its independent existence without or with Automation testing growth.
You know what is the best and richest part of being a Tester and particularly Manual Tester? It is the fact that you can’t run only on skillset here. You got to have/develop and enhance your thought process. This is something you can’t really buy for few bucks. You yourself have to work on it.
You will have to develop a habit of asking questions and you will have to ask them every minute when you are testing. Most of the times you should be asking these questions to yourself than to others.
I hope you have gone through the article I recommended in the previous section (i.e the qualities of highly effective testers). It will give you much clarity over how testing is a thought process and how successful you will be as a tester depends on the qualities you have as a person.
Let’s see this simple flow:
Life of a Tester
Read these four bullet points again. You noticed I kept it very short and still highlighted richest part of being a manual tester? And did you noticed the bold highlighting over few words? Those are precisely the most important qualities a manual tester needs.
Now, do you really think these acts can be replaced by anything completely? And the hot topic, will it get replaced with automation?
In Software Testing Life Cycle with any development methodology, few things always remain constant. As a tester, you will consume the requirements, convert them into Test Scenarios/Test cases. You will then execute those test cases or directly automate them (I know few companies do it). When you automate it, your focus is steady, that is automating the steps written.
Let’s go back to the formal part, executing the test cases written manually.
Here, you not only focus on executing written test cases, but you also perform a lot of exploratory testing while doing so. Remember, you are curious? And you will imagine. And you won’t be able to resist, you will do what you imagined.
Test Case writing simplified
I am filling up a form, done with filling the first field. I am too lazy to go for the mouse to shift focus to the next field. I hit the ‘tab’ key. I am done with filling up the next and last field too, now I need to click on Submit button, the focus is still on the last field. Ohh shit, I accidentally hit the ‘Enter’ key. Let me check what happened. OR there is a submit button, I am gonna double click it. Not satisfied. I click it multiple times, too fast.
Do you see? There are so many possible user actions, both intended and non-intended ones.
You won’t succeed in writing all the test cases which cover your application under test 100%. This has to happen in an exploratory way.
You will go on adding your new test cases as you test application. These will be test cases for bugs you encountered for which previously there was no test case written. Or, while you are testing, something triggered your thought process and you got few more test cases which you will like to add to your test case suite and execute.
Even after all this, there is no guaranty that there are no hidden bugs. Software with zero bugs is a Myth. You can only target to take it close to Zero but that just can’t happen without a Human mind continuously targeting same, similar to but not limited to example process we same above.
At least as of today, there is no software which will think like a human mind, observe like a human eye, ask questions and answer them like a human and then perform intended and non-intended actions. Even if let’s say such thing comes (can’t imagine), whose mind, thoughts and eye it will mimic? Yours or mine? We human are also not same right. We all are different. Then?
First thing first, Automation Testing has its own share of glory these days and will have even more in coming years but, it simply can’t replace QA manual testing (read human/exploratory testing).
You must have heard before- ‘You don’t automate testing, you automate checking’. This sentence alone speaks a lot about where manual testing stands with Automation testing around. Many big names across the globe have written and spoke about this topic so I won’t stress much on this.
Automation can’t replace Human Testing because:
If I am allowed to be sarcastic- Testing can be replaced by a tool/machine which will be able to absorb the details, process them, command actions and perform them like a human mind and human, all this at run time and in all possible contexts. This tool again has to be like all possible humans.
So in short, human testing can’t be replaced. Maybe some Hollywood sci-fi flick in few years will look close to it, but in real life, I can’t see it coming for few hundred years I can imagine of. I won’t write it off forever as I believe in endless possibilities. On a separate note, if it really happens even after few hundred years, the picture I can imagine that world is scary for sure. Age of Transformers. :)
I have said before and saying it again that Automation can’t be ignored anymore. In the world where continuous integration, continuous delivery, and continuous deployment are becoming mandatory things, continuous testing can’t sit idle. We have to find out ways on how to do it.
Most of the time, deploying more and more workforce doesn’t help in the wrong run for this task. Hence, a Tester (Test Lead/Architect/Manager) in this case have to decide cautiously on what to automate and what to do still do manually.
It is becoming extremely important to have very precise tests/checks written so that they can be automated without any deviation to original expectation can be used while regressing the product as part of ‘Continuous Testing’.
Note: The word continuous from the term ‘Continuous Testing’ is subjected to conditional and logical calls similar to other terms we used above with the same prefix. Continuous in this context means more and more often, faster than yesterday. While in meaning, it can very well mean every second or Nano-second.
Without having a perfect match of Human Testers and automated checks (tests with precise steps, expected result and exit criteria of said test documented) achieving Continuous Testing is very difficult and which in turn will make continuous integration, continuous delivery and continuous deployment more difficult.
I purposely used the term exit criteria of a test above. Our automation suits can’t be similar to traditional ones anymore. We have to make sure that if they fail, they should fail fast. And for making them fail fast, exit criteria’s too should be automated.
E.g.: Let’s say, there is a blocker wherein, I am unable to login to Facebook. Login functionality then has to be your first automated check and your automation suite should not run the next checks where login is pre-requisite, like posting a status. You very well know it is bound to fail. So make it fail faster, publish the results faster so that defect can be resolved faster.
Next thing is again something you must have heard before – You cannot and should not try to automate everything. Select test cases which if automated will benefit considerably to Human Testers and has good Return on Investment. For that matter, there is a general rule which says you should try to automate all your Priority 1 test cases and if possible then Priority 2.
Automation is not very easy and fast activity so it is advised to avoid automating low priority cases at least till the time you are done with high ones. Selecting what to automate and focusing on it benefits very nicely to application quality when used and maintained continuously.
I hope now you have understood of why and how badly manual/human testing is needed to deliver Quality Products and how Automation compliments it.
I will be more than happy if I was able to take you with me till this point. Accepting the importance of QA Manual Testing and knowing why it is special, is the very first step towards being an excellent manual tester.
In the coming manual testing tutorials, we will cover a generic approach for doing Manual Testing, how it will co-exist with Automation and many other important aspects.
About the author: This article is written by STH team member Mahesh C. He is currently working as Senior Quality Assurance Manager having experience of leading testing front for multiple complex products and components.
Thank you for reading. Will love to hear from you.