Manual Testing

What is Manual Testing ?

Manual Testing is a process of finding out the defects or bugs in a software program. In this method the tester plays an important role of end user and verifies that all the features of the application are working correctly. The tester manually executes test cases without using any automation tools. The tester prepares a test plan document which describes the detailed and systematic approach to testing of software applications. Test cases are planned to cover almost 100% of the software application. As manual testing involves complete test cases it is a time consuming test.

The differences between actual and desired results are treated as defects. The defects are then fixed by the developer of software application. The tester retests the defects to ensure that defects are fixed. The goal of Manual testing is to ensure that application is defect & error free and is working fine to provide good quality work to customers.



Procedure of Manual Testing


  • Requirement Analysis
  • Test Plan Creation
  • Test case Creation
  • Test case Execution
  • Defect Logging
  • Defect Fix & Re-Verification







Testing Levels:

Functional Testing:

Functional Testing verifies that each function of the software application operates in conformance with the requirement specification. Functional testing is a quality assurance (QA) process and mainly involves Black Box Testing. It is concerned about the results of processing and not about the source code of the application.

Functions (or features) are tested by providing appropriate input and examining the output. The actual results are then compared with expected results. Functional testing ensures that the requirements are properly satisfied by the application. The testing can be done either manually or using automation.

Functional testing involves the following steps:

  • Identify functions that the software is expected to perform.
  • The creation of input data based on the function’s specifications.
  • To determine the output based on the function’s specifications.
  • Execute the test case.
  • Compare the actual and expected outputs.


Advantages:
It simulates actual system usage.
It does not make any system structure assumptions.

Disadvantages:
It has a potential of missing logical errors in software.
It has a high possibility of redundant testing.


Types of Functional Testing:

Unit Testing: 
Individually and independently testing of smallest testable parts of an application.

Integration Testing: 
When individual software modules are combined together and tested as a group than it is known as Integration Testing.

Smoke Testing: 
Preliminary testing to reveal simple failures severe enough to (for example) reject a prospective software release or build.

Sanity Testing:
Very brief run-through of the functionalities to assure that part of the system or methodology works roughly as expected.

System Testing: 
Testing conducted on a complete, integrated system to evaluate the system’s compliance with its specified requirements.

Regression Testing: 
Retesting of a software system to confirm that changes made to few parts of the codes has not any side affects on existing system functionalities.

Acceptance Testing: 
This is arguably the most important type of testing, as it is conducted by the Quality Assurance Team who will gauge whether the application meets the intended specifications and satisfies the client’s requirement. The QA team will have a set of pre-written scenarios and test cases that will be used to test the application.

Alpha Testing:
This test is the first stage of testing and will be performed amongst the teams (developer and QA teams). Unit testing, integration testing and system testing when combined together is known as alpha testing. During this phase, the following aspects will be tested in the application:


  • Spelling Mistakes
  • Broken Links
  • Cloudy Directions
  • The Application will be tested on machines with the lowest specification to test loading times and any latency problems.

Beta Testing:
This test is performed after alpha testing has been successfully performed. In beta testing, a sample of the intended audience tests the application. Beta testing is also known as pre-release testing. Beta test versions of software are ideally distributed to a wide audience on the Web, partly to give the program a "real-world" test and partly to provide a preview of the next release. In this phase, the audience will be testing the following:


  • Users will install, run the application and send their feedback to the project team.
  • Typographical errors, confusing application flow, and even crashes.
  • Getting the feedback, the project team can fix the problems before releasing the software to the actual users.

Non Functional Testing:

Performance Testing:
Performance Testing is performed to evaluate the performance of components of a particular system under a particular workload. During this testing, system components are monitored to verify the stability of the system under test.

Performance Testing is the type of Non-Functional Testing. It strives to build performance standards into the implementation, design and architecture of a system.

Performance Testing Attributes: Speed, Scalability, Stability & Reliability.

Performance Testing Tools : Jmeter, Open STA, Load Runner, Web Load etc.

Difference between Performance, Load and Stress Testing

Objective of Performance Testing

The primary objective is to establish the benchmark behaviour of the system. It does not aim to find defects in the application rather this focus on measuring characteristics, such as response times, throughput or the mean time. This can be done in different ways depending on the tool, such as different user profiles, different types of activity, timing delays and other parameters.

Performance Testing Techniques:

Load Testing: Testing the behaviour of the system under a specific load or to get the breakeven point where system starts downgrading it’s performance.

Stress Testing: It is performed to find the upper limit capacity of the system and also to determine how the system performs if the current load goes well above the expected maximum.

Usability Testing: Testing to determine the extent to which the software product is understood, easy to learn, easy to operate and attractive to the users under specified conditions.

Security Testing: This intends to uncover vulnerabilities of the system and determine that its data and resources are protected from possible intruders.

Portability Testing: Software reliability is the probability that software will work properly in a specified environment and for a given amount of time.


Testing Methods:

Black Box Testing:
Also known as Functional Testing. In Black Box Testing method testing is done without knowing the internal codes and structure of the program. The testing is done from customer’s point of view and the tester knows only about the inputs and the expected outputs of the application. Tester is not aware how the requests are being processed by the software and giving the output results.

Example:

In case of Google or any other search engine, the user enters text in the browser.
The search engine locates and retrieves the data results. The user is not aware of the source of process. A black box software tester selects a set of valid and invalid input and checks for valid output responses.

Advantages:

It is well suited and efficient for large scale segments.
A tester can be non-technical. Highly qualified testers are not required and hence it is less expensive.
Tests are done from user’s point of view and are useful to verify the differences in the actual and system and specifications.
Tests can be defined as soon as specifications are complete.

Disadvantages:

The coverage is limited since only a selected number of tests are actually performed.
As the tester has limited knowledge of the software, the testing is inefficient.
The coverage is blind as the tester cannot target specific codes.


White Box Testing:
It is the testing method in which internal codes & structure of the software is known to the tester. The tester chooses inputs and exercises the test by giving inputs to the system through the codes and determines the appropriate outputs. The main focus of WBT is on strengthening the security and on
improving design and usability of the software.

For this, tester is supposed to have the knowledge of programming languages and implementation of codes. The tester should be aware of the security concerns of the project and his job is to prevent the attacks from user & hackers which may inject malicious code into the software either intentionally or unintentionally.

The White Box Testing is like the working of a car mechanic who knows all the internals of the car and checks why it is not working or giving less mileage etc.

White Box Testing is also know as Glass Box Testing, Clear Box Testing, Open Box Testing, Logic Driven Testing, Path Driven Testing or Structural Testing.

Types of White Box Testing:

Unit Testing:

It is often the first type of testing done on an application. Unit testing is performed on each unit or block of code as it is developed. Unit testing is essentially done by the programmer. As a software developer, he develops a few lines of code, and test it to make sure that it works before moving ahead. Unit testing helps in identifying majority of bugs in the early stages of the testing so they are cheaper and easy to fix.

Advantages:

Testing is more thorough, as it covers all possible paths of code.
As the tester is aware of internal coding structure, then it is helpful to decide which type of input data is needed for testing software application effectively.
White Box Testing allows you to help in the code optimisation.

Disadvantages:

As a highly skilled resource is required to carry out testing who know the deep knowledge of internal structure of the code, the cost is high.
If the application under test is large in size, then exhaustive testing is impossible.
It is not possible for testing to test each and every path/condition of software program, which might miss the defects in code.
As each and every path is tested, it is very expensive type of testing.


 Gray Box Testing or Grey Box Testing:


It is the combination of Black Box testing and White Box testing. In Black Box testing tester is not aware of internal codes while in White Box testing internal codes of structures are known to the tester. In the Gray Box testing the tester has knowledge of some parts of internal structure.

This involves having access to internal data structure and algorithms for the purpose of designing the test cases. Based on this limited knowledge, the test cases are designed and the tester tests the application from outside on Black Box level. The Gray Box tester treats the program as a Black Box that must be analysed from outside.

5 comments:

  1. I would like to thank you for the efforts you have made in writing this article about Software Testing Services in Boston. I am hoping the same best work from you in the future as well Software Testing Companies in Chicago. Thank you for sharing such a great blog post Software Testing Companies in Dallas with us this blog is really informative and useful, keep it up..

    Read more - Software Testing Services in Florida

    ReplyDelete
  2. Nice informative post about software testing. Software testing is important because if there are any bugs or errors in the software, they can be identified early and fixed before the software product is delivered. Checkout the detailed information about software testing services.

    ReplyDelete