In this era of Technology and the Internet, customers want their product to be delivered faster than their competitors. But no one wants a defective software product. Testing plays an important role in improving the quality, reliability & performance of the system.
What is Software Testing?
Types of Software Testing
Testing is an integral part of any successful software project. The types of software testing depend on various factors, including project requirements, budget, timeline, expertise, and suitability. The different Types of software testing are the key role where the tester determines the right testing for the apps.
The two main kinds of testing performed by the QA or Software Tester are:
- Functional Testing
- Non-Functional Testing
What is Functional Testing?
Functional Testing is defined as a type of testing which verifies that each function of the software application operates in conformance with the requirement specification. This testing mainly involves black box testing and it is not concerned about the source code of the application. It focuses on manual testing as well as automation testing.
- User Interface
- APIs
- Database
- Security
- Client/ server applications
- Functionality of the Application Under Test
Functional Testing vs Non-Functional Testing
Functional Testing defines the process of testing and Non-Functional Testing is used to check performance, reliability, usability etc. Let’s have a look at the different parameters based on which we can compare these two types of testing:
Advantages of Functional Testing
Functional testing is important as it verifies that the system is fixed for release and it is error free. Now let’s have a look at some of the advantages of Functional Testing:
- This testing provides a replica of what the actual system is i.e. it is a replica of what the product is in the live environment. Testing is focused on the specifications as per customer usage.
- It does not work on any assumptions about the structure of the system.
- This testing ensures the delivery of a high-quality product which meets the customer requirement and makes sure that the customer is satisfied with the end results.
- It ensures to deliver a bug-free product which has all the functionalities working as per the customer requirement.
- Risk-based testing is done to decrease the chances of any kind of risk in the product.
Steps involved in Functional Testing
There are certain steps that we need to follow while performing functional testing. The various steps involved are:
- The first step is to determine the functionality of the product that needs to be tested and it includes testing the main functionalities, error condition, and messages, usability testing.
- Next step is to create the input data for the functionality to be tested as per the requirement specification.
- In the third step, the output is determined for the functionality under test from the requirement specification.
- Prepared test cases are executed in the next step.
- The final step is to compare the output after executing the test case and expected output in order to find whether the functionality is working as expected or not.
Types of Functional Testing
Functional testing has many categories and these can be used based on the scenario. Let’s have a look at the most prominent types of functional testing:
- Unit Testing – It is usually performed by a developer who writes different code units that could be related or unrelated to achieve a particular functionality. Code coverage is an important part of unit testing where the test cases need to exist to cover line coverage, code path coverage, and method coverage.
- Sanity Testing – It is done to ensure that all the major and vital functionalities of the application/system are working correctly. This is generally done after a smoke test.
- Smoke testing – It is done after each build is released to test in order to ensure build stability. It is also called as build verification testing.
- Regression tests – Testing performed to ensure that adding new code, enhancements, fixing of bugs is not breaking the existing functionality or causing any instability and still works according to the specifications.
- Integration tests – When the system relies on multiple functional modules that might individually work perfectly, but have to work coherently when clubbed together to achieve an end to end scenario, validation of such scenarios is called Integration testing.
- Usability testing – Product is exposed to the actual customer in a production like an environment and they test the product. The user’s comfort is derived from this and the feedback is taken. This is similar to that of User Acceptance testing.
Functional Testing Techniques
The basic approach to testing can be classified into two broad categories:
- Positive testing – Positive tests are happy path tests which are done to ensure that the product means – at least the basic requirements that are vital to the customer usage.
- Negative testing – Negative scenarios ensure that the product behaves properly even when it is subjected to unexpected data.
- End-user based Tests – The system under test consists of many components which achieve the user scenario when they are coupled together.
- Equivalence Tests – In this, the test data are segregated into various partitions called equivalence data classes. Data in each partition must behave in the same way, therefore only one condition needs to be tested. Similarly, if one condition in a partition stops working, none of the others will work.
- Boundary Value Tests – Boundary tests imply data limits to the application and validate how it behaves. If the inputs are supplied beyond the boundary values, then it is considered to be negative testing.
- Decision-based Tests – Decision-based tests concentrate on the ideology of the possible outcomes of the system when a particular condition is satisfied.
- Alternate Flow Tests – Alternate path tests are basically run to validate all the possible ways that exist, other than the main flow to accomplish a function.
- Ad-hoc Tests – When most of the bugs are uncovered through the above techniques, ad-hoc tests are a great way to uncover any discrepancies that are not observed earlier.
Tools for Functional Testing
The market is full of a number of automation tools for test management, load testing, GUI testing, functional testing, etc. I would suggest you opt for a tool which is on-demand, easy to learn as per your skills, generic and effective for the required type of testing.
Some of the most preferred tools for functional testing are:
- Ranorex
- Selenium
- Test IO
- Telerik
- CUIT
Selenium is one of the most preferred tools for testing. Let’s have a look at how it is used for automation testing.
Automation Testing using Selenium
In order to identify web elements accurately and precisely, selenium makes use of different types of locators. They are as follows:
- Id locator
- Name locator
- linkText & Partial linkText
- CSS Selector
- XPath
All these locators are explained in Locators in Selenium. Now let’s have a look at an example that will navigate through a particular web page with the help of automation tools.
So here I am taking the example of edureka blog page. First, I will launch Google Chrome and navigate to edureka.co. Now I want it to open the interview questions inside the blog web page.
Find out our Automation Testing Training in Top Cities/Countries
India | USA | Other Cities/Countries |
Bangalore | New York | UK |
Hyderabad | Chicago | London |
Pune | Dallas | Canada |
Chennai | Atlanta | Australia |
Charlotte | Singapore | |
Washington | UAE |
Now, to locate any particular link inside a web page, you have to use LinkText locator. Suppose you want to locate ‘Interview Questions‘ link as shown in the above figure. How will you do that?
Let me take you through the steps.
On inspecting “Interview Questions” – you can notice that it starts with an anchor tag. But, this anchor tag doesn’t have any name and Id attributes. In such cases, you can use linkText locator.
As you can see in the above snippet, it has a text called “Interview Questions”. I will make use of that text and use a linkText locator to write my code as shown below:
package Edureka; import java.util.concurrent.TimeUnit; public class Example { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:Selenium-java-edurekachromedriver_win32chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.manage().deleteAllCookies(); driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get("https://edureka.co/blog"); driver.findElement(By.linkText("Interview Questions")).click();//linkText locator for links
When you run the above Java program, chrome driver will launch Google Chrome, redirect to edureka blog page and navigate to the interview questions page.
So everything that you would have done manually to navigate to the different pages and links, it is done automatically with the help of automation tools such as Selenium.
Now with this, we come to an end to this What is Functional Testing? article. I hope you guys enjoyed this article and understood how to perform testing with the help of automation tools.
Functional Testing Tutorial | Edureka
This edureka video on “Functional Testing Tutorial” will help you know about Functional Testing and the different techniques involved in it. It will provide an example of how to perform automation testing with Selenium.
If you wish to learn Selenium and build a career in the testing domain, then check out our interactive, live-online Selenium Certification Training here, that comes with 24*7 support to guide you throughout your learning period.Got a question for us? Please mention it in the comments section of What is Functional Testing? article and we will get back to you.