Software Testing AND
Quality Assurance
BSC TIE
INTRODUCTION TO SOFTWARE ENGINEERING
CAT II
NAME REG NO
KEVIN KIPROTICH E020-01-2712/2021
NATHAN ROTICH E020-01-2224/2022
ROSE WAMAITHA E020-01-1082/2022
What is Software Testing?
Software testing is an important process in the software
development lifecycle.
It involves verifying and validating that a software application
is free of bugs.
Ensures the software meets technical requirements set by its
design and development.
Satisfies user requirements efficiently and effectively.
Types of Software Testing
🔹 Functional Testing
• Validates software against functional requirements.
• Ensures the application works as expected.
• Includes: Unit Testing, Integration Testing, System Testing, Smoke Testing, etc.
🔹 Non-Functional Testing
• Evaluates non-functional aspects like performance, scalability, and usability.
• Ensures the software meets user experience and efficiency standards.
• Includes: Performance Testing, Stress Testing, Usability Testing, etc.
🔹 Maintenance Testing
• Involves modifying and updating software to meet evolving needs.
•
Types of Testing Approaches
🔹 Manual Testing
• Performed manually without automation tools.
• Involves Unit Testing, Integration Testing, System
Testing, and User Acceptance Testing.
• Includes exploratory testing to find hidden errors.
🔹 Automation Testing
• Uses scripts and automation tools to execute tests.
• Speeds up repetitive and complex test scenarios.
• Ensures efficiency and accuracy in testing.
Types of Software Testing
Types of Software Testing Techniques
🔹 Black Box Testing
•Tester has no access to the source code.
•Focuses on software functionality, not internal structure.
•Conducted at the software interface level.
🔹 White Box Testing
•Tester has access to the source code and internal workings.
•Ensures all internal operations meet specifications.
•Focuses on code structure, logic, and flow.
🔹 Grey Box Testing
•Tester has partial knowledge of implementation.
•Combines elements of both black box and white box testing.
•Useful for identifying security flaws and integration issues.
Different Levels of Software
Testing
🔹 Unit Testing
•Tests individual components or units of software.
•Ensures each unit functions as expected.
🔹 Integration Testing
•Tests combined units to verify interactions.
•Identifies faults in data flow and communication.
🔹 System Testing
•Tests the complete, integrated system.
•Ensures the software meets specified requirements.
🔹 Acceptance Testing
•Validates the system against business requirements.
•Determines if the software is ready for deployment.
Software Testing Life Cycle
(STLC)
Requirement Analysis
Test Planning
Test Case Development
Environment Setup
Test Execution
Test Closure
Benefits of Software Testing
Early Defect Identification: Detect bugs early to reduce
delivery issues.
Improves Software Quality: Fix defects to enhance
performance.
Increases Customer Satisfaction: Ensures reliability and
security for better user experience.
Enhances Scalability: Assess scalability limits with non-
functional testing.
Saves Time & Cost: Prevent expensive post-launch fixes by
identifying issues early.
Challenges in Software
Testing
Evolving Requirements: Frequent changes complicate testing.
Limited Testing Time & Resources: Affects coverage and quality.
Test Environment Issues: Difficult to set up and maintain.
Complexity of Applications: Modern apps require extensive testing.
Automation Limitations: Some tests can’t be automated.
Defect Reproducibility: Some bugs are hard to reproduce.
Security Concerns: Compliance and data security add complexity.
Ensuring Complete Test Coverage: Challenging to cover all scenarios.
Best Practices
Test Early and Often: Detect issues sooner to reduce risks.
Use Manual & Automated Testing: Combine both for better
coverage.
Keep Test Cases Updated: Ensure tests reflect current
requirements.
Document Test Results: Maintain clear records for better
debugging.
Don’t Skip Regression Testing: Ensure new changes don’t
break existing features.
What is Software Quality Assurance
(SQA)?
Software Quality Assurance (SQA) is a systematic
process that ensures the quality of software by
following established standards and procedures
throughout the software development lifecycle. SQA
encompasses all activities that help monitor,
improve, and ensure the quality of software, from
initial planning and development to testing and
maintenance.
Key Elements of SQA
• Standards Compliance: IEEE, ISO, and industry standards.
• Reviews & Audits: Identify and eliminate errors early.
• Testing: Finding and fixing errors efficiently.
• Error & Defect Analysis: Understanding and preventing
recurring issues.
• Change & Risk Management: Ensuring controlled changes and
risk assessment.
• Security & Safety Assurance: Implementing secure and safe
software practices.
Major SQA Activities
• SQA Management Plan: Planning QA activities for the
project.
• Checkpoints & Performance Evaluation: Assessing
project progress.
• Impact Measurement: Evaluating the effects of changes.
• Multi-Testing Strategy: Using various testing approaches.
• Good Team Collaboration: Ensuring smooth
coordination.
• Documentation & Reporting: Maintaining records for
future reference.
Benefits & Challenges of
SQA
🔹 Benefits:
• Ensures high-quality software.
• Reduces time and maintenance costs.
• Improves software reliability and user satisfaction.
• Enhances company reputation and market share.
🔹 Challenges:
• Costly: Requires skilled personnel and resources.
• Time-Consuming: Testing and deployment may delay the project.
• Administrative Overhead: Documentation and tracking can be extensive.
• Not Foolproof: Despite QA efforts, defects may still exist.
SELENIUM TESTING TOOL
Introduction to Selenium
Selenium is an open-source tool used for
automating web application testing .It supports
multiple programming languages: Java, Python, C#,
Ruby, and JavaScript .Cross-browser compatibility for
testing on different browsers (Chrome, Firefox, Safari,
etc.).
How Selenium Works
🔹 Test Creation:
• Write tests in a programming language (e.g., Java,
Python).
• Use WebDriver API to interact with the browser.
🔹 Browser Interaction:
• Simulates user actions like clicking, typing, and
navigating.
• Sends commands to the browser, checks results
against expected values.
Test Execution & Automation
• Selenium tests can run on local machines or
through cloud platforms like Sauce Labs or
BrowserStack.
• It enables cross-browser testing, ensuring
compatibility across browsers.
• CI/CD Integration: Selenium integrates with
continuous integration pipelines for automated
testing at every stage.
Use Cases of Selenium
• Functional Testing: Ensures the application works
as expected.
• Regression Testing: Validates changes after
updates.
• Cross-Browser Testing: Verifies the application’s
functionality across different browsers.
Benefits of Using Selenium
• Open-Source & Free: No licensing cost.
• Multi-Language Support: Flexible for different
programming environments.
• Cross-Browser Testing: Ensures compatibility.
• CI/CD Integration: Automates testing in
continuous development.
REFERENCES
GeeksforGeeks. (2024, September 26).
Software engineering - Software quality
assurance. Retrieved from
https://www.geeksforgeeks.org/software-engineeri
ng-software-quality-assurance/
GeeksforGeeks. (n.d.). Software testing basics.
Retrieved January 30, 2025, from
https://www.geeksforgeeks.org/software-testing-b
asics/