FUNCTIONAL_NON-FUNCTIONAL_TESTING.
Tags: python, testing, automation, functional
Published: 2023-09-26 15:08:53

`**Functional Testing **`

Functional testing is a type of software testing that focuses on verifying that a software  application to its specified requirements. it involves testing the software's functionality by providing input and checking whether the output matches the expected results. function testing testing helps ensure that the software perform its intended tasks accurately.

there are various methods and levels of functional testing
,

- unit testing

- integration test

- system testing

- user acceptance testing 

Each serving a specific purpose in the software development lifecycle.

> Allowing for corrections before the software is released to users.

**Purpose**:
       Functional testing evaluates whether the software functions correctly  as per the specified requirement and user expectation.

**Focus**:
      It focuses on verifying the functional aspects of the application, such as its features, capabilities and interactions.

**Unit Testing**:
      This checks individual units or components of the software, like functions or methods, to ensure they produce the expected outputs for given inputs.

**Integration Testing**:
      It examines the interactions between different modules or components to ensure they work together as intended.

**System Testing**:
      This tests the entire software system to validate that it meet the specified requirements.

**User Acceptance Testing(UAT)**:
      Performed by end-users to ensure the software meets their
needs and is ready for production use.

**Scope**:
      Functional testing primarily addresses the "what" of the software. It verifies whether the software accomplishes specific tasks and functions outlined in the requirement.

**Test Cases**:
      Functional testing uses test cases that are typically derived from functional specifications or user stories. These test cases describe expected inputs, actions, and outputs.

_EXPAMPLES_ : 

**Regression Testing**:
     Ensures that new code changes or updates do not negatively impact existing functionality.

**Smoke Testing**:
      A quick check to verify that essential functions are working before more extensive testing.  


>  **NON_FUNCTIONAL_TESTING**


**Purpose**:
      Non-Functional testing assesses the qualities of the software that are not related to specific functions but are crucial for its performance and user experience.

**Focus **: 
      it focuses on aspects like performance, reliability, security, usability, and scalability.

**EXAMPLES**:

**Performance Testing**:
      This checks how the software performs under various conditions, such as load testing to evaluate its performance under heavy user loads.

**Security Testing** :
       it examines the application's security measures to identify vulnerabilities and ensure data protection.

**Usability Testing** :
       This assesses the user-friendliness of the software, including aspects like navigation, user interface design, and accessibility.

**Reliability Testing:**
        it verifies the software's stability and its ability to function consistently over time.

**Scalability Testing:**
         This Tests how well the software can handle increased workloads or growing datasets.

**scope : **
       Non-functional testing deals with the "how" of thew software. it assesses how well the software performs, its quality attributes, its behavior under various conditions.

**Test Criteria: **
       Non-Functional Testing often employs criteria and metrics to assess attributes such as response times, security levels or user satisfaction. these are not always as straightforward as functional test cases.

**EXAMPLES:**

**load testing :**
        Determines how the application performs under heavy concurrent user loads.

**penetration testing :**
        Evaluates the security of the software by attempting to exploit vulnerabilities.

**Compatibility Testing:**
         Checks how the software behaves across different devices, browsers, or operating system.

**Resilience Testing:**
         Assesses the software's ability to recover from failures or adverse conditions.

In summary, functional testing ensures that the software performs its intended functions correctly, while non-functional testing focuses on the broader qualities that impact user experience and system performance, Both types of testing are essential to deliver a high-quality software product.