1.1.1. Test Objectives
The typical test objectives are:
- 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
- Verifying that a test object complies with contractual, legal, and regulatory requirements
- Providing information to stakeholders to allow them to make informed decisions
- Building confidence in the quality of the test object
- Validating whether the test object is complete and works as expected by the stakeholders
Objectives of testing can vary, depending upon the context, which includes the work product being tested,
the test level, risks, the software development lifecycle (SDLC) being followed, and factors related to the
business context, e.g., corporate structure, competitive considerations, or time to market.
1.2.2 Testing and Quality Assurance (QA)
While people often use the terms “testing” and “quality assurance” (QA) interchangeably, testing and QA
are not the same. Testing is a form of quality control (QC).
QC is a product-oriented, corrective approach that focuses on those activities supporting the achievement of appropriate levels of quality. Testing is a major form of quality control, while others include formal methods (model checking and proof of correctness), simulation and prototyping.
QA is a process-oriented, preventive approach that focuses on the implementation and improvement of
processes. It works on the basis that if a good process is followed correctly, then it will generate a good
product. QA applies to both the development and testing processes, and is the responsibility of everyone
on a project.
Test results are used by QA and QC. In QC they are used to fix defects, while in QA they provide
feedback on how well the development and test processes are performing.
1.5.2. Whole Team Approach
One of the important skills for a tester is the ability to work effectively in a team context and to contribute
positively to the team goals. The whole team approach – a practice coming from Extreme Programming
(see section 2.1) – builds upon this skill.
In the whole-team approach any team member with the necessary knowledge and skills can perform any
task, and everyone is responsible for quality. The team members share the same workspace (physical or
virtual), as co-location facilitates communication and interaction. The whole team approach improves
team dynamics, enhances communication and collaboration within the team, and creates synergy by
allowing the various skill sets within the team to be leveraged for the benefit of the project.
Testers work closely with other team members to ensure that the desired quality levels are achieved. This
includes collaborating with business representatives to help them create suitable acceptance tests and
working with developers to agree on the test strategy and decide on test automation approaches. Testers
can thus transfer testing knowledge to other team members and influence the development of the
product.
Depending on the context, the whole team approach may not always be appropriate. For instance, in
some situations, such as safety-critical, a high level of test independence may be needed.