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

Manual Testing Tutorial for Beginners

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:

Myth: Anyone can do manual testing

Fact: Testing requires many skill sets

Myth: Testing ensures 100% Defect free product

Fact: Testing attempts to find as many defects as possible. Identifying all possible defects is impossible.

Myth: Automated testing is more powerful than manual testing

Fact: 100% test automation cannot be done. Manual Testing is also essential.

Myth: Testing is easy

Fact: Testing can be extremely challenging .Testing an application for possible use cases with minimum test cases requires high analytical skills. 

Manual Testing vs Automation Testing

Manual TestingAutomated Testing
Manual testing requires human intervention for test execution. Automation Testing is use of tools to execute test cases
Manual testing will require skilled labour, long time & will imply high costs. Automation Testing saves time, cost and manpower. Once recorded, it's easier to run an automated test suite
Any type of application can be tested manually, certain testing types like ad-hoc and monkey testing are more suited for manual execution. Automated testing is recommended only for stable systems and is mostly used for Regression Testing
Manual testing can be become repetitive and boring. The boring part of executing same test cases time and again, is handled by automation software in Automation Testing.

Tools to Automate Manual Testing

 

Conclusion

Manual testing is an activity where the tester needs to be very patient, creative &  open minded.

They need to think and act with an End User perspective.

 

 

AUTOMATION TESTING Tutorial: Process, Planning & Tools

 

 

What is Automation 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?

 AUTOMATION TESTING Tutorial: Process, Planning & Tools

 

Automated software testing is important due to following reasons:

Which Test Cases to Automate?

Test cases to be automated can be selected using the following criterion to increase the automation ROI

 

The following category of test cases are not suitable for automation:

 

Automated Testing Process:

Following steps are followed in an Automation Process

 AUTOMATION TESTING Tutorial: Process, Planning & Tools

 

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:

Planning, Design and Development

During this phase you create Automation strategy & plan, which contains following details-

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

There are four types of framework used in automation software testing:

  1. Data Driven Automation Framework
  2. Keyword Driven Automation Framework
  3. Modular Automation Framework
  4. Hybrid Automation Framework

Automation Tool Best Practices

To get maximum ROI of automation, observe the following

The above guidelines if observed can greatly help in making your automation successful.

Benefits of Automation Testing

Following are benefits of automated testing:

 AUTOMATION TESTING Tutorial: Process, Planning & Tools

Different types of software testing that can be automated

How to Choose an Automation Tool?

Selecting the right tool can be a tricky task. Following criterion will help you select the best tool for your requirement-

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

  1. 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:

Download Tricentis

  1. Selenium

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.

Download Selenium

  1. QTP (MicroFocus UFT)

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.

Download QTP

  1. Rational Functional Tester

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

Download Rational Functional Tester

  1. WATIR

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.

Download Watir

  1. SilkTest

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

Download SilkTest

Conclusion

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 TestingIntegration 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 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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:

 

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 -

UNIT Testing Tutorial - Learn in 10 Minutes

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

 

Unit Testing Limitations

It's recommended unit testing be used in conjunction with other testing activities.

Unit Testing Techniques

Unit Testing Best Practices

UNIT Testing Tutorial - Learn in 10 Minutes

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

 

 

 

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 IDTest Case ObjectiveTest Case DescriptionExpected 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.

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:

Disadvantages: 

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 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:

INTEGRATION Testing Tutorial: Big Bang, Top Down & Bottom UpAdvantages:

Disadvantages: 

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:

INTEGRATION Testing Tutorial: Big Bang, Top Down & Bottom UpAdvantages:

Disadvantages: 

 

Integration Testing Procedure

The integration test procedure irrespective of the test strategies (discussed above):

  1. Prepare the Integration Tests Plan
  2. Design the Test Scenarios, Cases, and Scripts.
  3. Executing the test Cases followed by reporting the defects.
  4. Tracking & re-testing the defects.
  5. Steps 3 and 4 are repeated until the completion of Integration is successfully.

Brief Description of Integration Test Plans:

It includes following attributes:

Entry and Exit Criteria.

Entry and Exit Criteria to Integration testing phase in any software development model

Entry Criteria:

Exit Criteria:

Best Practices/ Guidelines for Integration Testing

 

 

 

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

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 ?

What is System Testing? Types & Definition with Example

System Testing involves testing the software code for following

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:

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

  1. 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

  2. Load Testing - Load Testing is necessary to know that a software solution will perform under real-life loads.

  3. 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.

  4. Recovery Testing - Recovery testing is done to demonstrate a software solution is reliable, trustworthy and can successfully recoup from possible crashes.

  5. 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.

  6. 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.

  7. 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:

 

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 -

 

Sanity Testing Vs Smoke Testing: Introduction & Differences

 

 

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 TestingSanity 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 is a subset of Acceptance testing Sanity testing is a subset of Regression Testing
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.

 

 

Please be patient. The Video will load in some time. If you still face issue viewing video click here

Read more about Smoke Testing over here