Software Testing Part 1
5 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Testing is intended to show that a program does what it is intended to do.

True

Validation testing focuses solely on discovering defects in the software.

False

Program testing can reveal the absence of errors in software.

False

Defect testing aims to uncover hidden issues through unconventional scenarios.

<p>True</p> Signup and view all the answers

The test is considered successful in validation testing if it fails to demonstrate the system's performance.

<p>False</p> Signup and view all the answers

Study Notes

Software Testing Part 1

  • Program testing is used to determine if a program functions as intended and to identify defects before release.
  • Software testing involves executing a program with artificial data and analyzing the results for errors, anomalies, and non-functional attributes.
  • Testing reveals the presence of errors, not their absence.
  • Testing is part of a broader verification and validation process, including static validation techniques.

Program Testing Goals

  • Demonstrate Requirement Compliance: Custom software checks every requirement; generic software confirms all features and combinations function as intended.
  • Discover Defects: Identify incorrect, undesirable, or non-conforming behavior through defect testing (finding crashes, unwanted interactions, incorrect computations, and data corruption).

Validation and Defect Testing

  • Validation Testing: Confirms the system performs correctly, meets requirements, and aligns with specified requirements in real-world scenarios (e.g., testing a banking app with deposits and withdrawals).
  • Defect Testing: Identifies defects through unconventional or extreme test cases to uncover hidden issues (e.g., putting unexpected data into an app). It focuses on uncovering errors not evident in normal usage.

Testing Process Goals

  • Validation Testing Objective: Confirm that the software meets its requirements and operates as intended with successful demonstrations of correct operation and alignment with the specified requirements.
  • Defect Testing Objective: Identify faults or defects in the software, where behavior deviates from specifications, and expose defects that cause incorrect operation or failure to meet specifications.

An Input-Output Model of Program Testing

  • Verification: Assesses if the software is built correctly to its specifications. (Are we building the product right?)
  • Validation: Assesses if the software is built correctly to the user's specified needs and requirements. (Are we building the correct product?)

V & V Confidence

  • Verification and Validation (V&V) are vital in software development to ensure a system meets its requirements and is fit for its intended purpose, by creating established confidence through rigorous testing.
  • Factors influencing V&V confidence levels include software significance (criticality to an organization), user expectations, and marketing timescales/pressures.

Inspections and Testing

  • Software Inspections: Static verification techniques that examine documentation, design, or code without execution, to find inconsistencies, and defects.
  • Software Testing: Dynamic verification involving executing software with test data and analyzing resulting behavior, to establish expected and compliant behavior.

A Model of the Software Testing Process

  • The process involves designing test cases, preparing test data, running the program with test data, comparing results to test cases, and generating test reports.

Stages of Testing

  • Development Testing: Iterative and ongoing process during software development; detects and fixes defects in individual components and integrated systems.
  • Release Testing: A separate team tests an entire release; ensures the software is stable, reliable, and ready to be deployed to users.
  • User Testing: Involves real users in their own environments to gather feedback on how well the software meets user needs.

Development Testing

  • Unit Testing: Focuses on testing individual program units (or object classes) and verifying individual object functionality in isolation.
  • Component Testing: Focuses on composite components formed by integrating individual units, validating interactions and interfaces between integrated units.
  • System Testing: Tests the complete integrated system, including all components, ensuring correct interaction between all components.

Unit Testing

  • Unit testing is the process of testing isolated individual components.
  • Individual components may be functions, methods, object classes, or composites, for testing functionality, attribute values, and state changes.

Object Class Testing

  • During object class testing, comprehensive coverage is ensured by testing all features, setting and checking attribute values, and simulating state changes.
  • Inheritance can complicate object class testing because information to be tested is not localized.

Weather Station Testing

  • Testing a weather station involves comprehensive test cases for various functions and all relevant states and transitions.
  • Key functions include reporting weather, calibration, self-testing, startup and shutdown. Weather Station testing can include state model testing to document and verify all possible states and transitions of the system.

Automated Testing

  • Automated testing uses tools and frameworks to run tests.
  • Frameworks like JUnit provide generic classes to extend for creating specific tests.
  • Execution is often done through a graphical interface (GUI).
  • Key automated testing components include setup, execution, and assertions.

Unit Test Effectiveness

  • Unit test effectiveness is measured by how well test cases verify functionality, help identify defects, and address scenarios using normal and edge cases and error handling conditions.

Testing Strategies

  • Partition Testing: Groups inputs/outputs into categories based on characteristics, selecting different tests to ensure proper handling of various inputs.
  • Guideline-Based Testing: Leveraging established guidelines and past experience to identify common programming errors and improve test effectiveness.

Equivalence Partitioning

  • Concept: Groups inputs/outputs into equivalence classes for similar handling by the program.
  • Approach: Select test cases from each partition to ensure all relevant scenarios are covered within each class, consistently.

Testing Guidelines for Sequences

  • Guidelines for testing various sequences, including single-value, varied-size sequences, element access, and zero-length sequences, help in covering different scenarios and edge cases, ensuring comprehensive testing.

General Testing Guidelines

  • Covers various facets of software testing, covering error messages, input buffer overflow, repeated inputs, invalid outputs, and extreme computation results.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

Description

Explore the essential concepts of software testing in this quiz. Learn about testing goals, defect discovery, and the broader context of validation and verification processes. This quiz will help you understand the foundations of program testing and its significance in ensuring software quality.

More Like This

Importance of Software Testing
10 questions
Software Testing Importance
10 questions
Software Testing Concepts Quiz
237 questions

Software Testing Concepts Quiz

SoulfulHeliotrope7752 avatar
SoulfulHeliotrope7752
Use Quizgecko on...
Browser
Browser