UNIT6

Digital Learning Content Overview

  • Course: Software Engineering

  • Institution: Parul University

  • Instructor: Prof. Gulbakshee Dharmale

Unit 6: Software Testing and Quality Assurance

Key Topics Covered

  • Software Testing Concepts

    • Definitions and importance of software testing

  • Psychological aspects of testing

  • Levels of testing

  • Testing Process

    • Test planning, design, execution

  • Black-Box Testing

    • Techniques: Boundary value analysis, Pairwise testing, State-based testing

  • White-Box Testing

    • Criteria for test case generation, tool support


Software Testing

Concepts of Software Testing

  • Purpose: To find errors in software before delivery.

  • Understanding testing techniques for discovering faults.

  • Guidelines for interface testing.

  • Object-oriented testing approaches.

  • Principles of CASE tool support for testing.

Psychology of Testing

  • Tests traceable to customer requirements.

  • Early planning of tests.

  • Start testing small, proceed to large-scale testing.

  • Exhaustive testing is impractical.

  • Independent third-party testing recommended.

Phases of Software Testing

  1. Component Testing

    • Focus on individual program components.

    • Tests based on developer’s experience.

  2. Integration Testing

    • Testing of integrated components.

    • Tests based on specifications.

Testing Process Overview

  • Design test cases.

  • Prepare test data.

  • Execute program with test data.

  • Compare results to expected outcomes.

Test Planning

  • Importance of test planning in project execution.

  • Main document: Master test plan.

  • Outlines scope, risks, and estimation of test efforts.

Test Case Design

  • Ensures completeness and high error detection likelihood.

  • Two main testing methods:

    1. Black-Box Testing

    2. White-Box Testing

Test Execution

  • Execute code and compare expected vs. actual results.

  • Key factors include risk assessment and reporting.


Levels of Testing

Distinct Methodologies

  • Functional Testing

    • Based on software specifications, evaluating compliance.

  • Non-Functional Testing

    • Assessing performance, security, usability, etc.


Black-Box Testing

  • Considered as behavioral testing.

  • Derived from functional requirements.

  • Focused on input conditions and behavior.

Errors Found in Black-Box Testing

  1. Incorrect/missing functions.

  2. Interface errors.

  3. Data structure issues.

  4. Behavioral or performance errors.


Boundary Value Analysis

Test Case Design Technique

  • Selects cases from edges of equivalence classes.

  • Focuses on both input and output conditions.


Pairwise Testing

Testing Paradigm

  • Uses permutations and combinations of input parameter pairs.

  • Reduces test case execution time while increasing coverage.

Advantages
  • Reduces execution of test cases.

  • Increases defect detection ratio.

Disadvantages
  • May miss highly probable combinations.

  • Misinterpretations can occur if variables not understood.


State-Based Testing

  • Focuses on relationships between modeled objects in software.

  • Develop tests that verify expected relationships.

Graph Representation in Testing

  • Nodes represent objects.

  • Links denote relationships; can be directed or undirected.


White-Box Testing

Overview

  • Test case design based on control structure of the code.

  • Ensures all paths and decisions in a module are tested.

Techniques in White-Box Testing

  • Basis Path Testing

    • Derives test cases to cover all statements.

  • Cyclomatic Complexity

    • Measures logical complexity and independence of paths.


Quality Control

Definition

  • Encompasses inspections, reviews, and tests throughout the process.

  • Ensures compliance with predefined specifications.

Cost of Quality

  • Divided into three types:

    1. Prevention Costs

    2. Appraisal Costs

    3. Failure Costs


Software Quality Assurance (SQA)

Role of SQA

  • Auditing, reporting, and addressing quality issues.

  • Ensures conformance to defined standards and protocols.

Quality Standards

  • ISO 9000 and ISO 9001

    • Certification standards emphasizing quality management systems.


References

  • Pressman, R. S. (2005). Software engineering: a practitioner's approach.

  • Sommerville, I. (2013). Software Engineering.

  • Jalote, P. (2012). An integrated approach to software engineering.