Step-by-Step Guide to Learning Software Quality Assurance (SQA) for Beginners

Step-by-Step Guide to Learning Software Quality Assurance (SQA) for Beginners

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?

  • Ensures software reliability and performance
  • Identifies and resolves defects before deployment
  • Saves time and costs in the long run
  • Enhances user satisfaction and experience
  • Ensures compliance with regulatory requirements

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

  • Miscommunication or unclear requirements
  • Software complexity
  • Programming errors
  • Changes in requirements
  • Time constraints
  • Lack of proper testing

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

  • Testing shows the presence of defects.
  • Exhaustive testing is impossible.
  • Early testing.
  • Defect clustering.
  • Pesticide paradox.
  • Testing is context-dependent.
  • Absence-of-errors fallacy.

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


Sayeda Sabetunnahar

CCTV Monitoring Officer

4 周

???? ?? ????????? ????

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了