Task 1:
Tags: beginners, testing
Published: 2023-12-24 14:19:30



## Different types of testing

The literal meaning of testing is to check the quality, performance, reliability of (something), especially before putting it into widespread use.
      In terms of technology, Testing means to check the quality of software application before releasing it into market.
      Based on the purpose, scope, performance, level of software application, testing can be classified into different types.
Firstly, Testing can be broadly classified into two types:

**- Functional Testing:** Functional testing ensures that the functions and features of the application work properly. It is based on the business requirement and is easy to execute manually.
**- Non-Functional Testing:**  Non-functional testing, on the other hand, examines other aspects of how well the application works, such as performance, scalability, and behavior 1. It is based on the performance requirement and is hard to execute manually.

Furthermore, based on the level of software application testing can be classified as:

**- Unit testing:** This type of testing is usually performed by the developers in the early level of application which focuses on testing the smaller units of code and its functionality 
**- Integration testing:**  It is performed after all the modules have been unit-tested. Integration testing helps to ensure that all components work seamlessly together as a single unit.
**- Smoke testing:** Smoke Testing is done whenever the new functionalities of software are developed and integrated with existing build that is deployed in QA environment It is a process that determines whether the deployed software build is stable or not. Smoke testing is a confirmation for QA team to proceed with further software testing. 
**- End-to-end testing:** It is the process of testing the application from start to finish covering all functionalities of the application.
**- Acceptance testing:** It is a trial use of application before releasing it to end users.
**- Performance testing:** Performance testing is a testing technique that determines the speed, scalability, and stability of an application under a given workload.
**- Sanity testing:**Sanity testing is a type of software testing that evaluates the Critical functionality of a new software build. It is performed before full regression testing.
**- Regression testing:**It is a type of software testing that is conducted after a code update to ensure that the update does not affect the existing code.


**Different STLC phases:**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cp6oz2tgfux3xhmt6zfo.jpg)

There are 6 stages of software testing life cycle:

- Requirement analysis
- Test planning
- Test case Design
- Test environment set up
- Test execution
- Test closure

**Qualities of manual tester**

**1. Good knowledge of basic testing principles**
example: A manual tester should know how to write test cases, execute them, and report bugs using a defect tracking tool.

**2. strong Understanding of product requirements**
example: A manual tester should be aware of all functionalities of the product such that they can write test cases covering positive and negative scenarios.

**3. Test data management**
example: A manual tester should be able to create test data that represents different user profiles, user roles, and user data.

**4. Defect management**
example: A manual tester should be able to report defects accurately, including details such as steps to reproduce, expected and actual results, and severity.

5. Attention to detail
example:  A manual tester should be able to identify small visual issues such as alignment, spacing, font size, and color discrepancies. They should also be able to spot logical errors, functional gaps, and usability issues that may impact the end-user experience.

**Difference between waterfall and agile methodologies in SDLC**

**Waterfall**
- It is a linear sequential model to develop and test a software product.
- The software development process is broken down into different phases.
- In Waterfall model to make changes after one phase is difficult and costly.
- There is very little client involvement and very little feedback is taken.
- Its delivery time is very long, the entire project must be completed before delivery.

**Agile**
- It is a continuous iteration life cycle model to develop and test a software product.
- In this the entire process of development is divided into sprints
- Agile development model is flexible to make changes at any point of time (or at any stage of development process) 
- Continuous client Interaction and feedback
- Its delivery time is very short and functional software is available very quickly.