TASK 3
Tags: stlc, testing
Published: 2024-03-18 12:10:50

## Q1 SDLC Models
1. Waterfall Model
2. V-shape model
3. Agile model
4. Prototype model
5. Spiral model
6. Iterative incremental model
7. Big Bang model

## Q2 STLC and Stages of STLC
Software Testing Life Cycle is systematic approach to testing a software application to ensure that it meets the requirements without defects. And It is a process that follows steps or phases to ensure the defects free application. The STLC is used to ensure that the software is quality, reliable, and meets the requirement of the clients.

The stages of the STLC include Test analysis, test planning, test case development, Test environment, test Execution, test cycle closure, all these stages has specific activities and deliverables that helps to ensure that the software is thoroughly tested and meets the requirements of the clients. STLC helps the organizations to release high-quality software that meets the needs of the clients, and business success. 

**STLC Stages**
**•	Requirements Analysis:** This is the first stage in STLC, in this stage the quality assurance team understands the requirements like what is to be tested. If anything is missing or not clear then the QA team meets with the Clients to better understand the requirements. Requirement traceability matrix (RTM) will create  to map requirements to test cases at the end of this stage
**•	Test Planning:** Test Planning is the most important phase of the software testing life cycle because all testing plans are defined in this planning stage. In this phase testing manager and team calculates the estimation of the efforts and cost for the testing work. At the end of this phase, the testing team will have a detailed plan for the testing activities, which will covers the testing objectives, scope, and deliverables.  
**•	Teat Case Development:** After the planning this Test case development starts, in this phase the testing team will create the detail test cases and prepare test data for testing. After test data they will verify the data with QA team. End of this phase the testing team will have comprehensive and accurate test cases, this will help to ensure the quality software before release the software.
**•	Test Environment:** The test environment decides the conditions on which the software is tested. This is independent activity and this will starts with test case development. In this process, the testing team is not involved. Either the developer or the customer creates the testing environment.
**•	Test Execution:**  After the test case development and test environment setup the test execution will start. In this phase testing team starts executing test cases based on prepared test cases in the previous steps. 
**•	Test Closure:** Test closure is the final stage of the Software Testing Life Cycle. In this phase all testing-related activities will complete and documented. 

## Q3
•	Potential Risks:
•	Security risk, performance risk, compatibility risk, Scalability Risk, Data integrity risk, usability risk, integration risk, Backup and Recovery risk, user Acceptance risk.
•	Security Risks: Identify potential vulnerabilities and will ensure proper authentication and authorization mechanisms are used to mitigate risks of unauthorized access to sensitive data.
•	Performance Risks: Assess the application performance under various load conditions and will ensure it can handle peak traffic without degradation in response time or downtime.
•	Compatibility Risks: Testing the application across different browsers (Chrome, Firefox, and Safari) and devices (desktop, mobile) and ensure consistent behavior and usability at all platforms.
•	Scalability Risks: Evaluate the application's ability to scale up to accommodate a growing user base or increased workload, ensuring it can handle increase demand without performance degradation.
•	Data Integrity Risks: Verifying the data is accurately processed, stored, and retrieved without corruption or loss, ensuring the reliability and integrity of the application's data handling processes.
•	Usability Risks: Assess the user interface for ease of use, quality, and accessibility, ensuring a positive user experience across different user demographics and user skill levels.
•	Integration Risks: Test integration points with external systems or APIs to ensure seamless communication and data exchange, mitigating risks of integration failures or data inconsistencies.
•	Backup and Recovery Risks: Test backup and recovery procedures to ensure data integrity and availability in the event of system failures or disasters, mitigating risks of data loss or prolonged the downtime.
•	User Acceptance Risks: Conduct user acceptance testing (UAT) to validate that the application meets user requirements and expectations, addressing risks of dissatisfaction or rejection by end-users.

## Q4 
**Quality Assurance:**
Quality assurance is a method of making the software application with fewer defects and mistakes when it is finally released to the end users. Quality Assurance is defined as an activity that ensures the approaches, techniques, methods, and processes designed for the projects are implemented correctly. It recognizes defects in the process. Quality Assurance is completed before Quality Control. 
•	Developing quality standards and procedures.
•	Implementing quality management systems.
•	Conducting audits and assessments to verify compliance with standards.
•	Providing training to personnel to ensure they understand and adhere to quality procedures.
•	Identifying areas for process improvement.
Also QA aims to prevent defects from occurring by addressing potential issues in the process, than just detecting and fixing defects in the final product.

**Quality Control (QC):**
•	QC focuses on identifying defects in the final product through inspection, testing.
•	It involves monitoring specific features of the application to ensure it meets predefined quality standards.
•	QC also include, Verifying application materials, components, and finished applications.
•	Testing applications on functionality, performance, and adherence to specifications.
•	QC aims to detect and correct defects in the final product, ensuring that it meets the quality standards set by QA.

Therefore QA and QC are essential for maintaining product quality, QA is focused on preventing defects by establishing robust processes and standards, whereas QC is focused on detecting defects through inspection and testing of the final product.

## Q5
**1.	Execution Speed:**
•	Manual Testing: Relies on human testers to execute test cases manually, which can be time-consuming, especially for repetitive or complex tests.
•	Automation Testing: Utilizes automated scripts to execute test cases, resulting in much faster test execution, thereby potentially speeding up the overall development process.
**2.	Accuracy:**
•	Manual Testing: Susceptible to human error, as testers may overlook certain scenarios or make mistakes during test execution.
•	Automation Testing: Offers greater accuracy and consistency since tests are performed by automated scripts that follow predefined steps precisely.
**3.	Repetitive Tasks:**
•	Manual Testing: Requires testers to repeatedly execute the same test cases, which can be difficult and prone to mistakes.
•	Automation Testing: Ideal for automating repetitive tasks, enabling testers to focus on more complex and exploratory testing.
**4.	Resource Requirements:**
•	Manual Testing: Relies heavily on human resources, requiring skilled testers to execute tests manually.
•	Automation Testing: Requires initial investment in developing automated scripts, but can ultimately reduce the need for human resources in the long run.
**5.	Coverage:**
•	Manual Testing: Limited by the time and resources available, which may result in incomplete test coverage.
•	Automation Testing: Allows for comprehensive test coverage by executing a large number of test cases efficiently, including regression testing, which ensures that new changes do not adversely affect existing functionalities.
**6.	Adaptability to Change:**
•	Manual Testing: More adaptable to changes in requirements or user interfaces, as human testers can quickly adjust their testing approach.
•	Automation Testing: Requires updates to automated scripts whenever there are changes in the application's functionality or user interface, which may involve additional time and effort.
**7.	Cost:**
•	Manual Testing: Typically more cost-effective for small-scale projects or projects with frequently changing requirements.
•	Automation Testing: Initial investment in automation tools and script development may be higher, but automation can lead to cost savings in the long term, especially for large-scale projects with stable requirements.