Skip to content

Latest commit

 

History

History
37 lines (19 loc) · 3.87 KB

File metadata and controls

37 lines (19 loc) · 3.87 KB

Types of Testing

Manual Testing

Manual Testing is where a tester methodically exercises the features of a product or product area without the aid of test automation. The single greatest strength of manual testing is that it is truly real-world testing, meaning that the tester can utilize the application under test the same way an end user would. Through manual testing the tester can provide a wide variety of feedback about the application under test not limited to simply reproducing bugs.

Manual tests are difficult to perform on a regular basis. The major weakness of manual testing is that it is time consuming, tedious and requires extended periods of focused attention. Manual testing tends to be quite error prone, leading to situations where consistently reproducing a bug can be very difficult.

Functional Testing

Functional Testing focuses on interactions with an application's user interface (UI) via the mouse, keyboard or other input device with particular attention to how the application visually responds to input. The goal of Functional Testing is to methodically cover all of the various UI features exposed by an application. Functional Testing should be highly organized and structured in a manner that allows for additional tests to easily be incorporated as new features are added.

Unit Testing

Unit Testing focuses on smaller atomic portions of an application. Typically, Unit Testing requires internal knowledge of how an application performs and seeks to test portions (objects, methods and function) of an application in isolation. In many cases, applications have to be designed with Unit Testing in mind in order for this type of testing to be truly effective. The benefit of unit testing is that it tends to force application developers to write smaller, well defined routines with fewer dependencies allowing for highly specific tests to be developed.

Regression Testing

Regression Testing is the process of executing tests in a repeatable manner and comparing the latest results with previous test executions to ensure that the same outcome is achieved. Regression Testing is extremely important and is the means of realizing the value of test automation. Repeatedly executing tests over time allows you to verify the application is still performing as intended.

Distributed Testing

Distributed Testing is the act of farming different portions of a test out to separate machines for execution. Distributed Testing is useful for simulating real world interactions on a networked application such as a web site or web service and can exercise functionality designed to handle concurrent use of application resources including, but not restricted to data.

HTTP Performance Testing

HTTP Performance Testing is the simulation of real-world interactions with a web application from multiple machines. TestComplete provides the ability to leverage networked computers and virtual users to simultaneously submit HTTP transactions to a web application.

Multi-Tier

In software development there are typically three Tiers which are used to describe various aspects of an application they are Client Tier, Middle Tier and Data Tier. These are each defined as:

Client -- The user interface or presentation of an application and its data which is typically covered through Functional Testing.

Data Tier -- The storage of an application's data which can be exercised by Functional Testing as well as Unit Testing

Middle Tier -- Refers to the portion of the application responsible for moving data back and forth between the Client and the Data Tiers. The code that resides in this Tier can be tested from either the Client Tier via Functional testing or through Unit Testing on the code in the Middle Tier itself. Keep in mind that these are not strict rules as to which type of testing should be used but more illustrative how the different types of testing can be used.