Brief description  about Online courses   join in Online courses

Types of Testing

Sanjna  Priyadarshi
Sanjna Priyadarshi
Automation Testing Engineer

Functional Testing:

Functionality testing is performed to verify whether the product/application meets the intended specifications and the functional requirements mentioned in the documentation.

Functional tests are written from a user's perspective. These tests confirm that the system does what the users are expecting it to do.

Both positive and negative test cases are performed to verify the product/application responds correctly. Functional Testing is critically important for the products success since it is the customer's first opportunity to be disappointed.

Structural Testing:

In Structural testing, a white box testing approach is taken with focus on the internal mechanism of a system or component
• Types of structural testing:
– Branch testing
– Path testing
– Statement testing"

System Testing:

System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. System testing falls within the scope of black box testing, and as such, should require no knowledge of the inner design of the code or logic.
System testing is performed on the entire system with reference of a Functional Requirement Specification(s) (FRS) and/or a System Requirement Specification (SRS).

Integration Testing:

Integration testing is the activity of software testing in which individual software modules are combined and tested as a group.
Testing in which software components or hardware components or both are combined and tested to evaluate the interaction between them.


Unit Testing:

Testing of individual software components or groups of related components
Testing conducted to evaluate whether systems or components pass data and control correctly to one another

Regression Testing:

When a defect is found in verification and it is fixed we need to verify that
1) the fix was done correctly
2) to verify that the fix doesn’t break anything else. This is called regression testing.

Regression testing needs to be performed to ensure that the reported errors are indeed fixed. Testing also needs to be performed to ensure that the fixes made to the application do not cause new errors to occur.

Selective testing of a system or component to verify that modifications have not caused unintended effects.



Retesting means executing the same test case after fixing the bug to ensure the bug fixing.

Negative Testing:

Negative Testing is testing the application beyond and below of its limits.
For ex: If the requirements is to check for a name (Characters),
1) We can try to check with numbers.
2) We can enter some ascii characters.
3) First we can enter some numbers and then some characters.
4) If the name should have some minimum length, we can check beyond that length.

Performance Testing:

Performance test is testing the product/application with respect to various time critical functionalities. It is related to benchmarking of these functionalities with respect to time. This is performed under a considerable production sized setup.

Performance Tests are tests that determine end to end timing (benchmarking) of various time critical business processes and transactions, while the system is under low load, but with a production sized database. This sets 'best possible' performance expectation under a given configuration of infrastructure.

It can also serve to validate and verify other quality attributes of the system, such as scalability(measurable or quantifiable), reliability and resource usage.

Under performance testing we define the essential system level performance requirements that will ensure the robustness of the system.
The essential system level performance requirements are defined in terms of key behaviors of the system and the stress conditions under which the
system must continue to exhibit those key behaviors."

Some examples of the Performance parameters (in a Patient monitoring system - Healthcare product) are,
1. Real-time parameter numeric values match the physiological inputs
2. Physiological input changes cause parameter numeric and/or waveform modifications on the display within xx seconds.
3. The system shall transmit the numeric values frequently enough to attain an update rate of x seconds or shorter at a viewing device.

Stress Testing:

1. Stress Tests determine the load under which a system fails, and how it fails.
2. Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements to determine the load under which it fails and how.
3. A graceful degradation under load leading to non-catastrophic failure is the desired result.

Often Stress Testing is performed using the same process as Performance Testing but employing a very high level of simulated load.

Some examples of the Stress parameters (in a Patient monitoring system - Healthcare product) are,
1. Patient admitted for 72 Hours and all 72 hours of data availale for all the parameters (Trends).
2. Repeated Admit / Discharge (Patient Connection and Disconnection)
3. Continuous printing
4. Continuous Alarming condition

Load Testing:

Load testing is the activity under which Anticipated Load is applied on the System, increasing the load slightly and checking when the performance starts to degrade.

Load Tests are end to end performance tests under anticipated production load. The primary objective of this test is to determine the response times for various time critical transactions and business processes.

Some of the key measurements provided for a web based application include:
1. How many simultaneous users, can the web site support?
2. How many simultaneous transactions, can the web site support?
3. Page load timing under various traffic conditions.
4. To find the bottlenecks.

Adhoc Testing:

Adhoc testing is a commonly used term for software testing performed without planning and documentation.

The tests are intended to be run only once, unless a defect is discovered.

Exploratory Testing:

Exploratory testing is a method of manual testing that is described as simultaneous learning, design and execution.

Exhaustive Testing:

Testing which covers all combination's of input values and preconditions for an element of the software under test.

Sanity Testing:

A sanity test is a narrow regression test that focuses on one or a few areas of functionality. Sanity testing is usually narrow and deep. Testing few functions/parameters and checking all their main features.

In which one can perform testing on an overall application (all features) initially to check whether the application is proper in terms of availability and Usability.
Sanity testing is done by Test engineer.

Smoke Testing:

In software industry, smoke testing is a wide and shallow approach whereby all areas of the application are tested, without getting into too deep.

Smoke testing originated in the hardware testing practice of turning on a new piece of hardware for the first time and considering it a success if it does not catch fire and smoke.

When a build is received, a smoke test is run to ascertain if the build is stable and it can be considered for further testing. Smoke testing is done by Developer or White box engineers.

Soak Testing:

Soak testing involves testing a system with a significant load extended over a significant period of time, to discover how the system behaves under sustained use.

For example, in software testing, a system may behave exactly as expected when tested for 1 hour. However, when it is tested for 3 hours, problems such as memory leaks cause the system to fail or behave randomly.

Compatibility Testing:

Compatibility testing is done to check that the system/application is compatible with the working environment.

For example if it is a web based application then the browser compatibility is tested.
If it is a installable application/product then the Operating system compatibility is tested.

Compatibility testing verifies that your product functions correctly on a wide variety of hardware, software, and network configurations. Tests are run on a matrix of platform hardware configurations including High End, Core Market, and Low End.

Alpha Testing:

Testing performed by actual customers at the developer’s site.

Beta Testing:

Testing performed by actual customers at their site (customers site)."

Acceptance Testing:

Formal testing conducted to enable a user, customer or other authorized entity to determine whether to accept a system or component.

Static Testing:

The intention to find defects/bugs without executing the software or the code is called static testing. Example: Review, Walkthrough, CIP(Code Inspection Procedure).

Static testing is a form of software testing where the software isn't actually used. It is generally not detailed testing, but checks mainly for the sanity of the code, algorithm, or document. It is primarily syntax checking of the code and/or manually reviewing the code or document to find errors. This type of testing can be used by the developer who wrote the code, in isolation. Code reviews, inspections and walkthroughs are also used.

Dynamic testing:

Dynamic testing is nothing but functional testing. It is used to test software by executing it.

i18n / Internationalization:

Here 18 refers for the number of letters between the first i and last n in Internationalization.

Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes.

Internationalization is the process of designing and coding a product so it can perform properly when it is modified for use in different languages and locales.

L10N / Localization:

Here 10 refers for the number of letters between the first L and last n in Localization.

Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text.

Localization is the process of adapting a globalized application to a particular culture/locale. Localizing an application requires a basic understanding of the character sets typically used in modern software development and an understanding of the issues associated with them. Localization includes the translation of the application user interface and adapting graphics for a specific culture/locale. The localization process can also include translating any help content associated with the application.

Write your comment now