Google News
logo
Functional Testing Interview Questions
Functional testing is black-box testing which is used to test the functionality of the system by providing certain valid inputs to generate the desired output. Functional testing not only determines the functionality of the system as per requirement but also determines whether the software is ready to release at the end-user environment or not.
 
There are two ways to do functional testing, and those are :
 
Functional testing manually : manual testing involves a human performing all the processes of testing step by step.
 
Functional testing through the automatic process is done without any human assistance, and the automated process is often done with tools and software.
 
There is a similarity in both of the functional testing processes. Both processes include testing the application using inputs and verifying and determining the output or result after comparing the work with expected results. Functional testing has various phases that are done while testing an input. Functional testing is done to ensure that the current functionalities of the application or software are ready to use.
Unit testing : before testing the entire software, it is valid to check individual parts of the software and know if they work correctly. Unit testing contains the function of a unit and ensures that (one to a few) every input should result in the expected output. The unit test is done through the process of automation. 

Component testing : module testing is another name of component testing. The application’s part is checked in the process of component testing. The method of component testing is quite similar to unit testing. The component testing assesses a part of the software in isolation from the broader system. The difference between component testing and unit testing is that the testers or developers do the component testing in a format of a black box to ensure and verify that individual objects and parts of the software are proper. Developers do the other unit testing in the form of white box to check that program modules execute.

Smoke testing : Is a type of acceptance testing that provides an initial check that new software built should be critical functionality is stable. If the software passes the smoke test, then the software will be sent to test further. Build verification testing is another name for smoke testing. The smoke testing checks whether new or critical functionality meets the objective. If any software doesn’t pass the smoke test, the function says, “where there’s smoke there is fire,” so it’s stated that additional development work is required.

Sanity testing : it is a type of regression testing. Professionals QA performs sanity testing on new versions of stable builds to check if there is any new functionality or any bug fixes. With the same capacity of smoke testing, sanity testing also provides a gate check that software is ready for more testing. Sanity testing usually checks that area that has undergone a code change.

Regression testing : after passing a single functional test, it doesn’t mean that the entire test is passed. When a developer changes the code or changes a feature, the software runs a regression test to ensure that the functions are as expected. In the process of regression testing, a stable product is maintained after the changes are made.

Integration testing : it is often done in pairs with unit tests. At the time of integration testing, QA professionals go through and check whether the individual module of code work is going together as expected or not. Many modern applications run on microservices and self-contained applications that are designed to handle a specific task. The application won’t work as intended if the microservices will not communicate with each other. The integration testing is to be done to ensure these components together operate and communicate together seamlessly.

API testing : application programming connects different applications or systems, and they are gaining popularity because every consumer is expecting apps to interoperate. In API testing, a tester validates and ensures that API connections and responses function as intended; they also include handling data and user permissions.

UI testing : in the UI type of testing, QA professionals interact with the graphical interface of a problem software program. The UI testing includes the tests related to controls of the UI, for example, buttons, text input, and menus, for ensuring that the experience flow and features chosen are optimal for the user experience. 

System testing : With system testing, QA professionals test the entire software as a complete product. With system type functional testing, the tester validates and confirms the integrated and comprehensive software package to make sure that the software product meets the client’s requirements and expectations. In the process of system testing, a tester can review the functional aspect and performance of the app or website without knowing the way it was programmed. The system testing helps a team to develop test cases that are to be used for moving forward. End-to-end testing is another name of system testing.

White-box testing : all the details of software internal infrastructure like code and design are visible to the tester and developer, then the case is called white box testing. In the approach of white box testing, a system includes many functional testing types, including unit and system testing. The tester can assess all of the given features individually. 

Black box testing : contrary to white box testing, black box testing involves testing against a system where the internal code, paths, and infrastructure are not visible. The tester uses the black box testing method to ensure the expected output against specific inputs.

Alpha testing : as a subset of acceptance testing, alpha testing evaluates the product using internal team members. Not involving the development and testing, the team members should know about the project.

Beta testing : after fixing all bugs and testing the product, beta testing occurs with a select group of end-users. Beta testing serves as a soft launch that enables the client to get feedback from the actual user that does not know the given app.

Acceptance testing : the goals set in business requirements should match the end-user software; this is the primary goal of acceptance testing. The acceptance type of testing involves reviewing feature-complete applications and having an end-to-end experience of the software.

Production testing : after the product is public, the product will be in a live production environment where any users can interact with the product anyway. There is no need for the client to control everything from the testing environment to the product. 
Validating/Testing the quality and functionality of software requires functional testing. The purpose is as follows :   
 
* Ensures the delivery of high-quality products.

* In essence, this testing method is utilized for testing user-friendliness features, specific error conditions, accessibility features and other important features of the software.

* This allows testers to verify that the software they test works as intended and gives developers feedback about how to improve software products.

* Functional testing is crucial to determine whether your code is working correctly or if errors are likely to arise in the future.

* A quality assurance team uses this software testing technique to ensure software functionality is in line with the Software Requirements Specification (SRS) and to ensure the system functions as intended by the user.
Build is an executable file that refers to that part of an application that is handed over to a tester to test the implemented functionality of the application along with some bug fixes. The build can be rejected by the testing team if it does not pass the critical checklist which contains the major functionality of the application.
 
There can be multiple builds in the testing cycle of an application.
 
Release refers to the software application which is no longer in the testing phase and after completion of testing and development, the application is handed over to the client. One release has several builds associated with it.
Functional testing Nonfunctional testing
This is performed to check the behavior of the system as per the functional requirements of the client. This is a process of testing that is done in order to determine the performance of the system as per the expectations of the client.
There are two tools for functional testing and they are manual testing tools and automation testing tool. With effective and efficient tools that are required, nonfunctional testing is done after the process of functional testing
It is easy to do manual testing as the given input of functional testing is client requirements. It is difficult to perform manual testing as the reliability, speed, scalability and other parameters are the input in nonfunctional testing.
Following are the types in functional testing:Testing unitSmoke testingIntegration testingUser acceptance testingRegression testingSanity testing There are following types in nonfunctional testing:Load, volume and stress testTesting of performanceTesting of securityTesting of compatibility.
bug cycle is known as unwanted error, flaw, mistake, etc. That is inside the application. The bug cycle prevents the product from becoming the desired output. Whenever a bug is found or a defect encountered in an application while the time of testing from the entire logging process is done till it is revolved. A bug will move through a fixed life cycle that is known as a bug life cycle. 
 
The whole process of the bug cycle starts from the encounter of the bug or issue. First, the bug will be reported in a tool named bug tracking. Then the bug will be handed over to the developer, and the bug’s status will be ‘open’. The developer will now review the given bug and start working on the bug.
The testing named as data-driven is a methodology where the test script with the test cases are run continuously by using few new data sources like an XML file, CVS File for the values of input and actual output will be compared to the expected software in the process of verification. For instance, a test studio is a tool used for data-driven testing.
 
Advantages of data-driven :
 
* Repeatability in output
* Separation of test logic from test data
* The reduction in the number of test cases
Understand the requirements : Prior to conducting functional testing, it is necessary to thoroughly understand the business requirements. Understand the requirements document specification and clarify any doubts and queries if there are any.

Prepare a test plan : An effective test plan is critical for successful functional testing. Test engineers need to focus on the objectives of tests so that planning and organizing test activities will become easier.

Write test cases : Write the test cases considering the software requirements and keeping all of the test scenarios in mind.

Create input data according to requirements : Testers need to prepare input data to test specific functionality of software applications. When this type of data is used to test an application, it is referred to as test input data. From these inputs, determine what the expected outcome should be.

Execute test cases : Next, the test input data is used to execute the test cases.

Compare actual and expected outcomes through the result validation : In this step, the actual test results are compared with the expected results to determine whether the test has passed or failed.

Log defects : The variation of the difference between the actual and expected output is referred to as a log defect. It is the task of the testers to log defects so that the development teams can fix them as soon as possible.
A defect is any error in an application that disrupts the normal flow of operation. It is your job as a functional tester to locate and eliminate as many bugs as possible before they reach the customer.
 
Each defect has a life cycle that determines its current state. The interviewer wants you to explain this life cycle in detail; that way, they can assess your tester skill sets and overall approach to addressing bugs. Use examples from previous projects if you can.
 
Defect life cycle states :
 
New : Any recently located bugs are given a “new” status

Assigned : The new defect is assigned to a development team for correction

Open : Analysis and corrective actions begin

Fixed : All changes to the defect are completed

Pending Retest : The developer reassigns the defect back to the tester

Retest : the tester verifies the fixed defect

Verified Closed : With no additional flaws, the test cycle is verified and closed
Stress Testing is a form of performance testing where the application is bound to go through exertion or stress i.e. execution of application above the threshold of the break to determine the point where the application crashes. This condition usually arises when there are too many users and too much of data.
 
Stress testing also verifies the application recovery when the work load is reduced.
 
Load Testing is a form of performance testing where the application is executed above various load levels to monitor peak performance of the server, response time, server throughput, etc. Through load testing process stability, performance and integrity of the application are determined under concurrent system load.
Volume testing is a form of performance testing which determines the performance levels of the server throughput and response time when concurrent users, as well as large data load from the database, are put onto the system/application under tests.
* Writing a test case is said to be the most important activity of the test execution process which requires writing skills as well as in-depth knowledge of the application to make effective and reusable test cases.
 
Few important points that should be considered while writing test cases includes :
 
* There should be a clear understanding of the client’s requirements before beginning to write the test cases. Nothing should be assumed and every doubt regarding the requirements should be cleared.

* Every requirement should be included in the form of test cases and nothing should be left out. Usually Traceability matrix is maintained to keep a check on every requirement implementation and testing completion.

* As per the requirement document specifications, every functional and non-functional requirement including UI interface, compatibility should be covered.

* Test cases should be checked from time to time for no repetition or redundancy.

* Priority is an important factor that should be set for test cases while writing. This priority helps the tester to test the application first with the high priority tests cases which include basic functionality, then the medium and later the low priority test cases.

* For a particular release, test cases can also be built Sprint wise so that the tester, as well as the developer, can analyze the quality of the product based on test case execution.

* Structure of test cases should be easily understood and must be in a simple language. The input data values for test cases should be valid as well as in a wide range.
There are two different test techniques that are used in functional testing.
 
Requirement based testing : This form of functional testing is performed prioritizing the requirements on the basis of risk criteria. This also assures that all the critical test paths have been included in the testing process.

Business process-based testing : This form of functional testing is performed from the business process perspective. The scenarios include knowledge of business processes for performing testing.
Testing software or applications aims to build a quality product. Functional testing and unit testing are the backbones of software testing.  
 
Unit Testing : In its simplest form, unit testing entails testing individual components or units within the software. In this step, each unit of code is validated and checked to determine if it is performing as you expected it to.

Functional Testing : This type of software testing evaluates a system's functionality against the functional requirements. Each software component is first checked for its expected output, then tested twice to ensure that its output does not impact the rest of the system.

Unit Testing  Functional Testing
In this type of test, the smallest units or modules are tested individually. It verifies that an application performs as expected. 
It is possible to find issues that crop up frequently in modules by running unit tests. A functional test identifies the issues preventing an application from performing correctly. This may include scenario-based issues as well. 
There is no chance for the issue to escape. As the number of tests to run is always infinite, there is a higher chance of issues escaping. 
In other words, it is a form of white-box testing. Essentially, it is black-box testing. 
A unit test is fast and can help write clean code, but it cannot assure that the app will work as intended. It shows us where errors are in the code, though. A functional test takes time and effort but ensures the system will meet functional requirements. The test identifies any problems or defects in the functionality. 
Adhoc Testing, also known as random testing, generally refers to a type of testing that occurs without proper planning or documentation. Adhoc testing has 
 
* No documentation
* No Test cases
* No Test Design
 
Ad hoc testing is usually performed randomly without documentation or testing design and it is usually unplanned. Ad hoc Testing does not adhere to any particular structure and is done randomly on any part of the application to identify defects/bugs. When time is limited and exhaustive testing cannot be performed, adhoc testing may be conducted. The tester needs to have a thorough understanding of the system under test in order to conduct effective adhoc testing.
There are two different types of software testing that can be run on the software: monkey testing and adhoc testing. Tests are conducted to ensure that the system is bug-free. 
 
Adhoc Testing : It is usually performed randomly without documentation or testing design and it is usually unplanned. The tester needs to have a thorough understanding of the system under test in order to conduct effective adhoc testing. It is meant to ensure that the application or system does not crash. 

Monkey Testing : This is similar to Ad Hoc Testing, except that it can be done by testers without any prior knowledge or information about the software. The monkey test is an automated test conducted without planning any specific test in advance. A tester tests the system by randomly trying its features to see if he can break it.
Enlisted below are the possible scenarios that can be performed to fully test the login feature of any application :
 
* Check the input fields i.e. Username and password with both valid and invalid values.

* Try entering valid email id with an incorrect password and also enter an invalid email and valid password. Check for the proper error message displayed.

* Enter valid credentials and get logged in to the application. Close and reopen the browser to check if still logged in.

* Enter the application after logging in and then again navigate back to the login page to check whether the user is asked again to log in or not.

* Sign in from one browser and open the application from another browser to verify whether you are logged into another browser also or not.

* Change password after logging into the application and then try to login with that old password.

There are few other possible scenarios as well which can be tested.
Accessibility testing is a form of usability testing where testing is performed to ensure that the application can be easily handled by people with disabilities like hearing, color blindness, low visibility etc. In today’s scenario, the web has acquired the major place in our life in the form of e-commerce sites, e-learning, e-payments, etc.
 
Thus in order to grow better in life, everyone should be able to be a part of technology especially people with some disabilities.
 
Enlisted below are a few types of software which help and assist people with disabilities to use technology :
 
* Speech recognition software
* Screen reader software
* Screen magnification software
* Special keyboard
Alpha Testing Beta Testing
Testers within the organization are responsible for performing Alpha Testing.  Beta testing is carried out by a few individuals/clients/users outside the organization.
During Alpha Testing, reliability and security are not thoroughly tested. While Beta Testing, the product's availability, security, and robustness are examined. 
Blackbox and Whitebox testing are both included in Alpha Testing.  Blackbox testing is mostly involved in Beta testing.
Issues and bugs encountered in Alpha Testing are immediately addressed and fixed. The majority of the issues and feedback from the beta testing will be implemented in the next software product version. 
During Alpha testing, quality is ensured before moving on to Beta testing.  During beta testing, the focus is not only on the quality of the product but also on gathering users' feedback and assessing whether it is ready for real-world usage.
Before launching the product into the market, it undergoes alpha testing. During the marketing of a software product, beta testing is conducted.
Risk-Based Testing refers to the process of prioritizing tests according to risk, which is used as a basis for developing a Test Strategy. An organization can use Risk-Based Testing (RBT) to prioritize testing software features and functions according to the probability of failure, the importance of the feature, and the impact of a failure. Testing is then performed, starting with the highest risk. Testers who use a risk-based approach are more likely to be aware of risk factors that can lead to project failures.
 
Following are the main factors to be considered in risk-based testing :  
 
* Identification of when and how risk-based testing should be implemented on an appropriate application.
* To determine which measures are effective in detecting as well as handling risks in critical areas of the software application.
* Achieving the project outcome while balancing risk and quality.
21 .
RTM stands for Requirement Traceability Matrix, which is a tool that is used to keep the track of requirement coverage over the process of testing. As soon as the requirement document received, the RTM is created based on the requirements and maintain until the release of the system or application. RTM is maintained to keep track that everything mentioned in the requirements specification has been implemented before the release of the system.
Equivalence partition is a black box testing technique where input data is divided into data classes. It is done in order to reduce the number of test cases and covers the maximum requirements. The equivalence partition technique is applied where input data values are divided into ranges.
The boundary value analysis is a technique for testing the boundary value of an equivalence class partition. A boundary value analysis identifies errors at the boundaries, opposed to within ranges in equivalence partitioning.  
 
Example : Consider an input field in an application that can accept a minimum of 5 characters and a maximum of 10 characters. We were able to split our test cases into three equivalence classes composed of invalid and valid input. Then 5-10 is considered as valid and <4 and >10 is considered as invalid. 
 
Test cases for application input field accepting numbers between 5-10 using boundary value analysis : 
 
The valid partition : Between values 5-10 (For this test case, we will use the same test data as the input boundaries of the input domain, namely values 5 and 10).
 
The first invalid partition : <5 (The test data value for this case will be just below the edge/boundary of the input domain, i.e., value 4). 

The second invalid partition :
>10 (The test data value for this case will be just above the edge/boundary of the input domain, i.e., value 11).
Functional Testing Structural Testing
The purpose of functional testing is not only to validate a software system or component against the various functional specifications and requirements defined but also to verify whether it is ready to be deployed into the live environment. This test evaluates a software's internal design or the structure of its code. It is also called white-box testing, clear box testing, or glass box testing.
Functional testing is a black-box test since no knowledge of the internal logic of the system is used to create test cases. Structured testing demands fundamental knowledge of a programming language, as opposed to functional testing. In order to implement structural testing, the test engineer should have thorough knowledge of the code's internal execution and the software's implementation.
Some types of functional testing include system testing, regression testing, sanity testing, and user acceptance testing. Among the structural testing techniques are path testing, code coverage testing, logic testing, etc. 
Each tester should be responsible for understanding the client's requirements and ensuring that the output product is error-free. To accomplish this goal, the QA team must create test cases after thoroughly analyzing the requirements. As a result, the client's software requirements need to be divided further into different scenarios and finally into test cases. Each of these cases needs to be tested separately. 
Defect Severity is defined by the level or the degree of impact by the defect on the application under test. Higher the severity of the defect, the more is the impact on the application.
 
Following are the 4 classes in which a defect severity is categorized :
* Critical
* Major
* Medium
* Low

Defect priority defines the order in which the defect should be resolved first i.e. the higher the priority of the defect implies that the application is unusable or stuck at some point and the defect should be resolved as soon as possible.
 
Following are the 3 classes in which a defect priority is defined :
* High
* Medium
* Low
Smoke testing : This test only examines the basic functionality of a system to ensure the software works properly (or is not plagued with too many problems) so that the next test can proceed.

Sanity testing : This type of testing is also known as a build-verification test and is usually performed after a smoke test. The testing is performed after a complete software build with minor changes is released to verify that the code changes introduced continue to work as intended.

Smoke Testing  Sanity Testing 
Smoke testing is done to assure that the acute functionalities of the program are working fine.  After receiving a software build that has undergone minor code or functionality changes, sanity testing is conducted to ensure that bugs have been fixed and that there are no further problems that can be introduced by the changes. 
It is possible to perform smoke testing manually or with the help of automation tools.  It is common to perform sanity testing manually, not through automation.
Both developers and testers perform smoke testing.  Testers perform sanity testing.
There is documentation or scripting for smoke testing.  There is no documentation for sanity testing.
Retesting Regression Testing
During retesting, testers make sure that all test cases that failed during the last execution are passed after the defects are fixed. This type of testing makes sure that alterations to the code won't affect the system's functionality.
Upon fixing the defects, re-testing is carried out. The purpose of this test is to ensure that adding fresh code, improvements, or fixing bugs does not cause instability or compromise the software functionality.
Retesting involves defect verification. Regression testing does not include defect verification. 
Retesting cannot be automated. Regression testing can be automated because it is time-consuming and expensive to do manually. 
Test cases that failed generically are subjected to this type of testing.  Test cases that pass generically are subjected to this type of testing.
User Acceptance Testing is usually performed after the product is thoroughly tested. In this form of testing, software users or say, client, itself use the application to make sure if everything is working as per the requirement and perfectly in the real world scenario.
 
UAT is also known as End-user testing.
BAT (Build Acceptance Testing), also known as BVT (Build Verification Testing), is a type of software testing intended to ensure the most important functions are working properly when new code is implemented. Based on the results of this testing, a software build can be considered stable enough to continue for further testing. Basically, it's a set of tests that are run on each new build in order to verify that it conforms to the requirements of the build before sending it to the testing team for further examination. BAT processes are typically automated. In the event BAT fails, then that build will be assigned to a developer for the fix once again. 
* Enhanced coverage and efficiency of testing.  
* Testers are less concerned with the possibility of unstable builds.  
* All builds are tested daily, so any major issues can be caught early.  
* Testing is automated, so there is no need for manual intervention.
 
Following are the benefits of test reports :
 
* Test reports can know the current status and quality of a product
* The stakeholders and customers can take action with the help of test reports
* The test reports will help in analyzing different phases of the project.
Every feature/function of a piece of software should be tested thoroughly before it's released, and many of them should be continually tested. The functional test cases are the documents written by QA managers for the purpose of conducting functional testing. Functional test cases inspect the software's functionality across a range of actions or conditions to ensure the desired outcome. Following are the features of a functional test case: 
 
* Name or description of the function/feature.  
* The preconditions for testing. 
* The steps needed to test. 
* The expected outcome/result.  

All of these provide the tester with everything they need to satisfy the test case requirements. It is also a good idea to write the location of the function in the description section, especially if the app is very large and complex, or if the same function is found in some different areas of the app.
The most likely scenario is that you need to conduct regression testing in order to cover parts of the product that may be impacted by any new updates or product releases. The tester, in addition to testing the product's core features or functionality, should also list any areas that are affected by this function or prone to breaking due to high usage and complexity of coding.  
 
In order to get a fresh perspective on test coverage, test cycles should be scheduled over two or three days. When strategizing and writing test cases, testers should open the app so they can ensure they aren't overlooking a function or feature they would have missed otherwise.
The functional test cases are :  
 
The new task to be assigned :  Consider the case of assigning a new task to an appropriate user. 

Description : Create a new task and assign it to an appropriate user.  

Preconditions : When the user gets assigned, he/she should be enabled to receive email notifications.  

Steps :
Create two separate user profiles, each with an email address.  
Create a new task using one of the accounts.  
Assign the task to your other user account.  

Expected result : The user should receive an email confirming that they are assigned a task.