SQT Mid
SQT Mid
1. Time
o Tight deadlines in software projects can result in rushed development and testing. This may lead to
incomplete or poorly implemented features, impacting the overall functionality and user experience.
Ensuring timely delivery while maintaining quality is a critical challenge.
2. Cost
o Software development is resource-intensive, requiring investment in tools, skilled professionals, and
infrastructure. Budget constraints can limit these resources, affecting the scope, quality, or timeline of
the project. Unexpected changes or issues can further escalate costs.
3. Quality
o Delivering high-quality software requires meticulous design, development, and testing, which takes
both time and money. Balancing quality with constraints often results in bugs, poor performance, or
usability issues, leading to dissatisfaction and increased maintenance efforts.
# What is CMM?
The Capability Maturity Model (CMM) is a framework that evaluates and improves the software development
processes of an organization. It helps organizations assess their current process maturity level, enabling them to
enhance their ability to deliver high-quality software efficiently and cost-effectively.
CMM provides a structured pathway for organizations to gradually improve their processes, ensuring consistency,
quality, and continuous optimization in software development.
# What is TMM?
The Testing Maturity Model (TMM) is a framework used to assess and improve the testing processes in an
organization. Just like the Capability Maturity Model (CMM) focuses on software development, TMM focuses on
how testing is planned, executed, and improved.
TMM helps organizations evolve their testing processes to ensure better software quality, reduce bugs, and make
testing more efficient and effective.
Summary of TMM:
TMM Level 1: No formal testing, testing starts after coding.
TMM Level 2: Basic testing plans and strategies are introduced.
TMM Level 3: Testing is integrated into the development process, and a testing team is established.
TMM Level 4: Testing is systematically managed, and its effectiveness is measured.
TMM Level 5: Focus on defect prevention, quality control, and continuous improvement.
TMM helps organizations move from unorganized, reactive testing to structured, proactive, and optimized testing
practices.
# What is TPI?
Test Process Improvement (TPI) is a method used to enhance how testing activities are planned and carried out
within an organization. It focuses on improving all steps related to finding and fixing software defects to ensure better
software quality, faster delivery, and reduced costs.
A test process includes tasks like setting testing goals, designing test cases, hiring test engineers, running tests, and
reporting bugs. TPI aims to make these activities more efficient, organized, and effective.
Defect Prevention
What it is: Stopping errors from being introduced into the software.
How it works:
1. Error Source Removal:
Finding and fixing the root causes of mistakes (like unclear requirements or human
misunderstandings).
Example: Providing training to developers to avoid common mistakes.
2. Error Blocking:
Preventing errors through rules or automated checks.
Example:
Preventing invalid input (e.g., blocking a 0 in a divisor field).
Using tools for design validation to ensure correct implementation.
o Why it matters: The earlier you stop errors, the fewer bugs you'll face later.
Defect Reduction
What it is: Finding and fixing errors after they’ve been introduced.
Techniques to reduce defects:
1. Inspection:
Reviewing software code, designs, or test plans without running the program.
Types:
Informal Reviews: Simple discussions or quick checks (e.g., casual peer reviews).
Formal Inspections: Structured reviews involving multiple people.
2. Testing:
Running the software to check its behavior.
If it fails, the issue is analyzed, located, and fixed.
3. Other Techniques:
Risk Analysis: Identifying potential problem areas early.
Boundary Value Testing: Checking edge cases in code (e.g., extreme inputs).
Simulation and Prototyping: Testing how the system works in a safe, experimental
environment (e.g., autopilot simulations).
o Why it matters: Since errors can't always be prevented, finding and fixing them early is crucial.
Defect Containment
What it is: Limiting the impact of defects that remain in the system.
How it works:
1. Software Fault-Tolerance:
Ensuring the system continues to work despite errors.
Techniques:
Recovery (Rollback and Redo): Fixing problems by undoing or redoing actions.
N-Version Programming (NVP): Running multiple versions of software to handle
faults.
2. Safety Assurance and Failure Containment:
Preventing severe accidents caused by system failures.
Example:
An autopilot system ensures the plane stays safe even if a fault occurs.
Safety Measures: Identifying hazards, controlling risks, and minimizing damage.
o Why it matters: Defects can’t always be eliminated, so limiting their effects is essential for safety
and reliability.
Summary:
1. Defect Prevention: Stop errors before they happen.
2. Defect Reduction: Find and fix errors that slipped through.
3. Defect Containment: Minimize the damage caused by remaining errors.
QA focuses on making the software as error-free, safe, and reliable as possible.
Summary:
Complete testing is about finding every single bug in a system, but it is nearly impossible due to:
The vast number of input combinations.
The complexity of system design.
Limited resources (time, money, manpower).
Difficulty in recreating real-world conditions.
Instead of complete testing, testers aim for effective testing, focusing on the most critical areas of the system.
1. Establish Baselines:
Measurement helps set quality benchmarks that the software must achieve.
Example: If a website should allow users to extract information within 20 minutes, this metric becomes a
baseline to evaluate usability.
Why important? Baselines give teams clear goals for performance and usability.
Summary:
Measuring software quality is crucial to:
Establish baselines for success.
Ensure cost-effective improvements.
Plan future enhancements based on current quality levels.
Ultimately, it helps deliver reliable, efficient, and user-friendly software.
# QA Team Structure
The structure of a Quality Assurance (QA) team determines how testing responsibilities are organized and managed.
Different organizations use different structures based on their size, project needs, and workflow. The main QA team
structures include Vertical, Horizontal, and Mixed models.
1. Vertical Model
Structure:
o A QA team is aligned with a specific product or project.
o Dedicated testers focus on one or more testing tasks for that product.
Key Features:
o Testers work closely with the development and product teams.
o The team has a deep understanding of the product being tested.
Advantages:
o Improved product knowledge and specialization.
o Faster communication and collaboration with the product team.
Challenges:
o Resources are tied to specific projects, which can lead to inefficiencies when workloads vary across
products.
2. Horizontal Model
Structure:
o QA teams are specialized in a particular type of testing (e.g., performance testing, security testing).
o They work on multiple projects across the organization.
Key Features:
o Testing expertise is centralized.
o Teams provide consistent testing services for different products.
Advantages:
o Efficient use of specialized skills across projects.
o Encourages standardization of testing practices.
Challenges:
o Less familiarity with individual products.
o Requires strong coordination to align with project-specific goals.
3. Mixed Model
Structure:
o Combines elements of both vertical and horizontal models.
o Testers may specialize in a particular type of testing while being assigned to specific products.
Key Features:
o Large organizations with diverse products and testing needs often use this structure.
o Teams are flexible and can adapt to project-specific requirements.
Advantages:
o Balances specialization and product familiarity.
o Provides scalability for large organizations with multiple products.
Challenges:
o Can be complex to manage due to overlapping responsibilities.
# Automated Testing
Automated testing is the process of using software tools to execute pre-defined test cases automatically, compare
actual outcomes with expected outcomes, and identify defects in the application. It is particularly useful for repetitive
tasks, regression testing, and performance testing, saving time and reducing human error.
Benefits of Automation
Reduces repetitive work for testers.
Improves accuracy by eliminating human error.
Saves time for large or complex test suites.
Allows parallel execution of tests, speeding up processes.
However, it is essential to strike a balance between automated and manual testing to ensure comprehensive software
quality assurance.