Foundation For Testing Project: ISYS6264 - Testing and System Implementation
Foundation For Testing Project: ISYS6264 - Testing and System Implementation
• What is Testing?
• Testing in Software Life Cycle
• Fundamental Test Process
• Principles in Software Testing
• Granularity Test
• Test Phases
• Assuring Quality in Testing
• Quality Risk Analysis
What is Testing?
Why is testing necessary?
• Defects and failures can arise from different root causes, such as
gaps in the developer’s training, communication problems
between the customer and the designers, immature design
processes – from requirements gathering, to detailed design and
architecture – or even oversights or misunderstanding or incorrect
transcriptions of the requirements. Among other things, these
causes may result from stress or fatigue of the design teams.
Objectives for Testing
• During the customer acceptance phase, testing will show that the
software works properly to obtain customer approval for usage of
that software.
Objectives for Testing
(cont.)
• During the operational phases, where the software is being used,
testing will focus on ensuring that the requirement levels (SLA,
service level agreement) are reached.
• In the following, we’ll show the major types of life cycles and how
testing fits to them.
Software Development Model
• Analysis of the test basis allows you to identify the aspects to test
(test objectives) and to determine how they will be tested.
Traceability from the test basis to the test objectives and test
conditions, to allow quick impact analysis of change requests to
the test basis should be ensured.
Activities in Design
• When the test objective is to detect defects, then a good test case is one that
2 has a high probability of revealing a yet undetected defect(s).
• Test cases should be developed for both valid and invalid input conditions.
5
Testing Principles
(cont.)
• The probability of the existence of additional defects in a software component
6 is proportional to the number of defects already detected in that component.
• Live tests can follow general scripts or checklists, but live tests
are often ad hoc (worst case) or exploratory (best case). Live
testing is a perfect fit for technical support, marketing, and sales
organizations whose members don’t know formal test techniques
but do know the application domain and the product intimately.
This understanding, along with recollections of the nasty bugs
that have bitten them before, allows them to find bugs that
developers and testers miss.
Test Phases
Test Phase Sequencing
• Unit tests are white-box in the sense that the programmer knows
the internal structure of the unit under test and is concerned with
how the testing affects the internal operations. Therefore,
programmers usually do the unit testing. Sometimes they test
their own code. Sometimes they test other programmers’ code,
often referred to as buddy tests or code swaps. Sometimes two
programmers collaborate on both the writing and unit testing of
code, such as the pair programming technique advocated by
practitioners of the agile development approach called Extreme
Programming.
Component or Subsystem
Testing
• Component testing applies to some collection of units that provide
some defined set of capabilities within the system.
• Two concise definitions for quality are found in the IEEE Standard
Glossary of Software Engineering Terminology [2]: