Skip to main content

Unit - 6

TITLE

Software Testing & Quality Assurance​


1. Software Testing Concepts​

Software Testing is a systematic process used to identify defects and ensure software meets requirements before delivery.


1.1 Definition of Testing​

  • Software Testing is the process of executing a program with the intent of finding errors

  • Ensures:

    • Correct functionality
    • Reliability
    • Performance

1.2 Objectives of Testing​

  • Detect defects and errors
  • Ensure software meets requirements
  • Improve quality and reliability
  • Validate system behavior
  • Build confidence before deployment

1.3 Testing Techniques Overview​

Software can be tested using two main approaches:

  • Black-Box Testing

    • Based on requirements
    • Focus on inputs and outputs
  • White-Box Testing

    • Based on internal logic
    • Focus on code structure

👉 Both techniques are complementary


1.4 Interface Testing Guidelines​

Interface Testing ensures correct interaction between system components.

Guidelines:

  • Check data passed between modules
  • Validate input/output formats
  • Handle invalid or unexpected data
  • Test boundary conditions
  • Ensure proper communication between interfaces

1.5 Object-Oriented Testing​

  • Testing focused on objects, classes, and interactions

Focus Areas:

  • Methods and attributes
  • Object states
  • Interaction between objects

Levels:

  • Class testing
  • Integration of objects
  • System-level behavior

1.6 CASE Tool Support​

CASE (Computer-Aided Software Engineering) tools assist in testing.

Functions:

  • Test case generation
  • Test execution automation
  • Bug tracking
  • Reporting and documentation

Benefits:

  • Improves efficiency
  • Reduces manual effort
  • Enhances accuracy

2. Psychology of Testing​

Psychology of Testing focuses on the mindset and principles that make testing effective.


2.1 Traceability to Requirements​

  • Every test should be linked to a requirement

Purpose:

  • Ensures complete coverage
  • Validates that all requirements are tested

2.2 Early Test Planning​

  • Testing should be planned before development begins

Benefits:

  • Better test coverage
  • Early defect detection
  • Improved project control

2.3 Pareto Principle​

  • Also known as the 80/20 rule

Meaning:

  • 80% of defects come from 20% of modules

Implication:

  • Focus testing on critical areas

2.4 Testing from Small to Large​

  • Begin testing at component level and move to full system

Flow:

  • Unit Testing → Integration Testing → System Testing

2.5 Exhaustive Testing Limitation​

  • Testing all possible inputs is not feasible

Reason:

  • Too many combinations
  • Time and cost constraints

👉 Therefore, use selective and smart testing techniques


2.6 Independent Testing​

  • Testing should be done by an independent team

Reason:

  • Developers may overlook their own errors

Benefit:

  • More objective and effective testing

3. Software Testing Phases​

Software testing is performed in stages, progressing from small components to the complete system.


3.1 Component Testing​

  • Testing of individual components (units) of a program
  • Done before integration

3.1.1 Developer-Based Testing​

  • Performed by developers
  • Based on their understanding of the code
  • Uses developer-created test cases

3.1.2 Unit-Level Focus​

  • Focuses on smallest testable units

Goal:

  • Verify each unit works correctly in isolation

3.2 Integration Testing​

  • Testing of combined components to form a system or subsystem

3.2.1 Subsystem Testing​

  • Groups of components are tested together

Goal:

  • Ensure modules interact correctly

3.2.2 System Specification-Based Testing​

  • Tests are based on system specifications

Goal:

  • Verify integrated system behaves as per requirements

4. Testing Process​

Testing Process defines the steps followed to test software systematically.


4.1 Test Case Design​

  • Creation of test cases to verify system behavior

Includes:

  • Input conditions
  • Expected output
  • Test scenarios

Goal:

  • Ensure maximum error detection

4.2 Test Data Preparation​

  • Preparing input data required for testing

Guidelines:

  • Use valid and invalid data
  • Include boundary values

4.3 Test Execution​

  • Running the program using test cases and test data

Activities:

  • Execute test cases
  • Observe outputs

4.4 Result Comparison​

  • Compare actual results with expected results

Outcome:

  • Match → Test Passed
  • Mismatch → Defect found

4.5 Test Reporting​

  • Documenting results of testing

Includes:

  • Test results
  • Defects found
  • Status reports

Purpose:

  • Track progress and quality of software

5. Test Planning​

Test Planning is the most important activity in testing that defines how testing will be performed.


5.1 Definition of Test Plan​

  • A test plan is a document that:

    • Defines testing scope
    • Lists tasks and milestones
    • Estimates testing effort
  • Also called:

    • Master Test Plan / Project Test Plan

5.2 Importance of Test Planning​

  • Provides clear testing direction
  • Helps track project progress
  • Ensures proper resource allocation
  • Improves test effectiveness
  • Reduces risks

5.3 Test Planning Activities​


5.3.1 Scope and Risk Identification​

  • Identify:

    • What will be tested
    • What will NOT be tested
    • Risks involved

5.3.2 Test Strategy Documentation​

  • Define overall testing approach

Includes:

  • Types of testing
  • Tools and techniques
  • Testing methods

5.3.3 Entry and Exit Criteria​

  • Entry Criteria: Conditions to start testing
  • Exit Criteria: Conditions to stop testing

5.3.4 Test Estimation​

  • Estimate:

    • Time required
    • Resources needed
    • Effort involved

5.3.5 Scheduling and Evaluation​

  • Plan:

    • When testing will occur
    • How results will be evaluated

5.3.6 Test Documentation​

  • Prepare:

    • Test cases
    • Test reports
    • Test logs

Goal:

  • Ensure repeatability and proper tracking

6. Test Case Design​

Test Case Design defines how test cases are created to effectively detect errors in software.


6.1 Purpose of Test Case Design​

  • To create test cases that:

    • Detect maximum defects
    • Cover all functionalities
    • Ensure correctness of software

Goal:

  • Increase probability of finding errors

6.2 Completeness of Testing​

  • Test cases should ensure complete coverage

Includes:

  • All functional requirements
  • All possible input conditions
  • Critical paths of execution

Note:

  • Complete (exhaustive) testing is not possible, so effective selection is required

6.3 Black-Box Testing Approach​

  • Testing based on external behavior of the system

Focus:

  • Inputs and outputs
  • Functional requirements

Characteristics:

  • No knowledge of internal code
  • Derived from specifications

Finds errors in:

  • Missing or incorrect functions
  • Interface issues
  • Data handling errors

6.4 White-Box Testing Approach​

  • Testing based on internal structure of code

Focus:

  • Control flow
  • Logic paths
  • Data structures

Characteristics:

  • Requires knowledge of code
  • Tests internal operations

Ensures:

  • All paths are executed
  • All conditions are tested
  • Loops are properly handled

7. Test Execution​

Test Execution is the process of running test cases and comparing actual results with expected results.


7.1 Execution Process​

  • Execute the program using prepared test cases and test data

Steps:

  • Run test cases
  • Capture outputs
  • Compare with expected results

7.2 Test Selection Based on Risk​

  • Select test cases based on risk and priority

Focus:

  • Critical functionalities
  • High-risk areas
  • Frequently used features

7.3 Test Assignment​

  • Assign test cases to testers

Guidelines:

  • Distribute workload properly
  • Match tasks with skill levels

7.4 Bug Reporting​

  • Report defects found during testing

Includes:

  • Bug description
  • Steps to reproduce
  • Severity and priority

7.5 Issue Resolution​

  • Fix reported defects

Process:

  • Developers analyze bugs
  • Apply fixes
  • Retest to confirm resolution

7.6 Status Reporting​

  • Track and report testing progress

Includes:

  • Test execution status
  • Number of passed/failed cases
  • Defect status

8. Levels of Testing​

Levels of Testing define different stages and types of testing used to evaluate software.


8.1 Functional Testing​


8.1.1 Definition​

  • Functional Testing is a type of black-box testing
  • It verifies that software functions according to specified requirements

8.1.2 Steps in Functional Testing​

  1. Identify required functionalities
  2. Create test data based on specifications
  3. Define expected outputs
  4. Execute test cases
  5. Compare actual results with expected results

8.2 Non-Functional Testing​

  • Tests non-functional aspects of software like performance, usability, and security

8.2.1 Performance Testing​

  • Measures speed, response time, and efficiency

8.2.2 Load Testing​

  • Tests system behavior under expected user load

8.2.3 Stress Testing​

  • Tests system under extreme conditions

8.2.4 Usability Testing​

  • Evaluates user-friendliness and ease of use

8.2.5 Security Testing​

  • Checks for vulnerabilities and data protection

8.2.6 Portability Testing​

  • Verifies software works across different platforms and environments

9. Unit Testing​

Unit Testing focuses on testing individual units/components of software in isolation.


9.1 Definition​

  • Unit Testing is the process of testing smallest parts of source code

  • Goal:

    • Ensure each unit works correctly
    • Validate functionality as per requirements

9.2 Developer Responsibility​

  • Performed by developers before handing over to testers

Characteristics:

  • Developers write and execute test cases
  • Based on internal knowledge of code
  • Helps detect errors early

9.3 Test Data Usage​

  • Developers use their own test data

Note:

  • Test data is usually different from QA/testing team data

Purpose:

  • Verify logic under different conditions

9.4 Isolation of Units​

  • Each unit is tested independently

Goal:

  • Isolate and identify defects easily

Challenge:

  • Dependent modules may not be available

Solution:

  • Use:

    • Drivers (simulate calling modules)
    • Stubs (simulate called modules)

10. Integration Testing​

Integration Testing verifies that combined modules work together correctly and that their interfaces behave as expected.


10.1 Definition​

  • Integration Testing is the process of testing interactions between integrated components/modules

Focus:

  • Data flow between modules
  • Interface correctness
  • Communication between components

10.2 Bottom-Up Integration​

  • Testing starts from lower-level modules and moves upward

Process:

  • Test individual units
  • Combine them into higher-level modules
  • Continue integration step-by-step

Support:

  • Uses drivers to simulate higher-level modules

Advantage:

  • Easier debugging (low-level errors found early)

10.3 Top-Down Integration​

  • Testing starts from top-level modules and moves downward

Process:

  • Test main control module first
  • Integrate lower-level modules gradually

Support:

  • Uses stubs to simulate lower-level modules

Advantage:

  • Early validation of system structure and logic

11. System Testing​

System Testing evaluates the complete, integrated system to ensure it meets all specified requirements.


11.1 Definition​

  • System Testing is the process of testing the entire system as a whole

  • Performed after:

    • Unit Testing
    • Integration Testing

11.2 Importance​

  • Verifies overall system functionality
  • Ensures all components work together correctly
  • Detects system-level defects
  • Validates both functional and technical requirements

11.3 Real Environment Testing​

  • Testing is done in an environment similar to production

Purpose:

  • Simulate real-world usage
  • Identify environment-related issues

11.4 Requirement Validation​

  • Ensures system meets user and system requirements

Includes:

  • Functional requirements
  • Performance requirements
  • Business requirements

12. Black-Box Testing​

Black-Box Testing is a technique that tests software based on its external behavior without knowing internal code.


12.1 Definition​

  • Black-Box Testing treats the program as a “black box”

  • Testing is based on:

    • Input values
    • Expected output

12.2 Characteristics​

  • No knowledge of internal logic
  • Based on specifications and requirements
  • Focus on input-output behavior
  • Can be designed early in development

12.3 Functional Testing Basis​

  • Black-Box Testing is mainly used for functional testing

Purpose:

  • Verify system performs required functions
  • Validate outputs against given inputs

12.4 Error Categories​

Black-Box Testing helps detect the following errors:


12.4.1 Missing Functions​

  • Required functionality is not implemented

12.4.2 Interface Errors​

  • Errors in interaction between modules or systems

12.4.3 Data Structure Errors​

  • Issues in:

    • Data handling
    • Database access

12.4.4 Performance Errors​

  • System behaves incorrectly under:

    • Load
    • Stress

12.4.5 Initialization Errors​

  • Errors during:

    • Startup
    • Shutdown

13. Boundary Value Analysis (BVA)​

Boundary Value Analysis is a black-box testing technique that focuses on testing values at the edges (boundaries) of input and output domains.


13.1 Definition​

  • BVA selects test cases at the boundary values rather than random values

Reason:

  • Errors are most likely to occur at boundaries

13.2 Input Domain Testing​

  • Test inputs at:

    • Minimum value
    • Maximum value
    • Just below minimum
    • Just above maximum

Example:

  • If range = 1 to 100

    • Test: 0, 1, 2, 99, 100, 101

13.3 Output Domain Testing​

  • Apply BVA to output conditions as well

Goal:

  • Ensure correct output at boundary limits

13.4 Guidelines​


13.4.1 Range Boundaries​

  • For range [a, b], test:

    • a
    • b
    • just below a
    • just above b

13.4.2 Min-Max Values​

  • Test:

    • Minimum values
    • Maximum values
    • Values just above and below them

13.4.3 Internal Data Structures​

  • Test boundaries of:

    • Arrays
    • Buffers
    • Data structures

Purpose:

  • Detect overflow, underflow, and limit-related errors

14. Pairwise Testing​

Pairwise Testing is a technique used to test software by checking all possible pairs of input parameters.


14.1 Definition​

  • Pairwise Testing is a method where every possible pair of input values is tested at least once

Goal:

  • Detect defects caused by interaction between parameters

14.2 Permutation and Combination Method​

  • Based on Permutation & Combination (P&C)

Concept:

  • Instead of testing all combinations (which is huge), test pair combinations of inputs

Benefit:

  • Reduces number of test cases significantly

14.3 Parameter Combinations​

  • For a system with multiple inputs:

    • All possible pairs of parameters are tested

Example:

  • Parameters: A, B, C

  • Test combinations:

    • (A,B), (A,C), (B,C)

14.4 Advantages​

  • Reduces number of test cases
  • High test coverage (near complete for pairs)
  • Detects interaction-based defects
  • Saves time and cost

14.5 Disadvantages​

  • May miss defects involving more than two parameters
  • Requires understanding of parameter relationships
  • Incorrect selection can reduce effectiveness

15. State-Based Testing​

State-Based Testing focuses on testing software by analyzing states of objects and transitions between them.


15.1 Object Modeling​

  • Identify objects in the system and their behavior

Includes:

  • Object states
  • Attributes
  • Interactions

Goal:

  • Understand how objects behave under different conditions

15.2 Relationship Graphs​

  • Represent system using a graph structure

Components:

  • Nodes → represent objects
  • Links → represent relationships

Purpose:

  • Visualize interactions
  • Ensure all relationships are tested

  • Graph consists of:

    • Nodes (objects)
    • Links (relationships)
    • Node weights (object properties)
    • Link weights (relationship characteristics)

  • Relationship flows in one direction only

Example:

  • A → B

  • Relationship exists in both directions

Example:

  • A ↔ B

  • Multiple relationships between the same nodes

Purpose:

  • Represent different types of interactions

15.4 Graph-Based Testing Methods​


15.4.1 Transaction Flow Modeling​

  • Nodes represent steps in a transaction
  • Links represent sequence of operations

15.4.2 Finite State Modeling​

  • Nodes represent system states
  • Links represent state transitions

Example:

  • Login → Dashboard → Logout

15.4.3 Data Flow Modeling​

  • Nodes represent data objects
  • Links represent data transformations

15.4.4 Timing Modeling​

  • Focus on execution timing between components

Includes:

  • Sequence of operations
  • Time constraints

16. White-Box Testing​

White-Box Testing is a technique that tests software based on its internal structure and logic.


16.1 Definition​

  • White-Box Testing involves testing the internal working of the program

  • Requires knowledge of:

    • Code
    • Logic
    • Control flow

16.2 Control Structure Testing​

  • Focuses on program control structures

Includes:

  • Conditions (if-else)
  • Loops
  • Branching

Goal:

  • Ensure all control paths are tested

16.3 Path Coverage​

  • Ensures all independent paths in the program are executed

Purpose:

  • Detect logical errors
  • Improve test coverage

16.4 Loop Testing​

  • Tests loops under different conditions

Cases:

  • Zero iterations
  • One iteration
  • Multiple iterations
  • Boundary conditions

16.5 Data Structure Validation​

  • Verifies correctness of internal data structures

Checks:

  • Data integrity
  • Proper initialization
  • Correct data manipulation

17. Basis Path Testing​

Basis Path Testing is a white-box testing technique that uses the program’s control flow to design a minimum set of test cases which guarantees execution of every independent path at least once.


17.1 Definition​

  • Introduced as part of structured testing techniques
  • Uses flow graphs + cyclomatic complexity

Key Idea:

  • Instead of testing all paths (impossible), test a basis set of paths

17.2 Flow Graph Notation​

A flow graph is a graphical representation of program logic.


17.2.1 Nodes​

  • Represent:

    • Single statement OR
    • Sequence of statements

Example:

  • Assignment statements grouped into one node

17.2.2 Edges​

  • Represent flow of control (execution path)

Note:

  • Every edge must connect two nodes

17.2.3 Regions​

  • Closed areas formed by nodes and edges

Important:

  • Number of regions = Cyclomatic Complexity

17.2.4 Predicate Nodes​

  • Nodes containing decision conditions

Examples:

  • if, while, for

Property:

  • Have two or more outgoing edges

17.3 Independent Paths​

  • A path that introduces at least one new edge or condition

Important Points:

  • Each new path must add new logic coverage
  • Combination of already covered paths is not independent

Example Concept:

  • If a program has 4 independent paths → minimum 4 test cases needed

17.4 Cyclomatic Complexity​

  • A metric that measures logical complexity of program

Uses:

  • Determines number of independent paths
  • Defines minimum number of test cases

17.4.1 Formula (E - N + 2)​

V(G)=E-N+2

  • E = Number of edges
  • N = Number of nodes

17.4.2 Formula (P + 1)​

V(G)=P+1

  • P = Number of predicate (decision) nodes

17.4.3 Regions Method​

  • Cyclomatic Complexity = Number of regions in flow graph

17.5 Deriving Test Cases​

This is a step-by-step process:


17.5.1 Flow Graph Creation​

  • Convert program or pseudo-code into a flow graph
  • Assign numbers to nodes

17.5.2 Complexity Calculation​

  • Compute V(G) using:

    • Edges & nodes
    • Predicate nodes
    • Regions

👉 This gives number of test cases required


17.5.3 Path Identification​

  • Identify all independent paths

Example Idea:

  • Path 1 → Straight execution
  • Path 2 → Condition true
  • Path 3 → Condition false
  • Path 4 → Loop path

17.5.4 Test Case Generation​

  • Design test cases such that:

    • Each path is executed at least once
    • Conditions are tested (true & false)

Result:

  • Ensures:

    • Complete statement coverage
    • Logical correctness
    • Reduced redundant testing

🔁 Summary Insight​

  • Cyclomatic Complexity = No. of independent paths = Minimum test cases
  • Basis Path Testing ensures maximum logic coverage with minimum effort

18. Graph Matrices​

Graph Matrices are a tabular representation of a flow graph used to analyze control flow and program complexity.


18.1 Definition​

  • A Graph Matrix is a square matrix used to represent relationships between nodes in a flow graph

Purpose:

  • Simplify analysis of control structure
  • Help in calculating complexity

18.2 Matrix Representation​

  • Matrix size = number of nodes × number of nodes

Structure:

  • Rows → represent source nodes
  • Columns → represent destination nodes
  • Cell value → indicates connection (edge)

Example:

  • If node i connects to node j → entry (i, j) = 1

  • Each connection (edge) can have a weight

Types:

  • 1 → connection exists
  • 0 → no connection

Advanced:

  • Weights can represent:

    • Execution time
    • Probability
    • Cost

18.4 Connection Matrix​

  • A simplified graph matrix where:

    • All edges are marked as 1
    • No edge = 0

Property:

  • Each row with 2 or more 1s represents a predicate node

18.5 Complexity Calculation Using Matrix​

  • Cyclomatic Complexity can be computed using matrix:

Steps:

  1. Count connections in each row
  2. Subtract 1 from each row count
  3. Sum all values
  4. Add 1

Formula:

  • V(G) = (Total connections − number of nodes) + 1

Simplified:

  • V(G) = Sum of (connections per row − 1) + 1

🔁 Key Insight​

  • Graph Matrix = alternative to flow graph

  • Makes:

    • Complexity calculation easier
    • Control flow analysis systematic

19. Quality Concepts​

Quality Concepts define what makes software reliable, efficient, and acceptable to users.


19.1 Definition of Quality​

  • Quality is a characteristic or attribute of a product

In software:

  • It means meeting:

    • Requirements
    • Standards
    • User expectations

19.2 Quality of Design​

  • Refers to how well the software is designed according to requirements

Includes:

  • System architecture
  • Specifications
  • Design decisions

Key Point:

  • Better design → higher potential quality

19.3 Quality of Conformance​

  • Refers to how well the software follows the design specifications during implementation

Focus:

  • Coding standards
  • Implementation accuracy

Key Point:

  • Even a good design fails if implementation is poor

19.4 User Satisfaction​

  • Final measure of quality

Formula (conceptual):

  • User Satisfaction = ✔ Correct functionality ✔ Good quality ✔ Delivered on time and within budget

Goal:

  • Meet user expectations and provide reliable performance

20. Quality Control​

Quality Control (QC) focuses on detecting defects in software products through systematic activities.


20.1 Definition​

  • Quality Control is the process of:

    • Monitoring software products
    • Ensuring they meet defined specifications and standards
  • It involves:

    • Testing
    • Reviews
    • Inspections

20.2 Inspection and Review​

  • QC uses formal and informal evaluation techniques

Inspection:

  • Structured process

  • Detects defects in:

    • Code
    • Design
    • Documents

Review:

  • Less formal

  • Includes:

    • Walkthroughs
    • Peer reviews

Goal:

  • Identify defects early

20.3 Feedback Mechanism​

  • QC includes a feedback loop

Purpose:

  • Send defect information back to development

Benefits:

  • Improves process quality
  • Reduces future errors
  • Enables continuous improvement

21. Quality Assurance (QA)​

Quality Assurance focuses on preventing defects by ensuring proper processes, standards, and practices are followed.


21.1 Definition​

  • Quality Assurance is the process of:

    • Auditing and monitoring software processes
    • Ensuring compliance with standards

Key Idea:

  • QA is process-oriented (prevention, not just detection)

21.2 Role of QA​

  • Ensure development follows defined processes and standards

Activities:

  • Process monitoring
  • Audits and reviews
  • Reporting quality issues
  • Supporting improvement of development practices

Goal:

  • Achieve high-quality software

21.3 Management Responsibilities​

  • Management is responsible for:

    • Addressing issues identified by QA
    • Providing resources to fix problems
    • Enforcing quality standards

Importance:

  • QA is effective only if management takes corrective actions

22. Cost of Quality​

Cost of Quality refers to the total cost involved in ensuring software quality and the cost incurred due to poor quality.


22.1 Definition​

  • Cost of Quality includes:

    • Cost to prevent defects
    • Cost to detect defects
    • Cost due to failures

👉 Goal: Minimize total cost while maintaining high quality


22.2 Prevention Cost​

  • Cost incurred to avoid defects before they occur

Includes:

  • Quality planning
  • Training
  • Formal technical reviews
  • Test tools and equipment

Key Idea:

  • Investing here reduces overall cost

22.3 Appraisal Cost​

  • Cost of evaluating and testing software

Includes:

  • Inspections
  • Testing activities
  • Quality audits
  • Equipment calibration

Purpose:

  • Detect defects before delivery

22.4 Failure Cost​

  • Cost due to defects in software

22.4.1 Internal Failure​

  • Defects found before delivery

Examples:

  • Rework
  • Debugging
  • Retesting

22.4.2 External Failure​

  • Defects found after delivery

Examples:

  • Customer complaints
  • Product replacement
  • Maintenance and support
  • Warranty costs

🔁 Key Insight​

  • Total Cost of Quality = Prevention + Appraisal + Failure Costs

👉 Better prevention → lower failure cost → overall cost reduces


23. Software Quality Assurance (SQA)​

SQA ensures that software is developed with high quality by following proper standards, processes, and practices.


23.1 Definition​

  • Software Quality Assurance is defined as:

    • Conformance to explicitly stated requirements
    • Adherence to documented standards
    • Meeting implicit expectations of professional software

Key Idea:

  • Quality is measured against:

    • Requirements
    • Standards
    • User expectations

23.2 Key Points​

  • Requirements are the foundation of quality
  • Following standards is essential for consistency
  • Implicit requirements (like usability, reliability) also matter

Focus:

  • Prevent defects
  • Improve development process
  • Ensure product quality

23.3 SQA Group​


23.3.1 Composition​

  • SQA group consists of:

    • Software engineers
    • Project managers
    • Customers
    • Quality specialists

23.3.2 Responsibilities​

  • Prepare SQA plan
  • Define standards and procedures
  • Conduct audits and reviews
  • Monitor development process
  • Report quality issues
  • Maintain documentation

Goal:

  • Help team deliver a high-quality software product

24. Role of SQA Group​

The SQA Group ensures that software development follows defined standards and processes to achieve high quality.


24.1 SQA Plan Preparation​

  • Prepares a Software Quality Assurance (SQA) Plan during project planning

Includes:

  • Evaluations to be performed
  • Audits and reviews
  • Applicable standards
  • Error reporting procedures
  • Documents to be produced
  • Feedback mechanisms

24.2 Process Participation​

  • Participates in defining the software development process

Role:

  • Helps establish:

    • Methods
    • Procedures
    • Standards

24.3 Compliance Review​

  • Reviews development activities to ensure process compliance

Checks:

  • Adherence to standards
  • Proper implementation of procedures

24.4 Audit Activities​

  • Conducts audits of software work products

Purpose:

  • Verify compliance with defined processes
  • Identify deviations

24.5 Work Product Review​

  • Reviews selected work products such as:

    • Requirements
    • Design documents
    • Code

Goal:

  • Ensure quality and correctness
  • Detect defects early

25. Software Reliability​

Software Reliability refers to how dependably software performs without failure over a period of time in a given environment.


25.1 Definition​

  • Software Reliability is defined as the probability of failure-free operation of a program for a specified time under specified conditions

25.2 Failure Concept​

  • A failure occurs when software does not meet its requirements

Key Points:

  • Failure = deviation from expected behavior
  • Fixing one failure may sometimes introduce new errors

25.3 Importance​

  • Builds user trust
  • Reduces system crashes
  • Saves time and cost
  • Ensures consistent performance

Goal:

  • Deliver software that works correctly and reliably over time

26. Measures of Reliability and Availability​

These metrics are used to quantify software reliability and system performance over time.


26.1 MTBF (Mean Time Between Failures)​

  • MTBF represents the average time between two consecutive failures

Formula:

  • MTBF = MTTF + MTTR

Meaning:

  • Higher MTBF → more reliable system

26.2 MTTF (Mean Time to Failure)​

  • MTTF is the average time the system operates before a failure occurs

Used for:

  • Non-repairable systems

Meaning:

  • Higher MTTF → longer failure-free operation

26.3 MTTR (Mean Time to Repair)​

  • MTTR is the average time required to fix a failure

Includes:

  • Detection time
  • Repair time
  • Recovery time

Meaning:

  • Lower MTTR → faster recovery

26.4 Availability Formula​

Availability=MTTFMTTF+MTTRAvailability=\frac{MTTF}{MTTF+MTTR}

Meaning:

  • Availability shows the probability that the system is operational at a given time

🔁 Key Insight​

  • High reliability system:

    • High MTTF
    • Low MTTR
    • High Availability

27. Quality Standards​

Quality Standards define the guidelines and rules that ensure software is developed and maintained with consistent quality.


27.1 SQA Standards Classification​

SQA standards are broadly classified into two categories:


27.1.1 Management Standards​

  • Focus on organizational and managerial aspects of quality

Includes:

  • Project planning
  • Quality policies
  • Resource management
  • Organizational procedures

Purpose:

  • Ensure proper management and control of software development

27.1.2 Process Standards​

  • Focus on technical and development processes

Includes:

  • Development methodologies
  • Coding standards
  • Testing procedures
  • Documentation practices

Purpose:

  • Ensure consistency and quality in software processes

28. Quality Management Standards​

Quality Management Standards define how an organization manages processes, resources, and practices to ensure consistent software quality.


28.1 Organizational Focus​

  • Emphasis on organization-wide quality improvement

Includes:

  • Establishing quality policies
  • Continuous process improvement
  • Customer satisfaction focus

Goal:

  • Build a culture of quality across the organization

28.2 Infrastructure Requirements​

  • Requires proper supporting structure and resources

Includes:

  • Trained personnel
  • Defined processes and procedures
  • Tools and technologies
  • Documentation systems

Purpose:

  • Ensure smooth implementation of quality standards

28.3 Examples (ISO 9000, CMM)​

  • ISO 9000 Series

    • International standards for quality management systems
    • Focus on documentation and process control
  • CMM (Capability Maturity Model)

    • Framework to assess process maturity levels

    • Levels range from:

      • Initial → Repeatable → Defined → Managed → Optimizing

Goal:

  • Improve process capability and software quality

29. ISO 9001 Certification​

ISO 9001 Certification ensures that an organization follows a standardized Quality Management System (QMS).


29.1 Definition​

  • ISO 9001 is an international standard for quality management systems

Purpose:

  • Ensure consistent product/service quality
  • Improve customer satisfaction

29.2 ISO Organization​

  • ISO (International Organization for Standardization) is a global body that develops standards

Characteristics:

  • Works with national standard organizations
  • Publishes international quality standards

29.3 Standard Development Process​

  • Standards are developed through a structured process

Steps:

  1. Proposal of new standard
  2. Draft preparation
  3. Review by experts
  4. Approval and publication

Goal:

  • Ensure global acceptance and consistency

29.4 Certification Process​

  • Process to obtain ISO 9001 certification:

Steps:

  1. Develop and implement QMS
  2. Document processes and procedures
  3. Conduct internal audits
  4. Apply for certification
  5. External audit by certification body
  6. Certification granted if compliant

Outcome:

  • Organization is officially recognized for maintaining quality standards