🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Software Testing Fundamentals
21 Questions
0 Views

Software Testing Fundamentals

Created by
@HumourousCerberus

Podcast Beta

Play an AI-generated podcast conversation about this lesson

Questions and Answers

What is the importance of testing in software development?

Testing is necessary to assess software quality, reduce the risk of software failure, and discover defects in the application.

What are some consequences of software defects? (Select all that apply)

  • Loss of Money (correct)
  • Increase in Business Reputation
  • Loss of Time (correct)
  • Injury or Death (correct)
  • Software testing is a way to assess the quality of software before it is operational. (True/False)

    True

    Testing needs to be properly planned, managed, estimated, monitored, and controlled to __________ the risk of software failure.

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

    What is the primary purpose of testing?

    <p>To identify defects in software</p> Signup and view all the answers

    What is Quality Control focused on?

    <p>Identifying defects</p> Signup and view all the answers

    Thoroughly testing all the requirements and fixing all defects found would guarantee a system that meets user needs.

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

    Testing shows the presence of ____, not their absence.

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

    Match the following testing principles with their descriptions:

    <p>Testing reduces the probability of undiscovered defects remaining in the software = Principle 1 Exhaustive testing is impossible = Principle 2 Early testing saves time and money = Principle 3 Defects cluster together = Principle 4</p> Signup and view all the answers

    What is the purpose of Test Planning in the test process?

    <p>To decide which test activities are included and create a testing roadmap.</p> Signup and view all the answers

    Which activities are part of Test Analysis?

    <p>Evaluating defects in the Test Basis</p> Signup and view all the answers

    Test Design focuses on how the testing process will be conducted.

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

    ______________ involves creating all the Testware necessary for test execution.

    <p>Test Implementation</p> Signup and view all the answers

    Match the Test Work Products with their corresponding test processes:

    <p>Test Planning Work Products = Test plan, test schedule, risk register Test Monitoring and Control Work Products = Test progress reports, control directives Test Analysis Work Products = Test conditions, defect reports Test Design Work Products = Test cases, coverage items Test Implementation Work Products = Test procedures, automated test scripts Test Execution Work Products = Test logs, defect reports Test Completion Work Products = Test completion report, lessons learned</p> Signup and view all the answers

    What can Confirmation Bias make difficult to accept?

    <p>information that disagrees with currently held beliefs</p> Signup and view all the answers

    Developers often struggle to accept when their code is incorrect due to:

    <p>Confirmation Bias</p> Signup and view all the answers

    Testing independence refers to how close the tester is to the author of the code.

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

    Match the following levels of testing independence with their descriptions:

    <p>High level of independence = Testers from outside the organisation Authors peers from the same team = Low level of independence Testers outside of the author’s team but within the organisation = Medium level of independence The author = Lowest level of independence</p> Signup and view all the answers

    Why might isolation for independent testers lead to collaboration problems?

    <p>lack of collaboration and communication problems</p> Signup and view all the answers

    What is a key characteristic of the Whole Team approach?

    <p>Shared responsibility for quality</p> Signup and view all the answers

    Testers working with other team members to ensure quality is part of the Whole Team approach.

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

    Study Notes

    Module 1 – Fundamentals of Testing

    • Upon completing this module, you will be able to understand what testing is, why it's necessary, and explain the seven testing principles.
    • Testing is becoming more important due to everyday life dependence on software, increasing software complexity, and the need for quality as a competitive advantage.

    Why is Testing Necessary?

    • Software defects can cause loss of money, time, business reputation, and even injury or death.
    • Testing assesses software quality and helps reduce the risk of software failure during operation.
    • Examples of software defects and failures include:
      • TSB customers being locked out of their accounts after a software upgrade.
      • O2 users losing access to 3G and 4G services due to a software issue.
      • WannaCry ransomware attack affecting NHS England and other organizations.

    What is Software Testing?

    • Software testing is a set of activities to discover defects and evaluate the quality of the test object (application).
    • Testing involves assessing the quality of software and reducing the risk of software failure during operation.
    • Testing needs to be properly planned, managed, estimated, monitored, and controlled.

    How Do We Test?

    • Testing involves dynamic testing (executing the software) and static testing (reviewing and analyzing the software without executing it).
    • Examples of testing include black box testing and white box testing.

    What is Involved in Testing?

    • Verification involves checking if the work product meets the specified requirements.
    • Validation involves checking if the work product meets the customer's needs and ensures that the right product is built.

    What are the Objectives of Testing?

    • Evaluating work products such as requirements, user stories, designs, and code.
    • Triggering failures and finding defects.
    • Ensuring required coverage of a test object.
    • Reducing the level of risk of inadequate software quality.
    • Verifying whether specified requirements have been fulfilled.
    • Providing information to stakeholders to allow them to make informed decisions.
    • Building confidence in the quality of the test object.

    Varying Test Objectives

    • Test objectives can vary based on factors such as the software development lifecycle model used, corporate structure, competitive considerations, and time to market.

    Testing and Debugging

    • Testing involves finding and reporting defects, while debugging involves fixing defects.
    • Testing is performed by testers, while debugging is performed by developers.

    Errors, Defects, and Failures

    • Errors are mistakes made by humans, such as a developer writing incorrect code.
    • Defects are faults or bugs in the software, resulting from errors.
    • Failures occur when a defect is executed, causing the system to fail to do what it should.

    Root Causes of Defects

    • A root cause is a fundamental reason for the occurrence of a problem.
    • Root causes are found via root cause analysis, which is carried out when a defect or failure occurs.
    • Addressing the root cause can prevent further similar defects.

    Testing Principles

    • The seven testing principles are:
      1. Testing shows the presence of defects, not their absence.
      2. Exhaustive testing is impossible.
      • (Remaining principles will be covered in the next session)### General Testing Principles
    • Early testing saves time and money, as defects found early are cheaper to fix, most significant defects are found first, and defects are prevented from being built in.
    • Defects often cluster together, which helps with risk-based testing by focusing on areas that have yielded the greater amount of defects.
    • Tests wear out, so new tests or changed test data may be needed to continue detecting new defects.
    • Testing is context-dependent, and approach differs in different contexts, such as video game vs. air traffic control system, or Agile vs. Waterfall environment.

    The Test Process

    • The test process is context-dependent, but there are common sets of test activities without which testing is less likely to achieve its objectives.
    • The test process includes test planning, test monitoring and control, test analysis, test design, test implementation, test execution, and test completion.
    • Contextual factors that influence the test process include stakeholders, team members, business domain, technical factors, software development lifecycle, and tools.

    Test Planning

    • Test planning involves deciding which test activities are included in the test process and is usually decided in the test planning stage.
    • Activities are often implemented iteratively or in parallel.

    Test Monitoring and Control

    • Test monitoring involves comparing actual progress against the test plan using monitoring metrics.
    • Test control involves taking actions necessary to meet the objectives of testing.

    Test Analysis

    • Test analysis involves analyzing the test basis to identify testable features and define/prioritize associated test conditions.
    • It also involves evaluating the test basis to identify defects.

    Test Design

    • Test design involves elaborating test conditions into high-level test cases, often using test design techniques.
    • It also involves defining test data requirements, test environment needs, infrastructure, and tools required.

    Test Implementation

    • Test implementation involves creating all the testware necessary for test execution, including developing and prioritizing test procedures, creating automated test scripts, and setting up the test environment.

    Test Execution

    • Test execution involves running test suites in accordance with the test execution schedule, which can be manual or automated.
    • It also involves comparing actual test results with expected test results, logging test results, and analyzing anomalies to identify their causes.

    Test Completion

    • Test completion involves checking whether all defects are closed, creating a test completion report, shutting down the test environment, and analyzing lessons learned to support improvement of future iterations, releases, or projects.

    Test Work Products

    • Test work products include test plans, test schedules, risk registers, test cases, test charters, coverage items, test data, test execution schedules, and test completion reports.

    Traceability Throughout Test Process

    • Establishing and maintaining traceability throughout the test process is important for analyzing the impact of changes, making testing auditable, and meeting IT governance criteria.

    Roles in Testing

    • The test management role focuses on test planning, test monitoring and control, and test completion, and takes overall responsibility for the test process and test team.
    • The testing role focuses on test analysis, test design, test implementation, and test execution, and takes overall responsibility for the engineering aspects of testing.

    Essential Skills and Good Practices in Testing

    • Essential skills in testing include thoroughness, analytical thinking, good communication, and technical knowledge.

    • Good practices in testing include avoiding confirmation bias, being open to information that disagrees with currently held beliefs, and communicating constructive bad news.

    • Testing independence refers to the level of removal of the tester from the author of the code, with higher independence leading to more effective testing.### Levels of Testing Independence

    • Multiple levels of independence are recommended for most projects

    • Levels of independence range from:

      • High: Testers from outside the organization
      • Medium: Testers outside of the author's team but within the organization
      • Low: Authors' peers from the same team, or the author themselves

    Independence of Testing

    • Independent testers can recognize different kinds of defects due to different backgrounds and technical perspectives
    • Independent testers can verify, challenge, or disprove assumptions made by stakeholders
    • Advantages of independence include:
      • Isolation from the development team
    • Disadvantages of independence include:
      • Lack of collaboration and communication problems
      • Adversarial relationships
      • Developers may lose sense of responsibility for quality
      • Independent testers may be seen as a bottleneck or blamed for delays

    Whole Team Approach

    • Any team member with the necessary knowledge and skills can perform any task
    • Everyone is responsible for quality
    • Advantages of the whole team approach include:
      • Shared workspace facilitates communication and interaction
      • Collaboration between team members, including testers, developers, and business representatives
      • Testers can transfer knowledge to other team members and influence the development of the product
    • Disadvantages of the whole team approach include:
      • May not be suitable for certain projects, such as safety-critical systems, which require high test independence

    Testing Objectives

    • Understand what testing is
    • Explain why testing is necessary
    • Describe the seven testing principles
    • Identify test activities, testware, and test roles
    • Recognize essential skills and good practices in testing

    Studying That Suits You

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

    Quiz Team

    Description

    Assess your understanding of software testing principles, including the importance of testing, consequences of software defects, and the primary purpose of testing.

    More Quizzes Like This

    Use Quizgecko on...
    Browser
    Browser