Tuesday, March 6, 2012

Software Testing Types


Software Testing Types:
 White box testing –
This testing is based on knowledge of the internal logic of an application’s code.
 Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions.
Testing conducted on the source code by developers to check does the source code is working as expected or not is called white box testing.
Also known as Glass box Testing & Structural Testing.
Unit testing and integration testing are known as white box testing.

Unit testing –
Testing of individual software components or modules.
 Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. May require developing test driver modules or test harnesses.
A smallest separable portion in the source code of the application is called unit. (Functions, procedures, etc.)
It is also called module testing or component testing.

Integration testing –
Testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.
Once all units are tested the programmers will integrate all units and check interactions among the units which are called integration testing.
There is two way approach to do Integration Testing: a.Top-Down b.Bottom-Up

Incremental integration testing –
Bottom up approach for testing i.e. continuous testing of an application as new functionality is added
 Application functionality and modules should be independent enough to test separately.
Done by programmers or by testers.

Black box testing –
Internal system design is not considered in this type of testing. Tests are based on requirements and functionality.
Testing is conducted on the application by test engineers or by domain experts to check whether the application is working according to customer requirements.
Black Box Testing is combination of System Testing, User Accepting Testing which is called as requirement Based Testing (or) Specification Based Testing.
It is also called as behavioural Testing.
Black box testing is conducted by test engineers with end-user perception.


System testing –
Entire system is tested as per the requirements.
It is Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.
It is classified into two types: Functional System Testing & Non Functional System Testing.

Functional testing –
This type of testing ignores the internal parts and focus on the output is as per requirement or not.
Testing the application against business requirements.
Functional testing is done using the functional specifications provided by the client or by using the design specifications 
There are different types of the functional Testing:
Unit Testing
Smoke testing / Sanity testing
Integration Testing (Top Down, Bottom up Testing)
Interface & Usability Testing
System Testing
Regression Testing
Pre User Acceptance Testing(Alpha & Beta)
User Acceptance Testing
White Box & Black Box Testing
Globalization & Localization Testing

Sanity testing –
Testing to determine if a new software version is performing well enough to accept it for a major testing effort.
If application is crashing for initial use then system is not stable enough for further testing and build or application is assigned to fix.
Sanity testing is usually narrow and deep.
It is also called Tester Acceptance Testing.

Smoke Testing
Smoke testing is conducted to ensure whether the most crucial functions of a program are working, but not bothering with finer details.
A Smoke test is designed to touch every part of the application in a cursory way.
It’s shallow and wide.

Regression testing –
Testing the application as a whole for the modification in any module or functionality.
Difficult to cover all the system in regression testing so typically automation tools are used for these testing types.
It is process of identifying various features in the modified build where there is a chance of getting affected and retesting these features.
The new functionalities added to the existing system or modifications made to the existing system or the bug fixes may introduce side-effects. Regression testing is helpful to identify these side effects.

Positive Testing (+ve)-
Testing conducted on the application in a positive approach to determine what system supposed to do is called positive testing.
Positive testing is helpful to check whether the customer requirements are justifying by the application or not.

Negative Testing (-ve)-
Testing a software application with a negative perception to check what system not supposed to do is called negative testing.
Negative testing is helpful to find defects from the software.

Non-Functional Testing
Testing the application against client's and performance requirement.
 Non-Functioning testing is done based on the requirements and test scenarios defined by the client.
There are different types of the Non-Functional Testing.
Load and Performance Testing
Ergonomics Testing
Stress & Volume Testing
Compatibility & Migration Testing
Data Conversion Testing
Operational Readiness Testing
Installation Testing
Security Testing

Stress testing –
System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.

Performance testing –
Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.

Load testing –
It’s a performance testing to check system behaviour under load.
Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.

 Install/uninstall testing –
Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.

Recovery testing –
Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.

 Security testing –
Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.

 Usability Testing-
Checking how easily the end user is able to understand and operate the application

 Globalization Testing-
Checking if the application having a provision of setting and changing languages date and time format and currency etc. If it is designed for global users

 Localization Testing-
Checking default languages currency date and time format etc. If it is designed for a particular locality

 Compatibility testing 
Testing how well software performs in a particular hardware/software/operating system/network environment and different combination s of above.

 Comparison testing 
Comparison of product strengths and weaknesses with previous versions or other similar products.

 Alpha testing –
In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.

 Beta testing 
Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.

 End-to-end testing 
Similar to system testing, involves testing of a complete application environment.

 Formal Testing-
If you tested software application by following all preplan procedures and proper documentation then it is called formal testing.

Adhoc Testing-
If you test software without following any procedures and documentation then it is called adhoc-testing. It is also called informal testing.

 Risk Based Testing (or) Priority Based Testing-
Identifying the critical functionality in the system and testing it first.

 Re- Testing:
Testing functionality again or testing functionality repetitively is called re-testing.
Testing functionality with multiple inputs to confirm if the business validations are implemented or not.
Testing functionality on the modified build to confirm the bug fixers are made correctly or not.

 Exploratory Testing-
Exploring the application and testing the functionalities.

 Monkey Testing-
 Testing conducted on an application unevenly or zig zag way with an intension of finding tricky defects is called monkey testing.

 Mutation Testing
It is often used to discover the best coding techniques to use for expanding a software solution.

 Penetration Testing
In this testing, the tester/developer has full information of the application’s source code, detailed network information, IP addresses involved and all server information the application runs on.  The aim is to attack the code from several angles to expose security threats.

Ramp Testing
Type of testing consisting in raising an input signal continuously until the system breaks down.
It may be conducted by the testing team or the performance engineer.

Fuzz Testing –
Software testing technique that provides invalid, unexpected, or random data to the inputs of a program - a special area of mutation testing.
Fuzz testing is performed by testing teams.

Requirement Testing
In this validate that the requirements are correct, complete, unambiguous and logically consistent and allows designing a necessary and sufficient set of test cases from those requirements.


7 comments:

  1. Really nice topics you had discussed above. I am much impressed. Thank you for providing this nice information here.

    Game QA Company

    Game Functionality Testing

    Game Compatibility Testing

    Game Compliance Testing

    ReplyDelete
  2. I was very interested in the article , it’s quite inspiring I should admit. I like visiting your site since I always come across interesting articles like this one. Keep sharing! Regards. Read more about

    Very valuable post...! This information shared is helpful to improve my knowledge skill. Thank you...!
    Offshore software testing services
    software testing services company
    software testing services
    Software Qa Services
    quality assurance service providers
    Performance testing services
    Security testing services
    software testing Companies
    regression testing services

    ReplyDelete
  3. The information which you have provided is very good. It is very useful who is looking for Game QA services

    ReplyDelete
  4. i am glad to discover this page : i have to thank you for the time i spent on this especially great reading !! i really liked each part and also bookmarked you for new information on your site.Top QA Companies
    Top Automation Testing Companies
    Top Mobile App Testing Companies
    Top Performance Testing Companies

    ReplyDelete
  5. very very informative post for me thanks for sharing
    read now

    ReplyDelete