What Is Software Testing? 100+ Free Manual Testing Tutorials

A Complete Software Testing Guide with 100+ Manual Testing Tutorials with Testing Definition, Types, Methods, and Process Details:

What is Software Testing?

Software testing is a process of verifying and validating the functionality of an application to find whether it satisfies the specified requirements. It is the process of finding defects in an application and check where the application functions according to the end user’s requirements.

What is Manual Testing?

Manual Testing is a process in which you compare the behavior of a developed piece of code (software, module, API, feature, etc.) against the expected behavior (Requirements).

List of Manual Software Testing Tutorials

This is the most in-depth series of tutorials on Software Testing. Go through the topics mentioned in this series carefully to learn the basic and advanced testing techniques.

This series of tutorials would enrich your knowledge and will, in turn, enhance your testing skills.

Practice End-to-End Manual Testing Free Training on a Live Project:

Tutorial #1: Basics of Manual Software Testing
Tutorial #2:
Live Project introduction 
Tutorial #3: Test Scenario Writing
Tutorial #4: Write a Test Plan Document from Scratch 
Tutorial #5: Writing Test Cases from SRS Document 
Tutorial #6: Test Execution
Tutorial #7: Bug Tracking and Test Sign off
Tutorial #8: Software Testing Course 

Software Testing Life-Cycle:

Tutorial #1: STLC

Web Testing:

Tutorial #1: Web Application Testing 
Tutorial #2: Cross Browser Testing

Test Case Management:

Tutorial #1: Test Cases
Tutorial #2: Sample Test Case Template
Tutorial #3: Requirements Traceability Matrix (RTM)
Tutorial #4: Test Coverage 
Tutorial #5: Test Data Management

Test Management:

Tutorial #1: Test Strategy
Tutorial #2: Test Plan Template
Tutorial #3: Test Estimation
Tutorial #4: Test Management Tools
Tutorial #5: HP ALM Tutorial
Tutorial #6: Jira
Tutorial #7: TestLink Tutorial

Test Techniques:

Tutorial #1: Use Case Testing
Tutorial #2: State Transition testing
Tutorial #3: Boundary Value Analysis
Tutorial #4: Equivalence Partitioning
Tutorial #5: Software testing methodologies
Tutorial #6: Agile Methodology

Defect Management:

Tutorial #1: Bug Life Cycle
Tutorial #2: Bug Reporting
Tutorial #3: Defect Priority
Tutorial #4: Bugzilla Tutorial

Functional Testing

Tutorial #1: Unit Testing
Tutorial #2: Sanity and Smoke Testing
Tutorial #3: Regression Testing
Tutorial #4: System Testing
Tutorial #5: Acceptance Testing
Tutorial #6: Integration Testing
Tutorial #7: UAT User Acceptance Testing

Non-Functional Testing:

Tutorial #1: Non-Functional Testing 
Tutorial #2: Performance Testing
Tutorial #3: Security Testing
Tutorial #4: Web Application Security Testing
Tutorial #5: Usability Testing
Tutorial #6: Compatibility Testing
Tutorial #7: Installation Testing
Tutorial #8: Documentation Testing

Software Testing Types:

Tutorial #1: Types of Testing 
Tutorial #2: Black box Testing
Tutorial #3: Database Testing 
Tutorial #4: End to end Testing 
Tutorial #5: Exploratory Testing 
Tutorial #6: Incremental Testing
Tutorial #7: Accessibility Testing
Tutorial #8: Negative Testing
Tutorial #9: Backend Testing
Tutorial #10: Alpha Testing
Tutorial #11: Beta Testing
Tutorial #12: Alpha vs Beta Testing 
Tutorial #13: Gamma Testing
Tutorial #14: ERP Testing
Tutorial #15: Static and Dynamic Testing
Tutorial #16: Adhoc testing 
Tutorial #17: Localization and Internationalization Testing
Tutorial #18: Automation Testing
Tutorial #19: White box testing

Software Testing Career:

Tutorial #1: Choosing a Software Testing Career 
Tutorial #2: How to Get QA Testing Job – Complete Guide 
Tutorial #3: Career options for Testers
Tutorial #4: Non-IT to Software Testing Switch
Tutorial #5: Kick Start Your Manual Testing Career
Tutorial #6: Lessons Learned from 10 Years in Testing
Tutorial #7: Survive and Progress in Testing Field 

Interview Preparation:

Tutorial #1: QA Resume Preparation
Tutorial #2: Manual Testing Interview Questions
Tutorial #3: Automation Testing Interview Questions
Tutorial #4: QA Interview Questions
Tutorial #5: Handle Any Job Interview 
Tutorial #6: Get Testing Job as a Fresher

Testing Different Domain Application:

Tutorial #1: Banking Application Testing
Tutorial #2: Health Care Application Testing
Tutorial #3: Payment Gateway Testing
Tutorial #4: Test Point of Sale (POS) System
Tutorial #5: eCommerce Website Testing

Testing QA Certification:

Tutorial #1: Software Testing Certification Guide
Tutorial #2: CSTE Certification Guide
Tutorial #3: CSQA Certification Guide
Tutorial #4: ISTQB Guide
Tutorial #5: ISTQB Advanced

Advanced Manual Testing Topics:

Tutorial #1: Cyclomatic Complexity
Tutorial #2: Migration Testing
Tutorial #3: Cloud Testing
Tutorial #4: ETL Testing
Tutorial #5: Software Testing Metrics
Tutorial #6: Web Services 

Get ready to take a look at the 1st tutorial in this Manual Testing series !!!

Introduction to Manual Software Testing

Manual Testing is a process in which you compare the behavior of a developed piece of code (software, module, API, feature, etc.) against the expected behavior (Requirements).

And how will you know what is the expected behavior?

You will know it by reading or listening to the requirements carefully and understanding it completely.  Remember, understanding the requirements completely is very very important.

Think yourself as an end-user of what you are going to test. After that, you are not bound, to the software requirement document or words in it anymore. You can then understand the core requirement and not just check the system’s behavior against what is written or told but also against your own understanding and against things which are not written or told.

At times, it can be a missed requirement (incomplete requirement) or implicit requirement (something which doesn’t need separate mention but should be meet), and you need to test for this too.

Further, a requirement need not necessarily be a documented one. You can very well have knowledge of the software functionality or you can even guess and then test one step at a time. We generally call it ad-hoc testing or exploratory testing.

Let’s have an In-Depth Look:

First, let’s understand the fact – Whether you are compare testing a software application or something else (let’s say a vehicle), the concept remains the same.  Approach, tools, and priorities might differ, but the core objective remains the SAME and it is SIMPLE i.e. comparing the actual behavior with the expected behavior.

Secondly – Testing is like an attitude or mindset that should come from within. Skills can be learned, but you will become a successful tester only when you have a few qualities within you by default. When I say testing skills can be learned, I mean focused and formal education around the software testing process.

But what are the qualities of a successful tester? You can read about them at the link below:

Read it here =>Qualities of Highly Effective Testers

I highly recommend going through the above article before continuing with this tutorial. It will help you compare your characteristics against the ones that are expected in the Software Tester’s role.

For those who don’t have time to go through the article, here is a synopsis:

“Your curiosity, attentiveness, discipline, logical thinking, passion for work and ability to dissect things matters a lot to be a Destructive and Successful Tester. It worked for me and I strongly believe that it will work for you as well. If you have these qualities already, then indeed it got to work for you too.”

We have talked about the core pre-requisites of becoming a software tester. Now let’s understand why Manual Testing has and would always have its independent existence with or without Automation Testing growth.

Why Manual Testing is Required?

Do you know what is the best thing about being a Tester, that too a Manual Tester?

It is the fact that you can’t depend 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 the 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 that you have gone through the article that I recommended in the previous section (i.e the qualities of highly effective testers). If yes, then you would know that testing is considered a thought process and how successful you will be as a tester completely depends on the qualities that you possess as a person.

Let’s see this simple flow:

  • You do something (perform actions) while you observe it with some intent (comparing against the expected). Now your observation skills and discipline to perform things comes into the picture here.
  • Voila! What was that? You noticed something. You noticed it because you were giving perfect attention to the details in front of you. You won’t let it go because you are curious. This was not in your plan that something unexpected/strange will happen, you will notice it and you will investigate it further. But now you are doing it. You can let it go. But You shouldn’t let it go.
  • You are happy, you found out the cause, the steps, and the scenario. Now you will communicate this properly and constructively to the development team and the other stakeholders in your team. You might do it via some defect tracking tool or verbally, but you got to make sure that you are communicating it constructively.
  • Oops! What if I do it that way? What if I enter proper integer as input but with leading white spaces? What if? … What if? … What if? It doesn’t end easily, it shouldn’t end easily. You will imagine a lot of situations & scenarios and indeed you will be tempted to perform them as well.

The diagram given below represents the Life of a Tester:

Life of a Tester

Read those four bullet points mentioned above once again. Did you notice that I kept it very short but still highlighted the richest part of being a manual tester? And did you noticed the bold highlighting over a few words? Those are precisely the most important qualities that a manual tester needs.

Now, do you really think that these acts can be completely replaced by anything else? And the hot trend today – can it ever get replaced with automation?

In SDLC 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 a few companies do it).

When you automate it, your focus is steady, which is automating the steps written.

Let’s go back to the formal part i.e. executing the test cases written manually.

Here, you not only focus on executing the 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 indeed do what you imagined.

The image given below depicts how Test Case writing is simplified:

Test Case Writing Simplified

I am filling up a form, and I’m 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 the Submit button, the focus is still on the last field. 

Oops, 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.

Did you notice? 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 the application. These will be test cases for bugs that you encountered for which previously there was no test case written. Or, while you are testing, something triggered your thought process and you got a 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 the same, similar to but not limited to the example process we saw above.

At least as of today, there is no software that will think like a human mind, observe like a human eye, ask questions and answer like a human and then perform intended and non-intended actions. Even if such a thing happens, whose mind, thoughts and eye will it mimic? Yours or mine? We, humans, are also not the same right. We all are different. Then?

Need for Manual Testing when Automation is Around:

Automation Testing has its own share of glory these days and will have even more in the upcoming years but, it simply can’t replace manual QA testing (read human/exploratory testing).

You must have heard before- ‘You don’t automate testing, you automate checking’. This sentence speaks a lot about where manual QA 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:

  • It demands the runtime judgments about everything that happens in front of your eyes (while you test) and in few cases behind the scenes too.
  • It demands clear and constant observation.
  • It demands questioning.
  • It demands an investigation.
  • It demands reasoning.
  • It demands unplanned actions as required while testing.

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, and all this at runtime 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 a few years will look close to it, but in real life, I can’t see it coming for a few hundred years, that I can imagine. I won’t write it off forever as I believe in endless possibilities.

On a separate note, even if it really happens after a few hundred years, the picture I can imagine is that of a scary world for sure. Age of Transformers. 🙂

=>> Recommended Reading – Best Manual Testing Service Companies

How Automation Compliments Manual Testing?

I said before and I’m 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 long run for this task. Hence, the Tester (Test Lead/Architect/Manager) has to decide cautiously on what to automate and what should still be done manually.

It is becoming extremely important to have very precise tests/checks written so that they can be automated without any deviation to the original expectation and can be used while regressing the product as a part of ‘Continuous Testing’.

Note: The word continuous from the term ‘Continuous Testing’ is subjected to conditional and logical calls similar to the other terms that 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 this, 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 the traditional ones anymore. We have to make sure that if they fail, they should fail fast. And for making them fail fast, exit criteria too should be automated.


Let’s say, there is a blocker defect 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 check where login is a 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 the defect can be resolved faster.

Next thing is again something that 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 a good Return on Investment. For that matter, there is a general rule which says that you should try to automate all your Priority 1 test cases and if possible then Priority 2.

Automation is not easy to implement and is time-consuming, so it is advised to avoid automating low priority cases at least till the time you are done with the high ones. Selecting what to automate and focusing on it improves the application quality when used and maintained continuously.


I hope by now you must have understood why and how badly manual/human testing is required to deliver Quality Products and how Automation compliments it.

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 our upcoming 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 as well.

I’m sure that you will gain immense knowledge of Software Testing once you go through the entire list of tutorials in this series.

We would love to hear from you. Feel free to express your thoughts/suggestions in the comments section below.

Related Post

Leave a Reply

Your email address will not be published.