Introduction to Software Testing
1st Edition
Quinn R Briggs
With assistance from ChatGPT 3.5
Unit 1: Foundations of Software Testing
1.1 Introduction to Software Testing and Its Significance
- Enhancing Software Quality
- Reducing Risks
- Cost-Efficiency
- User Satisfaction and Loyalty
- Continuous Improvement and Innovation
1.2 Testing Terminology and Concepts
- Enhancing Software Quality
- Reducing Risks
- Cost-Efficiency
- User Satisfaction and Loyalty
- Continuous Improvement and Innovation
1.3 Verification and Validation: Ensuring Software Excellence
- Verification
- Validation
- V-Model
- Shift Left Movement
1.4 Software Development Life Cycle and Testing Phases
- Understanding SDLC
- Methodologies within the SDLC
- Deep Dive: Agile Models of Development
Unit 2: Requirements and Test Cases
2.1 Requirements Gathering
- Gathering Requirements Using the SRS
- Example SRS Document
- Using the SRS - Pros and Cons
- Standards for Requirements Gathering
- Creating Effective Functional and Non-Functional Requirements
- Dealing with Missing Requirements:
2.2 Acceptance Criteria
- Understanding Acceptance Criteria:
- Best Practices for Creating Acceptance Criteria:
- Review and Iteration:
2.3 Test Planning
- What is a test plan?
- What is a test case?
- Characteristics of a Good Test Case
- Generating Test Cases from Acceptance Criteria
Unit 3: Building and Executing Effective Tests
3.1 Tester Mindset vs. Developer Mindset
- The Black Team
- A Difference of Perspective
3.2 Testing Methods Explained
- White Box Testing
- Black Box Testing
- Boundary Value Analysis
- Equivalence Partitioning
- Regression Testing
- Comparison Testing
- Random Testing
- Fuzz Testing
- Code Review
- Static Analysis Testing
- Unit Testing
- Integration Testing
- End-to-End Testing
- User Acceptance Testing (UAT)
- Alpha Testing
- Beta Testing
- A/B Testing
- Dynamic Testing
3.3 Defect Reporting
- A Good Defect Report
- Example Defect Report
- Bug Life Cycle
- When To NOT Fix Bugs
3.4 Multi-Platform Testing
- Browser Usage
- Testing Across Multiple Browsers/Devices
- Testing Across Multiple Locales
Unit 4: Testing the Full System
4.1 System Testing and User Acceptance Testing
- Objectives
- How to Determine if System Testing is Successful?
- System Testing vs. End-to-End Testing
- Challenges with System Testing and End-to-End Testing
- User Acceptance Testing
4.2 Requirements Traceability Matrix
- Usage
- How to Generate a Requirements Traceability Matrix
- Vertical End-To-End Testing
4.3 Integration Testing
- Objectives
- Types of Integration Testing
- Horizontal End-To-End Testing
- Vertical End-To-End Testing
- Integration Testing as part of Vertical End-to-End Testing
- Integration Testing Approaches
- API Testing Tools
4.4 Regression Testing
- Introduction
- Challenges in Regression Testing
- Strategies for Effective Regression Testing
Unit 5: Non-Functional Testing
5.1 Non-Functional Testing Overview
- Usability Testing
- Accessibility Testing
- Performance Testing
- Reliability Testing
- Security Testing
- Risk Management
5.2 Usability Testing
- Five Factors of Usability
- Planning and Executing a Usability Test
- Qualitative and Quantitative Metrics in Usability Testing
- Usability Testing Outcomes
5.3 Accessibility and Compliance Testing
- Accessibility Testing
- Compliance Testing for Legal Regulations
- Testing for Industry-Specific Standards
- Role of the Corporate Compliance Officer
- Risks of Inadequate Compliance Testing
5.4 Performance Testing
- Purpose of Performance Testing
- Performance Testing Measurements
- Service Level Agreement (SLA)
- Service Level Objective (SLO)
- Service Level Indicator (SLI)
5.5 Reliability Testing
- Types of Reliability Tests
- Reliability Metrics
- Chaos Engineering for Improved Reliability
- Benefits of Reliability Testing
5.6 Security Testing
- Types of Security Testing
- Categorizing Security Risks using the Common Weakness Enumeration
- Staying Up-To-Date on Common Threats using the OWASP Top Ten
- Memory Safety in Programming Languages
5.7 Risk Management
- Categories of Risk
- Risk Mitigation Strategies
- Software Testers and Risk Management
Unit 6:Automation Engineering
6.1 Introduction to Automation Engineering
- The Benefits of Automation
- Challenges of Automation
- Deciding What to Automate
6.2 Automated Unit Testing
- Introduction
- Code Coverage and Unit Tests
- Test Driven Development
- Behavior Driven Development
6.3 Automated Integration Testing
- Introduction
- Integration Testing with Stubs
- Integration Testing with Mock Objects
- Integration Testing with Drivers
- Test Data Management for Integration Tests
6.4 Automated End-To-End Testing of User Interfaces
- Introduction
- Smoke Testing and Sanity Testing
- Using Selenium WebDriver to Automate Smoke Tests
6.5 Continuous Integration, Continuous Delivery (CI/CD) and Test Automation
- CI/CD Overview
- A Typical CI/CD Pipeline
- Automated Testing in CI/CD Pipelines
- Using Headless Mode within CI/CD Pipelines
- Testing in Production
6.6 Using AI to Create Automated Tests
- AI in Testing
- A Specific Example
Unit 7: Testing Careers
7.1 Jobs in Software Testing
- Jobs in Software Testing
- Manual Tester Skills and Qualifications
- Automation Tester Skills and Qualifications
- Security Tester Skills and Qualifications
- Test Lead or Manager Skills and Qualifications