Wednesday, August 27, 2014

The Basics of Manual Testing

Overview

Manual testing is probably one of the most common techniques that software testers can use to measure the quality of a given software.

The human tester will use his personal capabilities (Brain that creates test cases and fingers that execute them will do the work..) to put the software in a location that it’s failed to fulfil her mission (in the perfect situation massive failure will be great…).

In addition, you always need to remember that the main task for us the testers is to make sure that the software we responsible for is working as expected (Based on SRS/Spec) and safe to use by the clients.

Manual tests can help us to succeed to accomplish those tasks because it’s allow us to reduce the defects and the risks if designed and executed efficiently. 

The basic flow of manual test:

The following steps are written to demonstrate the basic flow that a tester should follow when performing the manual side of testing, the steps are very simple and basic for every testing process.

Note, that in some companies the order between the steps may be different.

1.    The tester performs the “Static” side of testing and investigates the software documentation (SRS, DDD…).

2.       The tester understands the requirements, expectations and the business case of the company.
3.       The tester creates the software test plan (STP) that describe the entire details about the testing for that project.

Note!
In some companies the STP is skipped and not used as part of the testing methodology

4.    The tester creates the software test design (STD) that contains all cases that relevant for this project.

5.       The tester prepares the testing environment that will use while executing the STD.

6.       All tests are executed.

7.       All tests are verified against the expected results per case.

8.       Bugs are opened and verified.

9.       Project summary is written by the project owner (STR).


Important facts about “Manual” testing:

  • Manual tests are the basics for any good testing process (You cannot test an application without the human eye...).
  • Manual tests are relevant for different levels of testing (System, integration, component…).
  • Manual tests are performed without any automatic tools (Applications, scripts and any other coded objects that used to execute our tests).
  • Exploratory? Yes, it’s a basic part of manual testing.
  • Manual tests should be designed and executed based on test scenarios that has inputs and outputs (Exploratory is not the case here).
  • Manual tests are the basics for any good testing process (You cannot test an application without the human eye...).
  • Manual testing is a testing type that used on different test types (Functionality, Black Box, GUI and a lot more).
  • Manual tests are slower than automation tests (Humans Vs. machine...).
  • Manual tests should be automated if you need to run it more than 2-3 times (Regression, Regression! Regression!).
  • Pay attention, manual tests should be performed before you start to run your automation, writing an automation on a software that never tested manually is simply a waste of expensive time.
  • Manual tests should be designed and executed based on the end-user perspective (not all but the majority of the tests...).


Manual testing – The Benefits:

Quickly find the obvious bugs

In manual testing, the tester will write is tests based on the SRS requirements, this point is critical because you need to remember that those requirements (In most cases) are based on the client requests, therefore it’s easy to understand that the tester can find the obvious bugs because he test code that reflected from the spec, any deviation to the left or right will be an obvious bug because the software failed to reflect the client expectations.

Flexibility

Usually you create your automations after you finished executing your test plan and want to make your regression cycles automated, that’s the nature of testing, but! , What happens if you want to test new cases that you forgot in the first testing cycles..? In manual testing, we have the flexibility to make them “Ad-Hoc” and without the basic steps that you need to make on automated cases (Design -> coding ->Execution...).

Design Realistic Test scenarios

When Using Manual tests, the tester can design and execute an excellent test case that based on real client use cases and execute them with the same inputs and on similar environments (sometimes you cannot simulate the client environment, but understanding them can be great and helpful when you need to understand the challenges that this environment will cause when the software is used on it).

Costs (Short term)

Manual testing is cheaper than automated tests, I know that some of you may argue about this, but its basic fact… lets explain why:

  • There is no need to invest money in auto tools.
  • There is no need to waste time in automation investigations that may consume a great amount of time from your testing cycles.
  • There is no need to invest money in human resource (Developers that need to code your test cases).
  • For all of you that familiar with the maintenance that need to be done on automatic tests that may take hours and sometimes days.

You need to remember that there is a huge difference in costs when you design automatons for large/ o small scale projects, sometimes that costs are more than your company want to invent when considering the ROI results.


Manual testing – Disadvantages:

Manual tests are (in most cases) time consuming

By definition, Manual tests performed by testers that doesn’t use any coded scripts, when comparing manual tests against automated tests the execution time is massively increased. 

Now, some of you may say that creating the automated tests is the real time consuming, that’s may be true, but in our case, it’s not relevant, the simple fact is that when majoring the execution time, the automated way (in most cases) will be faster.

Manual test can become boring

I don’t think that a true tester can argue with this fact, repeating the same test twice is boring, the excitement of finding the bug in the first execution is reduced, and sometimes you raise your ends to the sky and ask yourself why!?   

To overcome this problem your goal as a tester is to reduce the amount of your “Retesting” and manual “Regressions” executions. The first testing cycle is running manually, but the second can and should be automated to keep the sanity of the tester.


Testing barriers

Manual tests are great for specific types of testing, but not relevant for all of them. When we think about the two sides of testing “Functional” and “non-functional”, it’s really simple to understand that manual tests are not the first choice to use when you want to handle the complex situations you have in this kind of tests (Performance, Load, Stress…).

To handle the kind of tests you need to use scripts and any other coded applications that may help you to simulate the relevant situations that put the software in a situations that allow you to perform the wanted test scenarios. 

3 comments:

  1. Thanks for your informative article on software testing. Your post helped me to understand the future and career prospects in software testing. Keep on updating your blog with such awesome article Software testing training|Software training

    ReplyDelete
  2. Useful article on manual testing. Its gives more idea about software testing. keep sharing. want to learn software testing reach us Software Testing Training in Chennai | Software Testing Training in Chennai | Software Testing Training in Chennai

    ReplyDelete
  3. Nice blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it. erp in chennai.

    ReplyDelete

My Presentations