Software Testing Course Notes PDF
Document Details
Uploaded by ComplimentaryDialect3043
Tags
Summary
This document provides an overview of software testing. It details various software development lifecycle models (SDLC), different testing techniques, and testing types.
Full Transcript
Roles in the Software Development Team: 1. Requirements Engineer: Acts as the critical link between the client and the IT team. This role can also be referred to as a Business Analyst or Product Owner. 2. Product Owner: Responsible for gathering requirements from the client and documen...
Roles in the Software Development Team: 1. Requirements Engineer: Acts as the critical link between the client and the IT team. This role can also be referred to as a Business Analyst or Product Owner. 2. Product Owner: Responsible for gathering requirements from the client and documenting them as a product backlog and user stories to ensure customer requirements are met. 3. UI (User Interface): Represents the visual elements of an application that users interact with. 4. UX (User Experience): Focuses on the overall design and usability of the application. UX design often informs the creation of test scenarios and cases. Software testers in this domain validate the design implementation. 5. Front-End Developer: Converts UI designs into functional code that forms the visible part of an application. 6. Full-Stack Developer: Handles both front-end and back-end development tasks, bridging the gap between client-side and server-side operations. 7. Native Application Developer: Develops applications tailored for a specific operating system, such as Android or iOS, ensuring optimal performance on the chosen platform. 8. Project Manager: Oversees the project schedule and allocates time for each phase, including software testing. 9. Scrum Master: Facilitates communication and resolves conflicts between team members, such as disagreements between developers and testers regarding defects. Software Development Lifecycle Models (SDLC): 1. Sequential Development: ○ A classical approach where development follows a strict sequence of steps. Once a step is completed, there is no going back. ○ Phases: Analysis: Led by the Requirements Engineer or Product Owner, who writes Software Requirements Specifications (SRS), Product Requirements Documents (PRD), or user stories. Design: Frames, UI designs, database schemas, and other system designs are created. Implementation: Developers write the code and begin testing. 2. Models within Sequential Development: ○ Waterfall Model: Linear and rigid. Phases: Requirements > Design > Development > Testing > Deployment > Maintenance. Drawbacks: Testing occurs late, making early issue identification difficult. This model is less favored by modern companies. ○ V-Model: Similar to Waterfall but emphasizes early testing. Testing activities are planned in parallel with corresponding development phases. 3. Agile Software Development: ○ Focuses on early and continuous customer feedback. ○ Promotes adaptive planning and iterative development. 4. Incremental Development Model: ○ Delivers small, functional increments of the product over time. 5. Iterative Development Model: ○ Develops the product in repeated cycles, refining it with each iteration based on feedback. 6. Scrum: ○ A widely-used Agile framework. ○ Involves iterative sprints, daily standups, and regular reviews to ensure the product aligns with client expectations. Basic concepts of software testing: Definition of Software Testing: A method to assess the quality of software and reduce the risk of operational failure. It involves various activities throughout the development lifecycle, not just test execution. Types of Software Testing: Dynamic Testing: ○ Requires the execution of code. Inputs are provided to the system, which processes them to produce outputs. Static Testing: ○ Does not involve code execution. Activities include code reviews (also known as white-box testing). This approach supports early testing, saving time and resources. Categories of Software Testing: Validation: ○ Ensures the product meets the customer’s requirements. Verification: ○ Confirms that the product is built correctly according to design specifications. Objectives of Testing: Identify and fix defects. Ensure the software meets quality standards. Confirm that the product functions as intended in various scenarios. Testing and Debugging: Testing: ○ Identifies defects or failures in the software. Debugging: ○ Locates and fixes the cause of a defect or failure. Confirmation Testing (Retesting): ○ Repeats steps that caused a defect to confirm it has been resolved. Test Process: Defines the steps required to develop and test software effectively Test Levels: 1.Component testing: Tests individual components or units of software. 2.Integration testing: Validates interactions between integrated components or systems. 3.System Testing: Verifies that the entire system meets specified requirements. 4.Acceptance testing: Ensures the product satisfies customer needs and is ready for deployment. 5.Alpha and beta testing Alpha Testing: Conducted in-house by the development team. Beta Testing: Performed by end-users in a real-world environment. Testing types: 1.Functional: Validates software functionality against requirements. 2.Non Functional: Assesses aspects like performance, usability, and security. 3.Black box: Focuses on inputs and outputs without considering internal code structure. 4.White box: Involves reviewing the internal code structure and design. 5.Dynamic: Involves executing the code. 6.Retesting(Confirmation testing): Verifies that previously identified defects have been fixed. 7.Regression: Ensures that recent changes have not negatively affected existing functionality. 8.Smoke: A preliminary test to check the basic functionality of the software.