MANUAL TESTING INTRODUCTIOIN

 

WHAT IS TESTING 

Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not. In simple words, testing is executing a system in order to identify any gaps, errors, or missing requirements in contrary to the actual requirements.

According to ANSI/IEEE 1059 standard, Testing can be defined as - A process of analyzing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item.

WHO DOES TESTING
 

It depends on the process and the associated stakeholders of the project(s). In the IT industry, large companies have a team with responsibilities to evaluate the developed software in context of the given requirements. Moreover, developers also conduct testing which is called Unit Testing. In most cases, the following professionals are involved in testing a system within their respective capacities −

  • Software Tester
  • Software Developer
  • Project Lead/Manager
  • End User

Different companies have different designations for people who test the software on the basis of their experience and knowledge such as Software Tester, Software Quality Assurance Engineer, QA Analyst, etc.

It is not possible to test the software at any time during its cycle. The next two sections state when testing should be started and when to end it during the SDLC.

WHEN TO START TESTING 

An early start to testing reduces the cost and time to rework and produce error-free software that is delivered to the client. However in Software Development Life Cycle (SDLC), testing can be started from the Requirements Gathering phase and continued till the deployment of the software.

It also depends on the development model that is being used. For example, in the Waterfall model, formal testing is conducted in the testing phase; but in the incremental model, testing is performed at the end of every increment/iteration and the whole application is tested at the end.

Testing is done in different forms at every phase of SDLC −

  • During the requirement gathering phase, the analysis and verification of requirements are also considered as testing.

  • Reviewing the design in the design phase with the intent to improve the design is also considered as testing.

  • Testing performed by a developer on completion of the code is also categorized as testing.

WHEN TO STOP TESTING

It is difficult to determine when to stop testing, as testing is a never-ending process and no one can claim that a software is 100% tested. The following aspects are to be considered for stopping the testing process −

  • Testing Deadlines

  • Completion of test case execution

  • Completion of functional and code coverage to a certain point

  • Bug rate falls below a certain level and no high-priority bugs are identified

  • Management decision

MANUAL TESTING 

Manual testing is a software testing process in which test cases are executed manually without using any automated tool. All test cases executed by the tester manually according to the end user's perspective. It ensures whether the application is working, as mentioned in the requirement document or not. Test cases are planned and implemented to complete almost 100 percent of the software application. Test case reports are also generated manually.

Manual Testing is one of the most fundamental testing processes as it can find both visible and hidden defects of the software. The difference between expected output and output, given by the software, is defined as a defect. The developer fixed the defects and handed it to the tester for retesting.

Manual testing is mandatory for every newly developed software before automated testing. This testing requires great efforts and time, but it gives the surety of bug-free software. Manual Testing requires knowledge of manual testing techniques but not of any automated testing tool.

MANUAL TESTING PROS AND CONS 

Pros of Manual Testing:

  • Get fast and accurate visual feedback
  • It is less expensive as you don’t need to spend your budget for the automation tools and process
  • Human judgment and intuition always benefit the manual element
  • While testing a small change, an automation test would require coding which could be time-consuming. While you could test manually on the fly.

Cons of Manual Testing:

  • Less reliable testing method because it’s conducted by a human. Therefore, it is always prone to mistakes & errors.
  • The manual testing process can’t be recorded, so it is not possible to reuse the manual test.
  • In this testing method, certain tasks are difficult to perform manually which may require an additional time of the software testing phase.
IMPORTANCE OF SOFTWARE TESTING 

Testing is a process or steps of a software items analyzing in order to detect the state of disagreement between actual and required / expected conditions.

There are many reasons that make software testing important:

  1. Software testing is essential to notice the defects and errors which may occur during the development phases.
  2. Software testing is important since it verifies the customer’s reliability and their content with application.
  3. The software testing is very important to test the quality of the product and the good quality product supplied to their customer helps to gain the confidence.
  4. Testing is necessary when you give the facilities to the customers like delivery of high quality product or software application which requires minimal maintenance cost and gives good results and precise results.
  5. Software testing has to be carried out because it gives effective performance of the software application.
  6. It makes sure that the application should not result into any failures because it may lead into extra expenses.
  7. It is necessary to stay in the business.

Thoroughly tested software's ensure reliable and high quality performance software operation. Testing  can contribute the success of an overall project in a way. Involvement of testers in requirement reviews and user story refinement provide early identification of defects before implementation, which reduces the fixing cost. Testers work with system designers which may increase their understanding of each part of the design. Testers work closely with developers which enhances their understanding each part of the code. Then testers verify and validate the software before they launch in the market which obviously help to detect the errors which are unnoticed.

DIFFERENCE BETWEEN MANUAL AND AUTOMATION

As discussed in the previous tutorial, testing can be done either manually or with automation or a combination of both. So, first of all, let’s understand manual testing in brief.

Manual testing:

Manual testing is the testing of software that is performed to find bugs in software applications under development without taking the help of an automation testing tool.

In manual testing, tests are executed manually by QA analytics, and tester checks all the essential features of the given software or application.

In this process, the software testers prepare the test cases for different modules, execute the test cases, generate the test reports without the help of any automation software testing tools and report the test result to the manager.

Manual testing is a classical method for all types of testing and helps to find bugs or defects in the software application. An experienced tester generally conducts software testing process but it is time and resource consuming.

Manual processes can also be repetitive and boring tasks for a tester because nobody wants to fill up the same forms time after time. As a result, testers have a difficult time to engage in this process. Due to which the possibility of errors is more to occur.

Automation testing:

Automated testing is a process in which testers create test scripts by writing code to automate test execution. Automation testers use appropriate automation tools to create test scripts and run tests. The goal of test automation is to perform testing in better, faster, and cheaper ways.

Automated testing entirely depends on the pre-scripted test which runs automatically and compares the actual results with expected results. It helps the tester to determine whether an application performs as expected or not.

Automation testing provides consistent and accurate results free of human errors. Automated testing helps to execute the repetitive task and regression testing without the intervention of manual tester. It is very useful when the project is large.

MANUAL VS AUTOMATION 

  • DEFINATION

AUTOMATION: Automation Testing uses automation tools to execute test cases.

MANUAL: In manual testing, test cases are executed by a human tester and software.

  • PROCESSING TIME

AUTOMATION: Automated testing is significantly faster than a manual approach

MANUAL: Manual testing is time-consuming and takes up human resources.

  • EXPLORATORY TESTING 

AUTOMATION: Automation does not allow random testing 

MANUAL: Exploratory testing is possible in manual testing 

  • INITIAL INVESTMENT

AUTOMATION: The initial investment in the automated testing is higher. Though the ROI is better in the long run.

MANUAL: The initial investment in the Manual testing is comparatively lower. ROI is lower compared to Automation testing in the long run.

  • RELIABILITY

AUTOMATION: Automated testing is a reliable method, as it is performed by tools and scripts. There is no testing Fatigue.

MANUAL: Manual testing is not as accurate because of the possibility of the human errors.

  • UI CHANGE 

AUTOMATION: For even a trivial change in the UI of the AUT, Automated Test Scripts need to be modified to work as expected

MANUAL: Small changes like change in id, class, etc. of a button wouldn’t thwart execution of a manual tester

  • INVESTMENT

AUTOMATION: Investment is required for testing tools as well as automation engineers

MANUAL: Investment is needed for human resources.

  • COST-EFFECTIVE

AUTOMATION: Not cost effective for low volume regression

MANUAL: Not cost effective for high volume regression.

  • TEST PEPORT VISIBILITY

AUTOMATION: With automation testing, all stakeholders can login into the automation system and check test execution results

MANUAL: Manual Tests are usually recorded in an Excel or Word, and test results are not readily/ readily available.

  • HUMAN OBSERVATION

AUTOMATION: Manual Tests are usually recorded in an Excel or Word, and test results are not readily/ readily available.

MANUAL: The manual testing method allows hum

an observation, which may be useful to offer user-friendly system.

  • PERFORMANCE TESTING

AUTOMATION: Performance Tests like Load Testing, Stress Testing, Spike Testing, etc. have to be tested by an automation tool compulsorily.

MANUAL: Performance Testing is not feasible manually

  • PARALLEL EXECUTION

AUTOMATION: This testing can be executed on different operating platforms in parallel and reduce test execution time.

MANUAL: Manual tests can be executed in parallel but would need to increase your human resource which is expensive

  • BATCH TESTING

AUTOMATION: You can Batch multiple Test Scripts for nightly execution.

MANUAL: Manual testes cannot be batched.

  • PROGRAMMING KNOWLEDGE

AUTOMATION: Programming knowledge is a must in automation testing.

MANUAL: No need for programming in Manual Testing.

  • SETUP

AUTOMATION: Automation test requires less complex test execution set up.

MANUAL: Manual testing needs have a more straightforward test execution setup

  • ENGAGEMENT

AUTOMATION: Done by tools. Its accurate and never gets bored!

MANUAL: Repetitive Manual Test Execution can get boring and error-prone.

  • IDEA APPROACH

AUTOMATION: Automation testing is useful when frequently executing the same set of test cases

MANUAL: Manual testing proves useful when the test case only needs to run once or twice.

  • BUILD VERIFICATION TESTING

AUTOMATION: Automation testing is useful for Build Verification Testing (BVT).

MANUAL: Executing the Build Verification Testing (BVT) is very difficult and time-consuming in manual testing.

  • DEADLINES

AUTOMATION: Automated tests have zero risks of missing out a pre-decided test.

MANUAL: Manual Testing has a higher risk of missing out the pre-decided test deadline.

  • FRAMEWORK

AUTOMATION: Automation testing uses framework like data drive, keyword, hybrid to accelerate the automation process.

MANUAL: Manual Testing does not use frameworks but may use guidelines, checklists, stringent processes to draft certain test cases.

  • DOCUMANTION 

AUTOMATION: Automated Tests acts as a document provides training value especially for automated unit test cases. A new developer can look into a unit test cases and understand the code base quickly.

MANUAL: Manual Test cases provide no training value

  • TEST DESIGN

AUTOMATION: Automated Unit Tests enforce/drive Test Driven Development Design.

MANUAL: Manual Unit Tests do not drive design into the coding process

  • DEVOPS

AUTOMATION: Automated Tests help in Build Verification Testing and are an integral part of DevOps Cycle

MANUAL: Manual Testing defeats the automated build principle of DevOps

  • WHEN TO USE?

AUTOMATION: Automated Testing is suited for Regression Testing, Performance Testing, Load Testing or highly repeatable functional test cases.

MANUAL: Manual Testing is suitable for Exploratory, Usability and Adhoc Testing. It should also be used where the AUT changes frequently.


SOFTWARE TESTER RESPONSIBILITIES 

• Understanding Software Requirements/User Stories

• Contributing to Test Plan Preparation

• Deriving Test Scenarios / Outlines

• Documenting Test Cases

• Updating Traceability Matrices document

• Collecting Test Data

• Creating Test Batches

• Executing Test Cases

• Reporting Defects

• Tracking Defects

• Collect Test Metrics

• Selecting Test cases for Re & Regression Testing

• Executing Regression Tests

• Modifying Test Cases (If Required)

SELENIUM AUTOMATION TESTER RESPONSIBILITIES 

• Selecting Test Cases for Automation (Test Lead Responsibility)

• Selecting Selenium Components and Other Software Components for Testing (Ex: Eclipse IDE, Selenium WebDriver, Java, TestNG, Maven and Jenkins, etc,)

• Selenium Automation framework and Implement

• Involvement in Selenium Environment setup

• Inspecting Elements/Objects.

• Creating Test cases using Element locators and Selenium WebDriver methods.

• Enhancing Test cases using Java programming (or any other supporting language) features.

• Grouping Test cases and generating detailed Test reports using TestNG.

• Analyzing Test Results and Reporting Defects.

• Re & Regression Testing on Modified build.

Note: If we use any Automation Framework for Selenium, First we select Automation Framework Structure then implementing it. Selenium Test Environment Setup, Creating Object Repositories using POM, Customized Commands, Reusable Functions, Creating Test Cases using Test Automation Resources, Executing Test Batches, Generating Test Results, Analyzing Test Results and Reporting Defects using Defect Management System.

Re & Regression Testing on Modified Build/s, Confirmation Testing, Closing defects and Maintenance of Test Automation Resources.)