Chapter 1
Chapter 1
● Dynamic testing: testing that involves the execution of the component or system being tested
● Static testing: testing that doesn't involve the execution of the component or system being tested
The objectives of testing can vary, depending upon the context of the component or system being tested.
● To prevent defects
● To evaluate work products such as requirements, user stories, design, and code
● To validate whether the test object is complete and works as the users and other stakeholders expect
Testing: the process of executing tests to show failures that are caused by defects in the software.
Confirmation testing (Retesting): the process of checking whether the fixes resolved the defects or not via
Note: in Agile development and in some other life cycles, testers may be involved in debugging and
component testing.
1.2 Why is Testing Necessary?
Rigorous testing can help reduce the risk of failures occurring during operation. When defects are
detected, and fixed, this contributes to the quality of the components or systems.
In addition, software testing may also be required to meet contractual or legal requirements or
industry-specific standards.
● Quality management: includes all activities that direct and control an organization with regard to quality
● Quality assurance is typically focused on adherence to proper processes to ensure a certain level of quality
will be achieved.
● Quality control involves various activities, including test activities, that support the achievement of
● Time pressure
● Human fallibility
design
● Complexity of the code, design, architecture, the underlying problem to be solved, and/or the technologies
used
False positives: it occur due to errors in the way tests were executed
False negatives: are tests that do not detect defects that they should have detected
1.2.4 Distinguish between the root cause of a defect and its effects
The root causes: is the earliest actions or conditions that contributed to creating the defects.
Root cause analysis can lead to process improvements that prevent a significant number of future defects from being
introduced.
○ Testing can show that defects are present, but cannot prove that there are no defects.testing is not
a proof of correctness.
○ Testing early in the software development life cycle helps reduce or eliminate costly changes
○ A small number of modules usually contains most of the defects discovered during pre-release
○ If the same tests are repeated over and over again, eventually these tests no longer find any new
defects.
● Absence-of-errors is a fallacy
○ fixing all defects found could still produce a system that is failing at fulfilling the users’ needs and
expectations
Note: Predicted defect clusters, and the actual observed defect clusters in test or operation, are an important input
● Test planning: Test planning involves activities that define the objectives of testing and the approach for
● Test monitoring : Test monitoring involves the on-going comparison of actual progress against the test plan.
● Test control: involves taking actions necessary to meet the objectives of the test plan.
○ Test progress against the plan is communicated to stakeholders in test progress reports, including
deviations from the plan and information to support any decision to stop testing.
● Test analysis: During test analysis, the test basis is analyzed to identify testable features and define
associated test conditions. In other words, test analysis determines “what to test” in terms of measurable
coverage criteria.
■ Analyzing the test basis appropriate to the test level being considered
■ Evaluating the test basis and test items to identify defects of various types
■ Capturing bi-directional traceability between test basis and the associated test conditions
● Test design: During test design, the test conditions are elaborated into high-level test cases, test design
■ Designing and prioritizing high-level test cases and sets of test cases
■ Identifying necessary test data to support test conditions and test cases
■ Designing the test environment and identifying any required infrastructure and tools
■ Capturing bi-directional traceability between the test basis, test conditions, test cases, and
test procedures
● Test implementation: During test implementation, the testware necessary for test execution is created
and/or completed, including sequencing the test cases into test procedures. test implementation determines
■ Developing and prioritizing test procedures, creating automated test scripts (optionally).
■ Creating test suites from the test procedures and (if any) automated test scripts
■ Arranging the test suites within a test execution schedule in a way that results in efficient
test execution
■ Preparing test data and ensuring it is properly loaded in the test environment
■ Verifying and updating bi-directional traceability between the test basis, test conditions,
■ Repeating test activities either as a result of action taken for an anomaly (corrected test,
■ Verifying and updating bi-directional traceability between the test basis, test conditions,
● Test compilation: Test completion activities collect data from completed test activities to consolidate
experience.
■ Handing over the testware to whom may benefit from its use
Note: Test completion activities occur at project milestones such as when a software system is released, a test
1.4.3 the process work products: is the outcome of the testing process
○ exit criteria
○ may result in the discovery and reporting of defects in the test basis.
Note: test charters is a concise statement that defines the scope, objectives, and strategy of a test session
Note: high-level test cases don’t include input data and expected results
○ Test suites
○ Defect reports
○ Documentation about which test item and testware were involved in the testing
○ finalized testware
1.4.4 Explain the value of maintaining traceability between the test basis and test work products
In order to implement effective test monitoring and control, it is important to establish and maintain traceability
throughout the test process between each element of the test basis and the various test work products associated
● Relating the technical aspects of testing to stakeholders in terms that they can understand
● Providing information to assess product quality, process capability, and project progress against business
goals
● Improving the understandability of test progress reports and test summary reports
Some people may perceive testing as a destructive activity, even though it contributes greatly to project progress and
product quality. in order to avoid this type mentality tester should do the following:
● Emphasize the benefits of testing (testing will save time and money and reduce risk)
● Try to understand how the other person feels and the reasons they may react negatively
● Confirm that the other person has understood what has been said and vice versa
curiosity, professional pessimism, a critical eye, attention to detail, and a motivation for good and positive
A tester’s mindset tends to grow and mature as the tester gains experience.
A developer’s mindset may include some of the elements of a tester’s mindset, but successful developers are often
more interested in designing and building solutions than in contemplating what might be wrong with those solutions.
Note: Having some of the test activities done by independent testers increases defect detection effectiveness, which
is particularly important for large, complex, or safety-critical systems. Independent testers bring a perspective which