Step-by-Step Guide to Learning Software Quality Assurance (SQA) for Beginners
M Umar Anjum
Business Analysis Manager at OZI Publishing | UA Executive | Community Leader | Social & Global Activist
1. Learn the Fundamentals
1.1 What is Software Testing?
Software testing is the process of evaluating and verifying that a software application or system meets specified requirements and works as expected. The primary goal is to identify and fix defects to ensure the product is of high quality.
1.2 Why Do We Need Testing?
1.3 What is Error, Bug & Failure?
Error: A mistake in the code made by a developer.
Bug: A flaw or fault in the software that causes it to behave unexpectedly.
Failure: The inability of a software system to perform its required functions within specified performance requirements.
1.4 Why Software Has Bugs
1.5 What is Manual Testing and Why We Use It
Manual testing involves testers manually executing test cases without the use of automation tools. It helps identify user interface issues and ensures the software is user-friendly.
1.6 What is Quality Assurance (QA) and Quality Control (QC)?
Quality Assurance: A process-oriented approach that focuses on preventing defects by improving development processes.
Quality Control: A product-oriented approach that focuses on identifying defects in the final product through testing.
1.7 Product vs. Project
Product: A software application developed to meet the needs of a market or end-users.
Project: A temporary endeavor undertaken to create a unique product, service, or result.
1.8 Static vs. Dynamic Testing
Static Testing: Testing that does not require code execution (e.g., reviews, inspections).
Dynamic Testing: Testing that requires code execution to validate the software’s behavior.
1.9 Verification & Validation
Verification: Ensuring the product is built correctly (conforms to specifications).
Validation: Ensuring the right product is built (meets user needs).
2. SDLC Delivery Models
2.1 Waterfall Model
A linear and sequential approach to software development with distinct phases: requirements, design, implementation, testing, deployment, and maintenance.
2.2 V-Shaped Model
An extension of the waterfall model where each development stage is associated with a corresponding testing phase, emphasizing verification and validation.
3. Agile Model
3.1 What is Agile Process/Methodology?
A flexible and iterative approach to software development that emphasizes collaboration, customer feedback, and rapid delivery of small increments of software.
3.2 Scrum Framework
A popular Agile framework that organizes work into sprints (short, time-boxed periods). Key roles include Scrum Master, Product Owner, and Development Team.
3.3 Jira Tool
A widely used project management tool for Agile teams to plan, track, and manage software development projects.
3.4 Zephyr Plugin
An add-on for Jira that provides advanced test management capabilities, including test case creation, execution, and reporting.
4. Testing Approaches
4.1 White Box Testing
Testing based on knowledge of the internal code structure. It includes techniques such as code coverage and path testing.
4.2 Black Box Testing
Testing without knowledge of the internal code structure. Focuses on input-output validation against specified requirements.
4.3 Gray Box Testing
Combines aspects of both white box and black box testing, where testers have partial knowledge of the internal workings of the application.
5. Types of Software Testing
5.1 Functional Testing
Ensures the software functions according to specified requirements.
Types of Functional Testing:
Unit Testing: Testing individual components or modules.
Integration Testing: Testing the interaction between integrated components or systems.
Smoke and Sanity Testing: Initial testing to check basic functionality.
User Acceptance Testing (UAT): Ensures the software meets user needs and requirements.
Localization Testing: Checks the software’s adaptability to different languages and regions.
Globalization Testing: Ensures the software can function globally.
Interoperability Testing: Ensures the software can interact with other systems.
5.2 Non-functional Testing (Performance Testing)
Tests aspects like performance, usability, and reliability.
Types of Non-functional Testing:
Performance Testing: Measures how the software performs under various conditions.
Endurance Testing: Tests the software’s ability to handle extended periods of use.
Load Testing: Assesses how the software performs under heavy loads.
Volume Testing: Evaluates the system’s ability to handle large volumes of data.
Scalability Testing: Checks if the software can scale up to meet increasing demands.
Usability Testing: Ensures the software is user-friendly.
5.3 Maintenance Testing
Involves testing the software after it has been deployed and is being maintained.
Types of Maintenance Testing:
Regression Testing: Ensures that new changes do not adversely affect existing functionality.
Maintenance Testing: Tests modifications made to the software.
领英推荐
6. Levels of Testing
6.1 Unit Testing
Tests individual components or modules in isolation.
6.2 Integration Testing
Tests the interaction between integrated components or systems.
6.3 System Testing
Tests the complete and integrated software system to verify it meets the specified requirements.
7. Other Types of Testing
7.1 GUI Testing
Tests the graphical user interface to ensure it meets design specifications and is user-friendly.
7.2 Retesting
Re-test a specific defect after it has been fixed to ensure it is resolved.
7.3 Bucket Testing (A/B Testing)
Compares two versions of a software application to determine which one performs better.
7.4 Exploratory Testing
Involves simultaneously learning, test design, and test execution.
7.5 Ad-hoc Testing
Informal testing without any formal test planning or documentation.
7.6 Monkey Testing
Random testing with no specific test cases to identify any unexpected behavior or crashes.
7.7 Happy Testing
Tests the software with valid and expected inputs to ensure it works correctly under positive scenarios.
7.8 Positive and Negative Testing
Positive Testing: Tests the software with valid inputs.
Negative Testing: Tests the software with invalid or unexpected inputs.
7.9 End-to-End Testing
Tests the software from start to finish to ensure it behaves as expected in a real-world scenario.
8. STLC (Software Testing Life Cycle)
8.1 Test Planning
Defines the scope, approach, resources, and schedule of testing activities.
8.2 Test Design (Scenario & Test Cases)
Designs test scenarios and test cases based on requirements.
8.3 Environment Setup
Prepares the test environment where testing will be executed.
8.4 Test Execution
Executes the test cases and records the results.
8.5 Bug Report & Tracking
Documents and tracks defects identified during testing.
8.6 Test Closure
Evaluates the testing processes, document learnings, and close the testing phase.
8.7 Test Case and Test Scenario
Test Case: A set of conditions or variables under which a tester will determine whether an application is working correctly.
Test Scenario: A high-level description of what to test.
8.8 Requirement Traceability Matrix (RTM)
A document that maps and traces user requirements with test cases to ensure all requirements are covered by tests.
8.9 Defect and Bug
Defect: A deviation from the expected behavior.
Bug: A flaw or error in the software that causes it to produce incorrect or unexpected results.
8.10 Defect Report and Defect Classification
A document that describes the defects found during testing. Defects are classified based on severity and priority.
8.11 Bug Life Cycle
The process a defect goes through from identification to closure.
8.12 Principles of Software Testing
8.13 Test Strategy vs. Test Plan
Test Strategy: A high-level document that outlines the testing approach.
Test Plan: A detailed document that describes the test objectives, scope, approach, resources, and schedule.
8.14 Entry and Exit Criteria
Entry Criteria: Conditions that must be met before testing begins.
Exit Criteria: Conditions that must be met before testing is considered complete.
9. Test Case Design Techniques
9.1 Equivalence Class Partitioning
Divides input data into equivalent partitions to reduce the number of test cases.
9.2 Boundary Value Analysis
Tests boundary values at the edge of equivalence partitions.
9.3 Decision Table
Uses a table to represent combinations of inputs and their corresponding outputs.
9.4 State Transition
Tests the software’s behavior under various states and transitions.
9.5 Error Guessing
Based on experience, testers guess the areas where defects might occur.
10. Documentation
CCTV Monitoring Officer
4 周???? ?? ????????? ????