About Software Testing...
Published: 2023-10-05 16:58:57

**what is software?**
-software is collection of computer programs that help us to perform a task.

in that, we have some types of software...
**System Software:**
    -its program designed to run computer hardware and application and manage its resource like memory, processor.
<u>example:</u> device driver, operating system, utilities

**Application software:**
     -application software is designed to handle some specific task for user.
<u>example:</u> web application, apps, computer application

**programming software:**
   -it is tool for create code that allows system software to operate.
<u>example:</u> compiler: java 17, interpreter: python, debugger

## Software Testing
   _ Definition_:
       software testing is method to check whether actual software product matches expected requirements and to ensure the software product is defect free.

**<u>Here some key aspects and concepts we need to know about software testing:-</u>**

**purpose of testing**
   i. identify and fix bugs in the software
  ii. verify that software meets its functional and 
      non-functional requirements
  iii. improve quality and reliability of software.

**Types of Testing:**

   _Functional testing_: validate that the software performs 
                         functions correctly.

  _non-functional testing_: focuses on aspect like scalability, 
                            performance, usability.

  _white box testing_: examine internal structure of software and 
                       tests individual components.

  _black box testing_: testing the software functionality without 
                       knowledge of its internal code.

  _Regression testing_:  we add new functionality  without break 
                         existing functionality.

  _UAT testing_: user acceptance testing involve end user to 
               validate whether software meets their requirements.

   _Load testing_: it evaluates software performance under heavy 
                   load.

   _Security testing_: identify vulnerabilities and security of 
                       software.

**Testing life Cycle**
   
    <u>test planning</u>: define objectives, resources and test 
     strategy
    <u>test design</u>: create test cases, test data
    <u>test execution</u>: run test cases, record results
    <u>defect tracking</u>: document and manage identified defects
    <u>test reporting</u>: communicate test progress and reports
    <u>test closure</u>: evaluate testing process and release it

**Testing Levels**

  <u>unit testing</u>: testing individual code components.

  <u>integration testing</u>: interactions between integrate 
      components.

  <u>system testing</u>:testing the system properties.

  <u>Acceptance testing</u>: ensuring software meets user and 
     requirements.
**Test Environments**

     -maintain separate environments for development, testing and 
      production.

**Test Documentation**

  - Test plan: outline a overall test strategy and approach.
  - test cases: detailed instruction for execute specific tests.
  - Test Scripts: Automation code for automated testing.
  - Test Reports: summarize test results and defects

**challenges in software testing**

  - incomplete or changing requirements
  - limited resources and time constraints
  - balancing manual and automated testing

**Continuous Testing **

  - integration testing into continuous integration for faster 
    feedback about release cycle.

**Tools and framework**

  -for web automation we using selenium version 2 to 4.13
  -Pytest for unit testing


## software testing is highly relevant in software development process for several important reason

- <u>Bug detection and prevention</u>
     -it identify and eliminate bugs, defects, error in software code.

- <u>Quality Assurance</u> - it ensures that software meets its requirements and functions correctly.

- <u>User Satisfaction</u>- through testing  we can get expected product with reliable user-friendly software.

- <u>Cost saving</u>- testing early and regularly can save both time and money.

- <u>Risk Reduction</u>- testing helps to identify potential issues and weakness of software in early phase .it reduce risk of project failure.