Task 3- STLC & QA Testing
Q1. List down all the models of SDLC.
Waterfall Model: In this model, each phase must be completed before the next phase begins. It proceeds sequentially through phases such as requirements, design, implementation, testing, deployment, and maintenance.
V-Model: The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. It emphasizes the validation and verification of the product at each stage of development.
Agile Model: Agile is an iterative and incremental approach where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. It emphasizes adaptive planning, evolutionary development, early delivery, and continuous improvement.
Spiral Model: This model combines elements of both waterfall and iterative development models. It involves the repetition of a set of activities called "spirals", each representing a phase of the software development process. Each spiral represents a single iteration.
Big Bang Model: The Big Bang Model is a simple Software Development Life Cycle (SDLC) approach that starts from scratch, requiring minimal planning.
Iterative Model: In this model, the software development process is divided into smaller parts called iterations. Each iteration results in the release of a usable and potentially shippable product increment.
Incremental Model: Similar to the iterative model, the incremental model divides the project into small, manageable parts. However, each increment builds upon the functionality of the previous increment.
RAD (Rapid Application Development) Model: RAD is a linear sequential software development process model that emphasizes extremely short development cycles. It focuses on rapid development and prototyping.
What is STLC? Also, Explain all stages of STLC
STLC Software Testing Life Cycle (STLC) is defined as a sequence of activities conducted to perform Software Testing
6 major phases of STLC
• Requirement Analysis
• Test Planning
• Test Case Development
• Test Environment Setup
• Test Execution
• Test Closure
Requirement Analysis: Requirement Analysis is the first step of the Software Testing Life Cycle (STLC). In this phase quality assurance team understands the requirements like what is to be tested. If anything is missing or not understandable then the quality assurance team meets with the stakeholders to better understand the detailed knowledge of requirements.
Test Planning: Test Planning is the most efficient phase of the software testing life cycle where all testing plans are defined. In this phase manager of the testing, team calculates the estimated effort and cost for the testing work. This phase gets started once the requirement-gathering phase is completed.
Test Case Development: The test case development phase gets started once the test planning phase is completed. In this phase testing team notes down the detailed test cases. The testing team also prepares the required test data for the testing. When the test cases are prepared then they are reviewed by the quality assurance team.
Test Environment Setup: Test environment setup is a vital part of the STLC. Basically, the test environment decides the conditions on which software is tested. This is independent activity and can be started along 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 test execution phase gets started. In this phase testing team starts executing test cases based on prepared test cases in the earlier step.
Test Closure: Test closure is the final stage of the Software Testing Life Cycle (STLC) where all testing-related activities are completed and documented. The main objective of the test closure stage is to ensure that all testing-related activities have been completed and that the software is ready for release.
As a lead for a web-based application, your manager has asked you to identify and explain the different risk factors that should be included in the test plan. Can you provide a list of the potential risks and their explanations that you would include in the test plan?
Here are some common risk factors to consider:
Functional Risks:
Feature Completeness: Ensure that all specified features are implemented correctly and completely. Missing or incomplete features can impact user experience. Integration Issues: Test interactions between different components (e.g., APIs, databases, third-party services) to identify integration issues. Data Integrity: Verify data consistency and accuracy across the application.
Security Vulnerabilities: Assess security risks such as SQL injection, cross-site scripting (XSS), and authentication flaws. Performance: Evaluate response times, scalability, and resource usage under different loads.
Usability Risks: User Interface (UI): Test UI elements for consistency, responsiveness, and alignment with design guidelines. Navigation: Ensure smooth navigation between pages and features. Accessibility: Verify that the application meets accessibility standards (e.g., WCAG) for users with disabilities.
Compatibility Risks:
Browser Compatibility: Test the application on different browsers (Chrome, Firefox, Edge, etc.) to identify rendering issues. Device Compatibility: Check compatibility with various devices (desktop, tablet, mobile) and screen sizes.
Operating Systems: Verify compatibility with different OS versions (Windows, macOS, Android, iOS).
Performance Risks:
Load Testing: Assess how the application performs under heavy load (concurrent users, data volume).
Stress Testing: Evaluate the system’s behavior under extreme conditions (e.g., high traffic, resource exhaustion).
Scalability: Determine if the application can handle increased user demand.
Security Risks:
Authentication and Authorization: Test login/logout functionality, role-based access control, and session management.
Data Protection: Ensure sensitive data (e.g., passwords, personal information) is encrypted and stored securely.
API Security: Validate API endpoints for vulnerabilities (e.g., insecure APIs, exposed endpoints).
Regression Risks: Regression Testing: Re-test existing functionality after code changes to prevent unintended side effects.
Impact Analysis: Assess the impact of new features or bug fixes on existing functionality.
Environmental Risks:
Network Conditions: Test under different network speeds (3G, 4G, Wi-Fi) to identify performance issues.
Localization: Verify translations and cultural adaptations for international users.
Third-Party Dependencies: Assess risks related to third-party libraries, APIs, and services.
4.Your Team Lead has asked you to explain the difference between Quality assurance and Quality control responsibilities. While qc activities aims to identify defects in actual products, your TL is interested in processes that can prevent defects. How would you explain the distinction between QA and QC responsibilities to your boss?
Quality Assurance (QA):
Focus: QA is a proactive process that emphasizes preventing defects and ensuring that the development process adheres to quality standards.
Responsibilities:
Process Oversight: QA oversees the entire software development life cycle (SDLC) and ensures that processes are followed consistently.
Process Improvement: QA identifies areas for process improvement and suggests corrective actions.
Requirements Verification: QA verifies that requirements are well-defined, complete, and testable.
Test Planning: QA collaborates with stakeholders to create test plans and strategies.
Risk Assessment: QA assesses project risks and helps manage them.
Training and Guidance: QA provides training to team members on quality processes and best practices.
Metrics and Reporting: QA tracks metrics related to defects, test coverage, and process adherence.
Audits and Reviews: QA conducts audits and reviews to ensure compliance with standards.
Goal: The ultimate goal of QA is to prevent defects from occurring in the first place.
Quality Control (QC):
Focus: QC is a reactive process that focuses on identifying defects in the final product.
Responsibilities: Testing Execution: QC executes test cases to identify defects.
Defect Reporting: QC logs defects, categorizes them, and communicates them to the development team.
Regression Testing: QC performs regression testing to ensure that fixes do not introduce new defects.
Ad Hoc Testing: QC explores the application to find unexpected defects. Validation: QC validates that the product meets specified requirements.
Test Execution Metrics: QC tracks metrics related to test execution (e.g., pass/fail rates).
Test Environment Setup: QC ensures the test environment is ready for testing.
Goal: The goal of QC is to identify and report defects before the product is released.
5.Difference between Mnaual and Automation Testing.
Manual Testing:
Manual testing is a type of testing where human testers execute test cases without using any automation tools.
Process:
Testers create test cases based on requirements.
They manually execute these test cases by interacting with the application.
Testers observe the application’s behavior, identify defects, and report them.
Advantages:
Easy Hiring: Anyone can perform manual testing, making it accessible for various team members.
Fast Feedback: Manual testing provides quick feedback during development.
Versatility: Manual test cases can be applied to different scenarios.
Flexibility: It adapts easily to changes in the user interface. Cost-Effective: No need to invest in automation tools.
Disadvantages:
Incomplete Coverage: Not all defects may be detected due to human limitations.
Expertise Required: Complex cases may require high expertise.
Time-Consuming: Developing comprehensive manual test cases takes time.
Non-Recordable: Manual testing cannot be recorded for reuse.
Human Error: Reliability is lower due to human involvement12.
Automation Testing:
Automation testing involves using tools (automation frameworks) to execute test cases.
Process Testers write scripts or use existing automation tools.
These tools automatically execute test cases.
Results are generated without human intervention.
Advantages:
Speed: Automation testing is faster than manual testing.
Accuracy: Less prone to human errors.
Reusability: Automated test scripts can be reused.
Regression Testing: Efficient for repetitive tests.
Disadvantages:
Initial Setup Effort: Setting up automation requires effort and resources.
Maintenance Overhead: Scripts need updates as the application changes.
Not Suitable for All Scenarios: Some tests (e.g., usability) are better performed manually.
Cost of Tools: Automation tools come with costs
Subscribe to my newsletter
Read articles from Jameel M directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by