Podcast
Questions and Answers
What is the importance of testing in software development?
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)
What are some consequences of software defects? (Select all that apply)
Software testing is a way to assess the quality of software before it is operational. (True/False)
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.
Testing needs to be properly planned, managed, estimated, monitored, and controlled to __________ the risk of software failure.
Signup and view all the answers
What is the primary purpose of testing?
What is the primary purpose of testing?
Signup and view all the answers
What is Quality Control focused on?
What is Quality Control focused on?
Signup and view all the answers
Thoroughly testing all the requirements and fixing all defects found would guarantee a system that meets user needs.
Thoroughly testing all the requirements and fixing all defects found would guarantee a system that meets user needs.
Signup and view all the answers
Testing shows the presence of ____, not their absence.
Testing shows the presence of ____, not their absence.
Signup and view all the answers
Match the following testing principles with their descriptions:
Match the following testing principles with their descriptions:
Signup and view all the answers
What is the purpose of Test Planning in the test process?
What is the purpose of Test Planning in the test process?
Signup and view all the answers
Which activities are part of Test Analysis?
Which activities are part of Test Analysis?
Signup and view all the answers
Test Design focuses on how the testing process will be conducted.
Test Design focuses on how the testing process will be conducted.
Signup and view all the answers
______________ involves creating all the Testware necessary for test execution.
______________ involves creating all the Testware necessary for test execution.
Signup and view all the answers
Match the Test Work Products with their corresponding test processes:
Match the Test Work Products with their corresponding test processes:
Signup and view all the answers
What can Confirmation Bias make difficult to accept?
What can Confirmation Bias make difficult to accept?
Signup and view all the answers
Developers often struggle to accept when their code is incorrect due to:
Developers often struggle to accept when their code is incorrect due to:
Signup and view all the answers
Testing independence refers to how close the tester is to the author of the code.
Testing independence refers to how close the tester is to the author of the code.
Signup and view all the answers
Match the following levels of testing independence with their descriptions:
Match the following levels of testing independence with their descriptions:
Signup and view all the answers
Why might isolation for independent testers lead to collaboration problems?
Why might isolation for independent testers lead to collaboration problems?
Signup and view all the answers
What is a key characteristic of the Whole Team approach?
What is a key characteristic of the Whole Team approach?
Signup and view all the answers
Testers working with other team members to ensure quality is part of the Whole Team approach.
Testers working with other team members to ensure quality is part of the Whole Team approach.
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:
- Testing shows the presence of defects, not their absence.
- 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.
Description
Assess your understanding of software testing principles, including the importance of testing, consequences of software defects, and the primary purpose of testing.