Tuesday 8 April 2014

Types of TESTING

TYPES :

Unit Testing : - Unit testing is a method by which individual units of source code are tested to determine if they are fit for use.Unit tests are typically written and run by software developers.
  
Unit Test Life cycle :

Unit testing in Test Life Cycle 

 Integration Testing : - The purpose of integration testing is to verify the functional, performance, and reliability between the modules that are integrated.
       Integration testing tests integration or interfaces between components, interactions to different parts of the system such as an operating system, file system and hardware or interfaces between systems.

 Integration Strategies:
  • Big-Bang Integration
  • Top Down Integration
  • Bottom Up Integration
  • Hybrid Integration
 System Testing : - System Testing (ST) is a black box testing technique performed to evaluate the complete system the system's compliance against specified requirements. In System testing, the functionalities of the system are tested from an end-to-end perspective.

         System testing should investigate both FUNCTIONAL and NON-FUNCTIONAL requirements of the testing.

Types of System Tests:
System testing in Test Life Cycle
 Sanity testing :-  Sanity testing, a software testing technique performed by the test team for some basic tests. The aim of basic test is to be conducted whenever a new build is received for testing.
            Sanity test is usually unscripted, helps to identify the dependent missing functionalities. It is used to determine if the section of the application is still working after a minor change.

 Regression Testing : - Regression testing a black box testing technique that consists of re-executing those tests that are impacted by the code changes. These tests should be executed as often as possible throughout the software development life cycle.

Types of Regression Tests:
  • Final Regression Tests: - A "final regression testing" is performed to validate the build that hasn't changed for a period of time. This build is deployed or shipped to customers.
  • Regression Tests: - A normal regression testing is performed to verify if the build has NOT broken any other parts of the application by the recent code changes for defect fixing or for enhancement.

    Selecting Regression Tests:

  • Requires knowledge about the system and how it affects by the existing functionalities.
  • Tests are selected based on the area of frequent defects.
  • Tests are selected to include the area, which has undergone code changes many a times.
  • Tests are selected based on the criticality of the features.

     Regression Testing Steps:

 Regression tests are the ideal cases of automation which results in better Return On Investment (ROI).
  • Select the Tests for Regression.
  • Choose the apt tool and automate the Regression Tests
  • Verify applications with Checkpoints
  • Manage Regression Tests/update when required
  • Schedule the tests
  • Integrate with the builds
  • Analyze the results
Smoke testing :- Smoke Testing is a testing technique that is inspired from hardware testing, which checks for the smoke from the hardware components once the hardware's power is switched on. Similarly in Software testing context, smoke testing refers to testing the basic functionality of the build.
If the Test fails, build is declared as unstable and it is NOT tested anymore until the smoke test of the build passes.

Smoke Testing - Features:

  • Identifying the business critical functionalities that a product must satisfy.
  • Designing and executing the basic functionalities of the application.
  • Ensuring that the smoke test passes each and every build in order to proceed with the testing.
  • Smoke Tests enables uncovering obvious errors which saves time and effort of test team.
  • Smoke Tests can be manual or automated.
      
    IVV Testing :- (Independent Verification Validation)

            Independent testing corresponds to an independent team, who involve in testing activities other than developer to avoid author bias and is often more effective at finding defects and failures.

    Levels of Independent Testing

    The following list shows the increasing levels of independence for testing:
  • Testing done by developer himself
  • Independent testers ceded to the development team
  • Independent Testing Team within Organization
  • Independent Testers of different Organization
  • Outsourced test team members of other organization

Benefits:

  • The tester sees each defect in a neutral perspective
  • The tester is totally unbiased
  • The tester sees what has been built rather than what the developer thought
  • The tester makes no assumptions regarding quality

Disadvantages:

  • Isolation from the development team can sometimes lead to outdated documentation reference.
  • The independent test execution is normally the last stage and affected by any delays earlier in the process.
  • Developers might be irresponsible for quality as they might assume that independent testing team is there to find the issues within the system
  • Independent testing can sometimes act as a hindrance to communication.


    Compatability Testing :- Compatibility testing is a non-functional testing conducted on the application to evaluate the application's compatibility within different environments. It can be of two types - forward compatibility testing and backward compatibility testing.

    • This type of testing helps find out how well a system performs in a particular environment that includes hardware, network, operating system and other software etc. 
    • It is basically the testing of the application or the product built with the computing environment.
    • It tests whether the application or the software product built is compatible with the hardware, operating system, database or other system software or not.
  • Operating system Compatibility Testing - Linux , Mac OS, Windows
  • Database Compatibility Testing - Oracle SQL Server
  • Browser Compatibility Testing - IE , Chrome, Firefox
  • Other System Software - Web server, networking/ messaging tool, etc.

    Usability Testing :-  Usability testing, a non-functional testing technique that is a measure of how easily the system can be used by end users. It is difficult to evaluate and measure but can be evaluated based on the below parameters:

    1. Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the design?
    2. Efficiency: How fast can experienced users accomplish tasks?
    3. Memorability: When users return to the design after a period of not using it, does the user remember enough to use it effectively the next time, or does the user have to start over again learning everything?
    4. Errors: How many errors do users make, how severe are these errors and how easily can they recover from the errors?
    5. Satisfaction: How much does the user like using the system?

    Usability Testing Process:

    Usability testing Process in Test Life Cycle
    Recovery Testing :- Recovery testing is a type of non-functional testing technique performed in order to determine how quickly the system can recover after it has gone through system crash or hardware failure. Recovery testing is the forced failure of the software to verify if the recovery is successful.

    Recovery Plan - Steps:

  • Determining the feasibility of the recovery process.
  • Verification of the backup facilities.
  • Ensuring proper steps are documented to verify the compatibility of backup facilities.
  • Providing Training within the team.
  • Demonstrating the ability of the organization to recover from all critical failures.
  • Maintaining and updating the recovery plan at regular intervals.
 For example, when an application is receiving data from a network, unplug the connecting cable. After some time, plug the cable back in and analyze the application’s ability to continue receiving data from the point at which the network connection got disappeared.
      Restart the system while a browser has a definite number of sessions and check whether the browser is able to recover all of them or not.

 Security Testing :- Security testing is a testing technique to determine if an information system protects data and maintains functionality as intended.
  • It is a type of non-functional testing.
  • Security testing is basically a type of software testing that’s done to check whether the application or the product is secured or not. It checks to see if the application is vulnerable to attacks, if anyone hack the system or login to the application without any authorization.
It also aims at verifying 6 basic principles as listed below:
  • Confidentiality
  • Integrity
  • Authentication
  • Authorization
  • Availability
  • Non-repudiation

    Alpha Testing :- Alpha testing is one of the most common software testing strategy used in software development. Its specially used by product development organizations.

  • This test takes place at the developer’s site. Developers observe the users and note problems.
  • Alpha testing is testing of an application when development is about to complete. Minor design changes can still be made as a result of alpha testing. 
Alpha testing is final testing before the software is released to the general public. It has two phases:
  • In the first phase of alpha testing, the software is tested by in-house developers. They use either debugger software, or hardware-assisted debuggers. The goal is to catch bugs quickly.
  • In the second phase of alpha testing, the software is handed over to the software QA staff, for additional testing in an environment that is similar to the intended use.
alpha testing in Test Life Cycle 

Beta Testing :- It is also known as field testing. It takes place at customer’s site. It sends the system to users who install it and use it under real-world working conditions.

         Beta testing adds value to the software development life cycle as it allows the "real" customer an opportunity to provide inputs into the design, functionality, and usability of a product. These inputs are not only critical to the success of the product but also an investment into future products when the gathered data is managed effectively.
  
Beta Testing - In SDLC

The following diagram explains the fitment of Beta testing in the software development life cycle:
beta testing in Test Life Cycle 

 Acceptance Testing :-  Acceptance testing, a testing technique performed to determine whether or not the software system has met the requirement specifications. The main purpose of this test is to evaluate the system's compliance with the business requirements and verify if it is has met the required criteria for delivery to end users.

Acceptance Testing - In SDLC

The following diagram explains the fitment of acceptance testing in the software development life cycle.
acceptance testing in Test Life Cycle




3 comments:

  1. I will appreciate your help once again. thanks in advance
    Software Testing Training in Chennai

    ReplyDelete
  2. Informative article on Salesforce technology!!! Your post helped me to understand the career prospects in cloud based CRM tool good luck guuys.thanjsk
    Ai & Artificial Intelligence Course in Chennai
    PHP Training in Chennai
    Ethical Hacking Course in Chennai Blue Prism Training in Chennai
    UiPath Training in Chennai

    ReplyDelete
  3. The program brings an essential tool for 3D rendering, animation editing, and more. It is commonly used for pre-production to post-production·Marmoset Toolbag 4 Getintopc

    ReplyDelete