Table of Contents
–> What is Functional Testing?
FUNCTIONAL TESTING is a type of software testing technique to verify the functional requirements and specifications of the software application. The purpose of Functional Testing is to test each function of the software application by giving the value, determining the output, and verifying the actual output with the expected value and to assure that the software system is Bug- free. It mainly involves black-box testing technique, because it focuses on application specification rather than actual code. It can be either done manually or using automated tools. so lets discuss about System Testing and Integration Testing.
What are the common types of Functional Testing?
- Unit Testing: Unit testing is a type of testing performed by developers, where the individual unit or component of the software tested to ensures that the individual modules work correctly and can be integrated with other modules.
- Integration Testing: Integration testing is performed after unit testing. It is done to ensure that individual modules work as expected when operating in combination with each other.
- System Testing: The application as a whole is tested against its requirement specifications. Done after integration testing.
- User Acceptance Testing/Beta Testing: Actual users test software to determine whether it can handle required tasks in Real- World scenarios, according to specifications.
- Smoke Testing: Smoke testing is a type of testing that includes only the basic (feature) functionality of the system. It is done when a new build is released to ensure build stability. Also known as “Build Verification Testing.”
- Sanity Testing: Usually done after smoke testing to ensure that all the major and vital functionalities of the application/system are working correctly, both by itself and in combination with other elements.
- Regression Testing: Testing performed to ensure that the addition of new code and bug fixes (due to which code changes) does not break existing functionality of the system.
- White box testing: The internal structure/design/ coding are tested to verify input-output flow and improve design, usability, and security. The code is visible to tester. Also known as Clear Box testing, code-based testing, structural testing, extensive testing, and glass box testing, transparent box testing.
- Black box testing: The functionalities of software applications are tested without having knowledge of the internal structure/ design/ implementation details. It mainly focuses on input and output of software applications. The primary source of black box testing is software requirements and specifications stated by the customer. Black Box Testing is also known as behavioral, opaque-box, closed-box, specification-based or eye-to-eye testing.
- Database Testing: Database testing is a type of testing which checks the schema, tables, triggers, etc. of the database under test. It involves creating complex queries o the database for performing the load or stress test and checks data integrity and consistency.
Other classifications of functional testing include Grey Box Testing, Component Testing, API Testing, Retesting, Recovery Testing, Ad-hoc testing etc.
Why Functional Testing is Required?
Functional testing checks the functionality of the software system and ensures that all are working as intended and fixed for release. You may not accurately understand it without a functional testing. Functional testing is required to ensure a product performs as expected and to analyse individual portion to verify that they all work together properly.
Who Performs Functional Testing?
Mostly, QA Team performs functional testing. Unit Testing and Unit Integration White Box Testing is done by Developers for their developed code. User Acceptance Testing (UAT) is done by the Client side
Various types of Functional Testing Tools-
- Selenium– open-source automated testing suite for Web applications. It supports different Operating systems (Windows, Mac, Linux) and browsers (Chrome, Firefox, IE, and Headless browsers). Test scripts are written in programming languages like Java, PHP, Groovy, Perl, C#, Python, Ruby, and Scala and more.
- Tricentis Tosca– it is a paid automation tool for functional and regression testing. It helps in continuous and rigorous testing of GUIs and APIs from a business perspective.
- Katalon Studio– is a free and automation testing solution for Web, Mobile, and API testing. It works on Windows, Linux, and Mac with modern methodologies. It takes benefits of top two testing frameworks Selenium and Appium with a specialised IDE
- UFT (Unified Functional Testing)-Unified Functional Testing (UFT) is an automation tool for functional and regression testing introduced by Micro Focus. Visual basic scripting is used to automate the scripts. It’s a commercial tool so that automation testing is expensive due to licensing.
- Watir– it is an open-source tool for automating web browsers. Watir does not have an official IDE for recording and editing test scripts. To use Watir Web driver, hand written test scripts using Ruby is needed.
- Telerik Test Studio– It is a paid testing tool which is a solution for functional, exploratory, performance as well as load testing
- SoapUI– It is an open-source tool for functional, load, compliance and security testing. It work/test with SOAP and REST interfaces to ensure interoperability of different applications.
- Appium– is the most popular and open-source tool for automating native, mobile web, and hybrid applications on iOS mobile, Android mobile, and Windows desktop platforms.
- Ranorex– Ranorex Studio is a very powerful tool to automate tests for web, mobile, and desktop testing. Ranorex does not have its own scripting language to automate. It uses programming languages such as java, VB.NET and C# etc.
–> Top 20 ultimate questions regarding Functional Testing
- What t is Functional Testing?
Functional Testing is a software testing technique used to validate the software system against the functional requirements/specifications.
- What is the purpose of Functional Testing?
The main purpose of Functional testing is to test each function by offering appropriate input and verifying the output against the Functional requirements of the software application.
- What is a critical bug in Functional Testing?
A bug that can affect the majority of the functionality of a specific software application and further testing on the software becomes impossible since such bugs exist in the software.
- Why should we test?
It is essential to test to verify that the product or software built meets customer’s expectation or exceeds customer expectation. Testing ensures the product has no serious anomalies It is required to produce a quality product which ensure customers reliability and satisfaction.
- What will you do as a tester when encountering a bug?
When a bug is found first check the status of the bug, then check whether the bug is valid or not and then submit a bug report. Reported bug should be assigned and communicated to developers who can fix it.
- What are different Testing Levels?
- Unit Testing: The first level of testing involves analysing individual unit or component of the software application.
- Integration Testing: It is done to ensure that individual modules work as expected when operating in combination with each other. Integration testing comes after unit testing.
- System Testing: All components of the system are combined and tested for compliance and correctness against requirements.
- Acceptance Testing: User acceptance testing (UAT) and is done by the customer or end-user before accepting the final product.
- What is a positive test case?
In positive Testing tester puts a valid input and expects some action to be completed according to the specification.
- What is a negative test case?
Negative test cases try to break the system by providing invalid input or following path not proposed and to receive errors. Main intension here is to uncover hidden defects, that will otherwise remain in the software.
- How many different ways you can test software?
Manual and automation are the 2 different ways.
Manual Testing – In manual testing tester manually executes test cases in order to identify bugs without using any automated tool.
Automation Testing – Automation Testing is a software testing technique where a tester writes a script that gets executed with help of special automated testing software tools.
- What are the main advantages of Automation testing?
- It helps in parallel execution
- Re-usability of scripts
- Maximum test coverage
- Less maintenance cost and manual intervention
- Early bug Detection
- Encourage unattended execution
- How many test cases can you automate in a day?
It completely depends on the test case complexity and size. It also depends on the test case complexity and size. Some test cases have few test steps, and some have more. If normal complexity 3-5 test cases can be automated and in case if complexity is high 2-3 test cases can be automated.
- What is defect severity and defect priority?
Defect Severity is a level or the degree of impact by the defect on the application under Test.
Defect Priority indicates how soon the bug should be fixed.
- Classification of defect severity and defect priority?
Defect severity can be:
Defect priority can be:
- When should testing be stopped?
It depends on the risks for the system being tested. You can stop testing when below mentioned criteria’s meet.
- Deadlines (Testing, Release).
- Test budget has been depleted.
- Bug rate fall below certain level.
- Test cases completed with certain percentage passed.
- Alpha or beta periods for testing ends.
- Coverage of code, functionality or requirements are met to a specified point.
- Difference between defect, error, bug, failure and fault?
A mistake in coding is called error. Error found by tester is called defect. Defect accepted by development team then it is called bug. Build does not meet the requirements then it is failure.
- What is Ad Hoc Testing?
Also known as random testing and monkey testing because the tester tries to ‘break’ the system by randomly trying the system’s functionality. can be achieved using Error Guessing technique. It is an unplanned activity where any part of the application is randomly checked to find defects.
- What is known as Data-driven testing?
Data-driven testing is the methodology where test scripts are executed repeatedly with the help of data sources like spreadsheets, Excel, CSV files, XML files, and SQL database files. Data sources can be used as input values and the actual output is compared to the expected one in the verification process.
- What is the PDCA cycle in software testing?
It is a 4 steps process for implementing continuous improvement of software application:
- Plan: Recognize an opportunity and plan a change Plan the objectives, goals, and initiatives that help reach customer satisfaction.
- Do: It implements the change that is planned. It is essential to have a good plan to execute.
- Check: To check that the implemented actions and solutions resolved the problems. The result also shows how accurate the planning had been.
- Act: Taking necessary action by changes made and keeping its results in mind.
- When do we perform Smoke testing?
Smoke testing is performed whenever the new functionalities of software are developed and integrated with existing build. It will check if the critical functionalities are working correctly or not.
- How is ‘Build’ different from ‘Release’?
Build is an executable version of a software application that is handed over to a testing team by development team to test the implemented functionality of the application along with some bug fixes where Release refers to the formal release of the software application to the customer.
–> Get Through Unit Testing in Software Testing
What is Unit Testing?
Unit Testing is a software testing technique where individual units or components of a software are tested. The purpose is to validate that each unit of work behaves as expected. There are 3 types of Unit Testing techniques:
- Black Box Testing: – functionalities are examined without sharing its internal structures or code.
- White Box Testing: – the internal structures and workings are examined.
- Gray Box Testing: – Partial knowledge of internal structure. Combination of black box and White box testing.
When Unit Testing is done?
Unit testing is carried out during the development phase. It is the initial step done before integration testing in SDLC or v model.
Who performs Unit Testing?
Unit Testing is typically performed by the developer. quality assurance engineers also do unit testing due to the reluctance of developers to test
What is the purpose of Unit Testing?
- It saves the developer time and also it saves time during regression testing.
- It’s easier for developers to fix bugs in a unit of code.
- Unit testing helps in improving the quality of the code. It identifies every defect in the code before integration testing.
- As it helps finding defects before integration testing it enhances code quality because there occur a smaller number of defects in upcoming testing levels.
- Lower cost for fixing issues in unit test as its initial phase.
- As all modifications were already tested beforehand, it ensues no future changes will disrupt other system parts.
How to do Unit Testing?
A typical unit test contains 3 phases: plan, cases and scripting and unit test. In the first step, the unit test is prepared and reviewed.in the second phase test cases and scripts are made and finally code is tested.
Example of Unit Testing
Considering real time example “car”, door, seats, wheels, mirror, break, steering are manufactured independently. Testing each component separately to check whether it functions as intended.
Tools used for Unit Testing
–> Things You Didn’t Know About Integration Testing in Software Testing
What is Integration Testing?
Integration testing is the type of software application testing where different units, modules or components are integrated and tested. This aims to expose any defects in the interaction between integrated units.
Types of Integration Testing
- Big-bang Testing: Once the development of all modules is finished, units or all modules are integrated and tested as a whole at one time.
- Top-down Testing: The top-down approach is an incremental approach where units/modules is tested from the top to bottom levels step by step. Stubs (Is called by the Module under Test.) are used in case the missing modules are not ready
- Bottom-up Testing: In Bottom-up integration testing Units/modules are tested from bottom to top level, step by step. Drivers (Calls the Module to be tested) are used as simulator programs
- Sandwich/Hybrid Testing: Also known as hybrid integration testing it combines both top-down and bottom-up approaches. It uses both stubs and drivers.
Why Integration Testing is important?
Integration testing helps in identifying defects that may still exit even after unit testing. It helps to ensure that the integrated unit’s function properly as one unit and align with other components. Integration testing ensures the functionality of some modules that interacts with third-party APIs. Integration testing also helps eliminate problems such as data formatting, inadequate exception handling, erroneous external hardware interfaces error trapping.
When to do Integration Testing?
Integration testing is conducted after “unit testing”. Once all the individual units are created and tested, we do integration testing by combining those Unit Tested modules. It is also done when support libraries are used along with the code.
Who performs Integration Testing?
Usually integration testing is done by developers. Testers may be involved in organization’s that have implemented test-driven development.
How Integration Testing is done?
The main goal integration testing is to test the interfaces between the units/modules. The steps involved in integration testing are as follows:
- Prepare the test integration plan
- Design test cases, test scenarios and test scripts accordingly
- Run tests after unit/module integration.
- Detect defects, record the test results and fix errors
- Retest functionalities after fixing bugs.
- Repeat the process until the complete system is testede all bugs are found and fixed
Example of Integration Testing
individual components (door, glass, mirror etc) integrate with other and test in order to check any side effects on the functioning of each component and if both components are functioning together as intended.
Tools used for Integration Testing
–> Learn System Testing Quickest & Easiest Way
What is System Testing?
System Testing means testing the system as a whole. In system testing, passed components of integration testing are taken as input. System Testing is performed after the integration testing and before the acceptance testing. System Testing is a black-box testing. System Testing helps to verify that the application meets technical, functional, and business requirements that were set by the end user.
Major Type of System Testing
- Functionality Testing– to ensure that features work as per the functional requirements
- Recoverability Testing− This ensures that the system can recover from possible crashes.
- Reliability Testing− To ensure that the system can be used for a longer period of time without failing.
- Regression Testing− to ensure that changes made over the course of the development process have not adversely affected it.
- Usability Testing- to determine if the application is easily usable from an end-user’s perspective.
- Performance Testing– to determine how the system perform in terms of responsiveness and stability under different conditions. -> Check in detailed
Who does System Testing?
Basically performed by an independent software tester. It’s a black-box testing technique and have both functional and non-functional testing.
What is the main purpose of System Testing?
System tests help to test that the application working correctly from a user perspective. It covers end to end testing and helps in mitigating live issues and bugs even after production. It helps to find potential issues. It includes testing both Business requirements and software architecture. System tests to help specify how the application should behave.
When System Testing can be performed?
It is third level of software testing, performed after integration testing and before user acceptance testing.
How we can perform System Testing?
- Prepare Test Plan: Initial step to create a comprehensive document about the objectives of the testing. And to understand systems real time usage. Some elements included in test plan are scope, objectives, entry and exit criteria, testing schedule etc
- Write Test cases: Next step is to create different types of test cases such as regression, functional, load, installation, GUI etc.
- Create Testing Environment: Create a physical condition (hardware and software) required for a systematic evaluation process.
- Perform testing protocols: Use test plan and test cases to execute each evaluation systematically.
Example of System Testing
When all the components (steering, wheel, door, mirror etc) are put together and “car” seems to be ready the entire system needs to be tested as a whole known as system testing.
Which Tools used for System Testing?
–> Real facts about User Acceptance Testing (UAT)
What is User Acceptance Testing?
User Acceptance Testing (UAT) is a type of testing performed by the end user to verify the software system before moving the software application for release. It follows black box testing technique where two or more end-users will be involved.
Who do User Acceptance Testing?
It is carried out by clients or end users.
When to perform User Acceptance Testing?
It is carried out after unit, integration and system testing. This is last level of testing performed after the product itself is thoroughly tested.
Why User Acceptance Testing is required?
User acceptance testing is needed for testing whether the final product is accepted by client/end-user. developers might have built software based on requirements document by their own understanding and further required changes during development may not be effectively communicated there are chance of mistakes to happen. This process serves as a final check to ensure the finished product is well built.
How we can do User Acceptance Testing?
Once Entry criteria for UAT are satisfied, the tasks need to be performed by the testers are as follows:
- Analysis of Business Requirements: to identify and develop test scenarios is One of the most important activities in the UAT.
- Creation of UAT Test Plan: it gives detailed strategy that will be used to verify and ensure an application meets its business requirements.
- Identify Test Scenarios and Test Cases: Identify the test scenarios and create test cases with clear test steps.
- Preparation of Test Data: It is best advised to use live data for UAT.
- Run the Test cases and record the results: Execute test cases and record bugs if any.
- Confirm Business Objectives: Before moving into production UAT send a Sign off meeting with all stakeholders. should not contain any open critical defects.
Best example of User Acceptance Testing
End-user test the car functions as intended.
–> Things You Must Know About ALPHA TESTING and BETA TESTING
What is Alpha and Beta Testing?
Alpha testing is a type of software testing normally takes place in the development environment to identify bugs before releasing the product to real users. Alpha Testing is one of the user acceptance tests.
Beta testing is a type of software testing normally takes place in the customer’s or real environment and involves some extensive testing by a group of customers who use the system. Beta testing is one type of User Acceptance Testing.
Key Differences between Alpha Testing vs Beta Testing
|ALPHA TESTING||BETA TESTING|
|Performed at developer’s site||Performed in real environment|
|System Testing is performed before Alpha Testing||Alpha Testing is performed before Beta Testing|
|It evaluates the quality of the product||It evaluates customer satisfaction|
|Alpha testing uses both the white box and black box testing.||Beta testing commonly uses black-box testing.|
|It is performed by testers who are usually internal employees of the organization||It is performed by clients who are not a part of the organization|
|Long execution cycle||Requires only few weeks of execution|
|Reliability and security testing are not checked||It checks the reliability, security and robustness|
What is System Integration Testing?
System Integration Testing is defined as a type of software testing carried out in an integrated hardware and software environment to evaluate the overall system behavior. It is testing performed on a whole, integrated system to evaluate the system’s compliance with its specified requirement.
System Integration Testing’s (SIT) main objective is to ensure that all software module dependencies are functioning properly and that data integrity is preserved between distinct modules of the whole system. It is responsible for verification of the high and low-level software requirements specified in the Software Requirements Specification/Data and the Software Design Document.
Modules are first tested individually and then combined to make a system in this sort of testing.
Unit Testing vs Integration Testing
|each module of the software is tested separately||Two or more units of a program are combined and tested as a group|
|Maintenance is Cheap||Maintenance is expensive.|
|It’s a quick write-and-run test||Its speed is slow because of the integration of modules.|
|Unit testing is performed by the developer||Integration testing is performed by the tester.|
|It can be performed at any time||It is performed after Unit Testing but before the overall system testing|
|It has very low maintenance||It has very high maintenance|
|It is very limited in scope, as it only covers a piece of code||It has wider scope as it covers broader part of the application or the product|
|It focus on one single module||It pays attention to integration among two or more modules|
|Finding errors is relatively easy||Finding errors is more difficult|
|Unit testing is less costly||Integration testing is more costly.|
|Module specification is done initially.||Interface specification is done initially.|
|Test executor knows the internal design of the software||Testers don’t know the internal design of the software|
|It is white box testing||It is a black box testing|
I hope you got detailed knowledge about why, when and how to do Functional Testing, Unit Testing, Integration Testing, System Testing, User Acceptance Testing, Alpha and Beta Testing. You can provide your feedback if you have any doubts in the comment box.