Manual Testing
Manual testing is the oldest and most rigorous process of manually testing software
for defects. It requires a tester to play the role of an end user, and use most
of all features of the application to ensure correct behavior. To ensure completeness
of testing, the tester often follows a written test plan that leads them through
a set of important test cases. Manual testing is a laborious activity that requires
the tester to possess a certain set of qualities; to be patient, observant, speculative,
creative, innovative, open-minded, resourceful, and skillful.
It is always recommended to use manual testing techniques (
black box and
white box testing) on the test software. Manual testing helps discover and
record any software bugs or discrepancies related to the functionality of the product.
Automated Testing
Automated testing is a process that uses software/ tools to run the program to be
tested, providing it with proper input and checking the results against the output
that was expected. Once the test framework is designed and suite is written, no
human intervention is needed to run the test. The test automation framework does
all that and provides a test execution report at the end which includes the pass/
fails status of the test cases. For example, you have more than two hundred test
cases, all of which can be executed overnight by scheduling an automated job to
run automated test suite.
Automated tests can be run quickly and repeatedly. This is often the most cost effective
method for software products that have a long maintenance life, because even minor
patches over the lifetime of the application can cause features to break which were
working at an earlier point in time.
There are many automation tools in market which provide record and playback features
that allow users to interactively record user actions and replay them back any number
of times, comparing actual results to those expected.
Difference
Test automation may be able to reduce or eliminate the cost of actual testing but not all tests can be automated. Many times it is difficult to decide what to automate and what to manually test.
Following are some instances where manual testing will be preferred:
- Manual testing helps in short term project.
- If test cases have to be run only couple of times it is worth to perform manual testing instead of writing automation script.
- Installation and setup testing: In many cases, these tests involve loading CD-ROMs and tapes, changing hardware, and other ongoing hand-holding by the tester.
- Error handling, disaster and recovery: During these tests user may need to force errors by powering off servers. To accomplish this people must stay engaged during test execution.
- Localization testing: Only a human tester with appropriate skills can decide whether a translation makes any sense or not, is it culturally offensive, or is otherwise inappropriate.
- Usability testing: As with localization, human judgment is needed to check for problems with the facility, simplicity, and elegance of the user interface and workflows.
- Documentation and help. Like usability and localization, checking documentation requires human judgment.
Following are some instances where automation testing will be preferred:
- Automation testing helps in long term project by reducing repeated manual testing efforts.
- Regression testing: Rerunning a test against a new release to ensure that behavior remains unbroken, or to confirm that a bug fix did indeed fix the underlying problem are perfect fit for automated testing.
- Monkey tests: Automation testing is profitable in tests that require large amounts of data or long sequences of steps, transactions, or other inputs at system in a random search for errors.
- Load & Stress testing: Automation testing helps in Load, volume, stress and capacity testing. Sometimes, systems must support tremendous loads. For example if we have to simulate 10,000 users load to see the application behavior then it is not possible to hire 10,000 people to use and generate the load. Any number of users load can be simulated using automation tools.
- Unit Testing: Many automation tools available that allow the execution of unit tests to determine whether various sections of the code are acting as expected under various circumstances.
- GUI Testing: Many test automation tools provide record and playback features that allow users to interactively record user actions and replay them back any number of times, comparing actual results to those expected. This approach can be applied to any application that has a graphical user interface.
Following are some instances where both manual and automation testing will be preferred:
- Functional testing can often be automated. Automated functional testing is often part of an effort to create a regression test suite or smoke test. However, it makes sense to get the testing process under control manually before trying to automate functional testing. In addition, you’ll want to keep some of the testing manual.
- Use cases (user scenarios). By stringing together functional tests into workflows, you can create realistic user scenarios, whether manual or automated. The trick here is to avoid automation if many workflows involve human intervention.
- Basic testing of the user interface can be automated, but beware of frequent or extensive changes to the user interface that can incur high maintenance costs for your automated suite.
Our
QA Training will help you understand the difference between the two.