02 Types of Testing Posted by Superadmin on May 01 2018 10:00:34
Manual Testing Tutorial for Beginners
What is Manual testing?
Manual Testing is a type of Software Testing where Testers manually execute test cases without using any automation tools.
Manual Testing is the most primitive of all testing types and helps find bugs in the software system.
Any new application must be manually tested before its testing can be automated. Manual Testing requires more effort, but is necessary to check automation feasibility.
Manual Testing does not require knowledge of any testing tool.
One of the Software Testing Fundamental is "100% Automation is not possible".
This makes Manual Testing imperative.
Please be patient. The Video will load in some time. If you still face issue viewing video click here
Goal of Manual Testing
The key concept of manual testing is to ensure that the application is error free and it is working in conformance to the specified functional requirements.
Test Suites or cases ,are designed during the testing phase and should have 100% test coverage.
It also makes sure that reported defects are fixed by developers and re-testing has been performed by testers on the fixed defects.
Basically, this testing checks the quality of the system and delivers bug-free product to the customer.
Types of Manual Testing :
Below given diagram depicts Manual Testing Types. In fact any type of software testing type can be executed both manually as well using an automation tool.
Myths of Manual Testing
Following are few common myths and facts related to testing:
Manual Testing is performed by a human sitting in front of a computer carefully executing the test steps.
Automation Testing means using an automation tool to execute your test case suite.
The automation software can also enter test data into the System Under Test , compare expected and actual results and generate detailed test reports.
Test Automation demands considerable investments of money and resources.
Successive development cycles will require execution of same test suite repeatedly.
Using a test automation tool it's possible to record this test suite and re-play it as required.
Once the test suite is automated, no human intervention is required .
This improved ROI of Test Automation.
Goal of Automation is to reduce number of test cases to be run manually and not eliminate Manual Testing all together.
Please be patient. The Video will load in some time. If you still face issue viewing video click here
Why Automated Testing?
Automated software testing is important due to following reasons:
Manual Testing of all work flows, all fields , all negative scenariosis time and cost consuming
It is difficult to test for multi lingual sites manually
Automation does not require Human intervention. You can run automated test unattended (overnight)
Automation increases speed of test execution
Automation helps increase Test Coverage
Manual Testing can become boring and hence error prone.
Which Test Cases to Automate?
Test cases to be automated can be selected using the following criterion to increase the automation ROI
High Risk - Business Critical test cases
Test cases that are executed repeatedly
Test Cases that are very tedious or difficult to perform manually
Test Cases which are time consuming
The following category of test cases are not suitable for automation:
Test Cases that are newly designed and not executed manually atleast once
Test Cases for which the requirements are changing frequently
Test cases which are executed on ad-hoc basis.
Automated Testing Process:
Following steps are followed in an Automation Process
Test tool selection
Test Tool selection largely depends on the technology the Application Under Test is built on. For instance QTP does not support Informatica. So QTP cannot be used for testing Informatica applications. It's a good idea to conduct Proof of Concept of Tool on AUT
Define the scope of Automation
Scope of automation is the area of your Application Under Test which will be automated. Following points help determine scope:
Feature that are important for the business
Scenarios which have large amount of data
Common functionalities across applications
Technical feasibility
Extent to which business components are reused
Complexity of test cases
Ability to use the same test cases for cross browser testing
Planning, Design and Development
During this phase you create Automation strategy & plan, which contains following details-
Automation tools selected
Framework design and its features
In-Scope and Out-of-scope items of automation
Automation test bed preparation
Schedule and Timeline of scripting and execution
Deliverables of Automation Testing
Test Execution
Automation Scripts are executed during this phase. The scripts need input test data before there are set to run. Once executed they provide detailed test reports.
Execution can be performed using the automation tool directly or through the Test Management tool which will invoke the automation tool.
Example: Quality center is the Test Management tool which in turn it will invoke QTP for execution of automation scripts. Scripts can be executed in a single machine or a group of machines. The execution can be done during night , to save time.
Maintenance
As new functionalities are added to the System Under Test with successive cycles, Automation Scripts need to be added, reviewed and maintained for each release cycle.Maintenance becomes necessary to improve effectiveness of Automation Scripts.
Framework in Automation
A framework is set of automation guidelines which help in
Maintaining consistency of Testing
Improves test structuring
Minimum usage of code
Less Maintenance of code
Improve re-usability
Non Technical testers can be involved in code
Training period of using the tool can be reduced
Involves Data wherever appropriate
There are four types of framework used in automation software testing:
Data Driven Automation Framework
Keyword Driven Automation Framework
Modular Automation Framework
Hybrid Automation Framework
Automation Tool Best Practices
To get maximum ROI of automation, observe the following
Scope of Automation needs to be determined in detail before the start of the project. This sets expectations from Automation right.
Select the right automation tool: A tool must not be selected based on its popularity but it's fit to the automation requirements.
Choose appropriate framework
Scripting Standards- Standards have to be followed while writing the scripts for Automation .Some of them are-
Create uniform scripts, comments and indentation of the code
Adequate Exception handling - How error is handled on system failure or unexpected behavior of the application.
User defined messages should be coded or standardized for Error Logging for testers to understand.
Measure metrics- Success of automation cannot be determined by comparing the manual effort with the automation effort but by also capturing the following metrics.
Percent of defects found
Time required for automation testing for each and every release cycle
Minimal Time taken for release
Customer satisfaction Index
Productivity improvement
The above guidelines if observed can greatly help in making your automation successful.
Benefits of Automation Testing
Following are benefits of automated testing:
70% faster than the manual testing
Wider test coverage of application features
Reliable in results
Ensure Consistency
Saves Time and Cost
Improves accuracy
Human Intervention is not required while execution
Increases Efficiency
Better speed in executing tests
Re-usable test scripts
Test Frequently and thoroughly
More cycle of execution can be achieved through automation
Early time to market
Different types of software testing that can be automated
Selecting the right tool can be a tricky task. Following criterion will help you select the best tool for your requirement-
Environment Support
Ease of use
Testing of Database
Object identification
Image Testing
Error Recovery Testing
Object Mapping
Scripting Language Used
Support for various types of test - including functional, test management, mobile, etc...
Support for multiple testing frameworks
Easy to debug the automation software scripts
Ability to recognize objects in any environment
Extensive test reports and results
Minimize training cost of selected tools
Tool selection is one of biggest challenges to be tackled before going for automation. First, Identify the requirements, explore various tools and its capabilities, set the expectation from the tool and go for a Proof Of Concept.
Automation Testing Tools
There are tons of Functional and Regression Testing Tools available in market. Here are 5 best tools certified by our experts
Tricentis
Tricentis is the industry’s #1 Automation Testing platform and is recognized for reinventing software testing for DevOps. Tricentis is the only vendor to achieve “leader” status in all three top analyst reports.
Features:
Risk-based testing
Scriptless end-to-end test automation
Supports API, BI, Mobile, Cross Browser, RPA and other automation testing types
It is a software testing tool used for Regression Testing. It is an open source testing tool that provides playback and recording facility for Regression Testing. The Selenium IDE only supports Mozilla Firefox web browser.
It provides the provision to export recorded script in other languages like Java, Ruby, RSpec, Python, C#,etc
It can be used with frameworks like Junit and TestNG
It can execute multiple tests at a time
Autocomplete for Selenium commands that are common
Walkthrough tests
Identifies the element using id, name , X-path, etc.
Store tests as Ruby Script, HTML, and any other format
It provides an option to assert the title for every page
It supports selenium user-extensions.js file
It allows to insert comments in the middle of the script for better understanding and debugging
QTP is widely used for functional and regression testing, it addresses every major software application and environment. To simplify test creation and maintenance, it uses the concept of keyword driven testing. It allows the tester to build test cases directly from the application.
It is easier to use for non-technical person to adapt to and create working test cases
It fix defects faster by thoroughly documenting and replicating defects for developer
Collapse test creation and test documentation at a single site
Parameterization is easy than WinRunner
QTP supports .NET development environment
It has better object identification mechanism
It can enhance existing QTP scripts without "Application Under Test" being available, by using the ActiveScreen
It is an Object-Oriented automated Functional Testing tool that is capable of performing automated functional, regression, data-driven testing and GUI testing. The main features of this tool are
It supports a wide range of protocols and applications like Java, HTML, NET, Windows, SAP, Visual basic, etc.
It can record and replay the actions on demand
It integrates well with source control management tools such as Rational Clear Case and Rational Team Concert integration
It allows developers to create keyword associated script so that it can be re-use
Eclipse Java Developer Toolkit editor facilitates the team to code test scripts in Java with Eclipse
It supports custom controls through proxy SDK (Java/.Net)
It supports version control to enable parallel development of test scripts and concurrent usage by geographically distributed team
It is an open source testing software for regression testing. It enables you to write tests that are easy to read and maintain. Watir supports only internet explorer on windows while Watir webdriver supports Chrome, Firefox, IE, Opera, etc.
It supports multiple browsers on different platforms
Rather than using proprietary vendorscript it uses a full featured modern scripting language Ruby
It supports your web app regardless of what it is developed in
Silk Test is designed for doing functional and regression testing. For e-business application, silk test is the leading functional testing product. It is a product of Segue Software takeover by Borland in 2006. It is an object oriented language just like C++. It uses the concept of object, classes, and inheritance. Its main feature includes
It consists of all the source script files
It converts the script commands into GUI commands. On the same machine, commands can be run on a remote or host machine
To identify the movement of mouse along with keystrokes, Silktest can be executed. It can avail both playback and record method or descriptive programming methods to get the dialogs
It identifies all controls and windows of the application under test as objects and determine all of the attributes and properties of each window
Right selection of automation tool, testing process and team, are important players for automation to be successful. Manual and automation methods go hand-in hand for successful testing.
UNIT Testing Tutorial - Learn in 10 Minutes
What is Unit Testing?
Unit Testing of software applications is done during the development (coding) of an application.
The objective of Unit Testing is to isolate a section of code and verify its correctness. In procedural programming a unit may be an individual function or procedure
The goal of Unit Testing is to isolate each part of the program and show that the individual parts are correct. Unit Testing is usually performed by the developer.
Why do Unit Testing? Why is it important?
Sometimes software developers attempt to save time by doing minimal unit testing. This is a myth because skimping on unit testing leads to higher Defect fixing costs during System Testing, Integration Testing and even Beta Testing after the application is completed. Proper unit testing done during the development stage saves both time and money in the end.
Please be patient. The Video will load in some time. If you still face issue viewing video click here
How to Create Unit Test Cases
Unit testing is commonly automated, but may still be performed manually. The IEEE does not favor one over the other. A manual approach to unit testing may employ a step-by-step instructional document.
Under the automated approach-
A developer could write another section of code in the application just to test the function. They would later comment out and finally remove the test code when the application is done.
They could also isolate the function to test it more rigorously. This is a more thorough unit testing practice that involves copy and pasting the function into its own testing environment to other than its natural environment. Isolating the code helps in revealing unnecessary dependencies between the code being tested and other units or data spaces in the product. These dependencies can then be eliminated.
A coder may use a UnitTest Framework to develop automated test cases. Using an automation framework, the developer codes criteria into the test to verify the correctness of the unit. During execution of the test cases, the framework logs those that fail any criterion. Many frameworks will also automatically flag and report in summary these failed test cases. Depending on the severity of a failure, the framework may halt subsequent testing.
Mock Objects
Unit testing relies on mock objects being created to test sections of code that are not yet part of a complete application. Mock objects fill in for the missing parts of the program. For example, you might have a function that needs variables or objects that are not created yet. In unit testing, those will be accounted for in the form of mock objects created solely for the purpose of the unit testing done on that section of code.
Unit Testing Tools
There are several automated tools available to assist with unit testing. We will provide a few examples below:
Junit: Junit is a free to use testing tool used for Java programming language. It provides assertions to identify test method. This tool test data first and then inserted in the piece of code.
NUnit: NUnit is widely used unit-testing framework use for all .net languages. It is open source tool which allows writing scripts manually. It supports data-driven tests which can run in parallel.
JMockit: JMockit is open source Unit testing tool. It is code coverage tool with line and path metrics. It allows mocking API with recording and verification syntax. This tool offers Line coverage, Path Coverage, and Data Coverage.
EMMA: EMMA is an open-source toolkit for analyzing and reporting code written in Java language. Emma support coverage types like method, line, basic block. It is Java-based so it is without external library dependencies and can access to the source code.
PHPUnit: PHPUnit is a unit testing tool for PHP programmer. It takes small portions of code which is called units and test each of them separately. The tool also allows developers to use pre-define assertion methods to assert that system behave in a certain manner.
Those are just a few of the available unit testing tools. There are lots more, especially for C languages and Java, but you are sure to find a unit testing tool for your programming needs regardless of the language you use.
Extreme Programming & Unit Testing
Unit testing in Extreme Programming involves the extensive use of testing frameworks. A unit test framework is used in order to create automated unit tests. Unit testing frameworks are not unique to extreme programming, but they are essential to it. Below we look at some of what extreme programming brings to the world of unit testing:
Tests are written before the code
Rely heavily on testing frameworks
All classes in the applications are tested
Quick and easy integration is made possible
Unit Testing Myth
Myth: It requires time, and I am always overscheduled
My code is rock solid! I do not need unit tests.
Myths by their very nature are false assumptions. These assumptions lead to a vicious cycle as follows -
Truth is Unit testing increase the speed of development.
Programmers think that Integration Testing will catch all errors and do not execute the unit test. Once units are integrated, very simple errors which could have very easily found and fixed in unit tested take very long time to be traced and fixed.
Unit Testing Benefits and Advantage
Developers looking to learn what functionality is provided by a unit and how to use it can look at the unit tests to gain a basic understanding of the unit API.
Unit testing allows the programmer to refactor code at a later date, and make sure the module still works correctly (i.e. Regression testing). The procedure is to write test cases for all functions and methods so that whenever a change causes a fault, it can be quickly identified and fixed.
Due to the modular nature of the unit testing, we can test parts of the project without waiting for others to be completed.
Unit Testing Limitations
Unit testing can't be expected to catch every error in a program. It is not possible to evaluate all execution paths even in the most trivial programs
Unit testing by its very nature focuses on a unit of code. Hence it can't catch integration errors or broad system level errors.
It's recommended unit testing be used in conjunction with other testing activities.
Unit Testing Techniques
Structural Techniques
Functional Testing Techniques
Error Based Techniques
Unit Testing Best Practices
Unit Test cases should be independent. In case of any enhancements or change in requirements, unit test cases should not be affected.
Test only one code at a time.
Follow clear and consistent naming conventions for your unit tests
In case of a change in code in any module, ensure there is a corresponding unit Test Case for the module, and the module passes the tests before changing the implementation
Bugs identified during unit testing must be fixed before proceeding to the next phase in SDLC
Adopt a "test as your code" approach. The more code you write without testing, the more paths you have to check for errors.
Summary
As you can see, there can be a lot involved in unit testing. It can be complex or rather simple depending on the application being tested and the testing strategies, tools and philosophies used. Unit testing is always necessary on some level. That is a certainty.
INTEGRATION Testing Tutorial: Big Bang, Top Down & Bottom Up
What is Integration Testing?
In integration Testing, individual software modules are integrated logically and tested as a group.
A typical software project consists of multiple software modules, coded by different programmers.
integration Testing focuses on checking data communication amongst these modules.
Hence it is also termed as 'I & T' (Integration and Testing), 'String Testing' and sometimes 'Thread Testing'.
Why do Integration Testing?:
Although each software module is unit tested, defects still exist for various reasons like
A Module in general is designed by an individual software developer whose understanding and programming logic may differ from other programmers. integration Testing becomes necessary to verify the software modules work in unity
At the time of module development, there are wide chances of change in requirements by the clients. These new requirements may not be unit tested and hence system integration Testing becomes necessary.
Interfaces of the software modules with the database could be erroneous
External Hardware interfaces, if any, could be erroneous
Inadequate exception handling could cause issues.
Please be patient. The Video will load in some time. If you still face issue viewing video click here
Integration Test Case:
Integration Test Case differs from other test cases in the sense it focuses mainly on the interfaces & flow of data/information between the modules. Here priority is to be given for the integrating links rather than the unit functions which are already tested.
Sample Integration Test Cases for the following scenario:Application has 3 modules say 'Login Page', 'Mail box' and 'Delete mails' and each of them are integrated logically.
Here do not concentrate much on the Login Page testing as it's already been done in Unit Testing. But check how it's linked to the Mail Box Page.
Similarly Mail Box: Check its integration to the Delete Mails Module.
Test Case ID
Test Case Objective
Test Case Description
Expected Result
1
Check the interface link between the Login and Mailbox module
Enter login credentials and click on the Login button
To be directed to the Mail Box
2
Check the interface link between the Mailbox and Delete Mails Module
From Mail box select the an email and click delete button
Selected email should appear in the Deleted/Trash folder
Approaches/Methodologies/Strategies of Integration Testing:
The Software Industry uses variety of strategies to execute Integration testing , viz.
Big Bang Approach :
Incremental Approach: which is further divided into following
Top Down Approach
Bottom Up Approach
Sandwich Approach - Combination of Top Down and Bottom Up
Below are the different strategies, the way they are executed and their limitations as well advantages.
Big Bang Approach:
Here all component are integrated together at once, and then tested.
Advantages:
Convenient for small systems.
Disadvantages:
Fault Localization is difficult.
Given the sheer number of interfaces that need to be tested in this approach, some interfaces links to be tested could be missed easily.
Since the integration testing can commence only after "all" the modules are designed, testing team will have less time for execution in the testing phase.
Since all modules are tested at once, high risk critical modules are not isolated and tested on priority. Peripheral modules which deal with user interfaces are also not isolated and tested on priority.
Incremental Approach:
In this approach, testing is done by joining two or more modules that are logically related. Then the other related modules are added and tested for the proper functioning. Process continues until all of the modules are joined and tested successfully.
This process is carried out by using dummy programs called Stubs and Drivers. Stubs and Drivers do not implement the entire programming logic of the software module but just simulate data communication with the calling module.
Stub: Is called by the Module under Test.
Driver: Calls the Module to be tested.
Incremental Approach in turn is carried out by two different Methods:
Bottom Up
Top Down
Bottom up Integration
In the bottom up strategy, each module at lower levels is tested with higher modules until all modules are tested. It takes help of Drivers for testing
Diagrammatic Representation:
Advantages:
Fault localization is easier.
No time is wasted waiting for all modules to be developed unlike Big-bang approach
Disadvantages:
Critical modules (at the top level of software architecture) which control the flow of application are tested last and may be prone to defects.
Early prototype is not possible
Top down Integration:
In Top to down approach, testing takes place from top to down following the control flow of the software system.
Takes help of stubs for testing.
Diagrammatic Representation:
Advantages:
Fault Localization is easier.
Possibility to obtain an early prototype.
Critical Modules are tested on priority; major design flaws could be found and fixed first.
Disadvantages:
Needs many Stubs.
Modules at lower level are tested inadequately.
Integration Testing Procedure
The integration test procedure irrespective of the test strategies (discussed above):
Prepare the Integration Tests Plan
Design the Test Scenarios, Cases, and Scripts.
Executing the test Cases followed by reporting the defects.
Tracking & re-testing the defects.
Steps 3 and 4 are repeated until the completion of Integration is successfully.
Brief Description of Integration Test Plans:
It includes following attributes:
Methods/Approaches to test (as discussed above).
Scopes and Out of Scopes Items of Integration Testing.
Roles and Responsibilities.
Pre-requisites for Integration testing.
Testing environment.
Risk and Mitigation Plans.
Entry and Exit Criteria.
Entry and Exit Criteria to Integration testing phase in any software development model
Entry Criteria:
Unit Tested Components/Modules
All High prioritized bugs fixed and closed
All Modules to be code completed and integrated successfully.
Integration tests Plan, test case, scenarios to be signed off and documented.
Technical documents to be submitted followed by release Notes.
Best Practices/ Guidelines for Integration Testing
First determine the Integration Test Strategy that could be adopted and later prepare the test cases and test data accordingly.
Study the Architecture design of the Application and identify the Critical Modules. These need to be tested on priority.
Obtain the interface designs from the Architectural team and create test cases to verify all of the interfaces in detail. Interface to database/external hardware/software application must be tested in detail.
After the test cases, it's the test data which plays the critical role.
Always have the mock data prepared, prior to executing. Do not select test data while executing the test
What is System Testing? Types & Definition with Example
What is System Testing?
System Testing is the testing of a complete and fully integrated software product. Usually software is only one element of a larger computer based system. Ultimately, software is interfaced with other software/hardware systems.System Testing is actually a series of different tests whose sole purpose is to exercise the full computer based system.
Two Category of Software Testing
Black Box Testing
White Box Testing
System test falls under the black box testing category of software testing.
White box testing is the testing of the internal workings or code of a software application. In contrast, black box or System Testing is the opposite. System test involves the external workings of the software from the user's perspective.
Please be patient. The Video will load in some time. If you still face issue viewing video click here
What do you verify in System Testing ?
System Testing involves testing the software code for following
Testing the fully integrated applications including external peripherals in order to check how components interact with one another and with the system as a whole. This is also called End to End testing scenario..
Verify thorough testing of every input in the application to check for desired outputs.
Testing of the user's experience with the application. .
That is a very basic description of what is involved in system testing. You need to build detailed test cases and test suites that test each aspect of the application as seen from the outside without looking at the actual source code.
Software Testing Hierarchy
As with almost any technical process, software testing has a prescribed order in which things should be done. The following is a list of software testing categories arranged in chronological order. These are the steps taken to fully test new software in preparation for marketing it:
Unit testing - testing performed on each module or block of code during development. Unit Testing is normally done by the programmer who writes the code.
Integration testing - testing done before, during and after integration of a new module into the main software package. This involves testing of each individual code module. One piece of software can contain several modules which are often created by several different programmers. It is crucial to test each module's effect on the entire program model.
System testing - testing done by a professional testing agent on the completed software product before it is introduced to the market.
Acceptance testing - beta testing of the product done by the actual end users.
Different Types of System Testing
There are more than 50 types of System Testing. For an exhaustive list of software testing types click here. Below we have listed types of system testing a large software development company would typically use
Usability Testing -Usability Testing mainly focuses on the user's ease to use the application, flexibility in handling controls and ability of the system to meet its objectives
Load Testing -Load Testing is necessary to know that a software solution will perform under real-life loads.
Regression Testing- - Regression Testing involves testing done to make sure none of the changes made over the course of the development process have caused new bugs. It also makes sure no old bugs appear from the addition of new software modules over time.
Recovery Testing - Recovery testing is done to demonstrate a software solution is reliable, trustworthy and can successfully recoup from possible crashes.
Migration Testing - Migration testing is done to ensure that the software can be moved from older system infrastructures to current system infrastructures without any issues.
Functional Testing - Also known as functional completeness testing, Functional Testing involves trying to think of any possible missing functions. Testers might make a list of additional functionalities that a product could have to improve it during functional testing.
Hardware/Software Testing - IBM refers to Hardware/Software testing as "HW/SW Testing". This is when the tester focuses his/her attention on the interactions between the hardware and software during system testing.
What Types of System Testing Should Testers Use?
There are over 50 different types of system testing. The specific types used by a tester depend on several variables. Those variables include:
Who the tester works for - This is a major factor in determining the types of system testing a tester will use. Methods used by large companies are different than that used by medium and small companies.
Time available for testing - Ultimately, all 50 testing types could be used. Time is often what limits us to using only the types that are most relevant for the software project.
Resources available to the tester - Of course some testers will not have necessary resources to conduct a testing type. For example if you are a tester working for a large software development firm, you are likely to have expensive automated testing software not available to others.
Software Tester's Education - There is a certain learning curve for each type of software testing available. To use some of the software involved, a tester has to learn how to use it.
Testing Budget - Money becomes a factor not just for smaller companies and individual software developers but large companies as well.
Sanity Testing Vs Smoke Testing: Introduction & Differences
Smoke and Sanity testing are the most misunderstood topics in Software Testing. There is enormous amount of literature on the subject, but most of them are confusing. The following article makes an attempt to address the confusion.
The key differences between Smoke and Sanity Testing can be learned with the help of following diagram -
To appreciate the above diagram, lets first understand -
What is a Software Build?
If you are developing a simple computer program which consists of only one source code file, you merely need to compile and link this one file, to produce an executable file. This process is very simple. Usually this is not the case. A typical Software Project consists of hundreds or even thousands of source code files. Creating an executable program from these source files is a complicated and time-consuming task. You need to use "build" software to create an executable program and the process is called " Software Build"
What is Smoke Testing?
Smoke Testing is a kind of Software Testing performed after software build to ascertain that the critical functionalities of the program is working fine. It is executed "before" any detailed functional or regression tests are executed on the software build. The purpose is to reject a badly broken application, so that the QA team does not waste time installing and testing the software application.
In Smoke Testing, the test cases chosen cover the most important functionality or component of the system. The objective is not to perform exhaustive testing, but to verify that the critical functionalities of the system is working fine. For Example a typical smoke test would be - Verify that the application launches successfully, Check that the GUI is responsive ... etc.
What is Sanity Testing?
Sanity testing is a kind of Software Testing performed after receiving a software build, with minor changes in code, or functionality, to ascertain that the bugs have been fixed and no further issues are introduced due to these changes. The goal is to determine that the proposed functionality works roughly as expected. If sanity test fails, the build is rejected to save the time and costs involved in a more rigorous testing.
The objective is "not" to verify thoroughly the new functionality, but to determine that the developer has applied some rationality (sanity) while producing the software. For instance, if your scientific calculator gives the result of 2 + 2 =5! Then, there is no point testing the advanced functionalities like sin 30 + cos 50.
Smoke Testing Vs Sanity Testing - Key Differences
Smoke Testing
Sanity Testing
Smoke Testing is performed to ascertain that the critical functionalities of the program is working fine
Sanity Testing is done to check the new functionality / bugs have been fixed
The objective of this testing is to verify the "stability" of the system in order to proceed with more rigorous testing
The objective of the testing is to verify the "rationality" of the system in order to proceed with more rigorous testing
This testing is performed by the developers or testers
Sanity testing is usually performed by testers
Smoke testing is usually documented or scripted
Sanity testing is usually not documented and is unscripted
Smoke testing exercises the entire system from end to end
Sanity testing exercises only the particular component of the entire system
Smoke testing is like General Health Check Up
Sanity Testing is like specialized health check up
Points to note.
Both sanity tests and smoke tests are ways to avoid wasting time and effort by quickly determining whether an application is too flawed to merit any rigorous testing.
Sanity Testing is also called tester acceptance testing.
Smoke testing performed on a particular build is also known as a build verification test.
One of the best industry practice is to conduct a Daily build and smoke test in software projects.
Both smoke and sanity tests can be executed manually or using an automation tool. When automated tools are used, the tests are often initiated by the same process that generates the build itself.
As per the needs of testing, you may have to execute both Sanity and Smoke Tests on the software build. In such cases, you will first execute Smoke tests and then go ahead with Sanity Testing. In industry, test cases for Sanity Testing are commonly combined with that for smoke tests, to speed up test execution. Hence, it's a common that the terms are often confused and used interchangeably
Please be patient. The Video will load in some time. If you still face issue viewing video click here