2. Testing throughout the software life cycle Flashcards
What is verification testing?
Verification is concerned
with evaluating a work product, component or system to determine whether it
meets the requirements set. In fact, verification focuses on the question ‘Is the
deliverable built according to the specification?’.
What is validation testing?
Validation is concerned with
evaluating a work product, component or system to determine whether it meets
the user needs and requirements. Validation focuses on the question ‘Is the
deliverable fit for purpose, e.g. does it provide a solution to the problem?’.
What is Waterfall model?
The waterfall model was one of the earliest models to be designed. It has a
natural timeline where tasks are executed in a sequential fashion. We start at the
top of the waterfall with a feasibility study and flow down through the various
project tasks finishing with implementation into the live environment. Design
flows through into development, which in turn flows into build, and finally on
into test. Testing tends to happen towards the end of the project life cycle so
defects are detected close to the live implementation date. With this model it has
been difficult to get feedback passed backwards up the waterfall and there are
difficulties if we need to carry out numerous iterations for a particular phase.
What is V-model?
The V-model pro-
vides guidance that testing needs to begin as early as possible in the life cycle. It also shows that testing is not only an execution-
based activity. There are a variety of activities that need to be performed before the end of the coding phase. These activities should be carried out in parallel with development activities, and testers need to work with developers and business analysts so they can perform these activities and tasks and produce a set of test deliverables. The work products produced by the developers and business analysts during development are the basis of testing in one or more levels.
What are the common test levels of V-model?
• component testing: searches for defects in and verifies the functioning of
software components (e.g. modules, programs, objects, classes etc.) that are
separately testable;
• integration testing: tests interfaces between components, interactions to dif
ferent parts of a system such as an operating system, file system and hard
ware or interfaces between systems;
• system testing: concerned with the behavior of the whole system/product as
defined by the scope of a development project or product. The main focus of
system testing is verification against specified requirements;
• acceptance testing: validation testing with respect to user needs, require
ments, and business processes conducted to determine whether or not to
accept the system.
What 2 major types of testing lie cylces?
sequential, iterative or incremential
What is iterative testing life cycle approach?
A common feature of iterative approaches is that the delivery is divided into
increments or builds with each increment adding new functionality. The initial
increment will contain the infrastructure required to support the initial build
functionality. The increment produced by an iteration may be tested at several
levels as part of its development. Subsequent increments will need testing for
the new functionality, regression testing of the existing functionality, and inte-
gration testing of both new and existing parts. Regression testing is increasingly
important on all iterations after the first one. This means that more testing will
be required at each subsequent delivery phase which must be allowed for in the
project plans. This life cycle can give early market presence with critical func-
tionality, can be simpler to manage because the workload is divided into smaller
pieces, and can reduce initial investment although it may cost more in the long
run.
Provide exampoles of iterative and incremental development models
prototyping, Rapid Application Development (RAD), Rational Unified Process (RUP) and
agile development.
What is rapid application development?
It is formally a parallel development of
functions and subsequent integration. Components/functions are developed in parallel as if they were mini proj-
ects, the developments are time-boxed, delivered, and then assembled into a
working prototype.
The RAD development process encourages active customer feedback.
The customer gets early visibility of the product, can provide feedback on the design and can decide, based on the existing functionality, whether to proceed with the development, what functionality to include in the next
delivery cycle or even to halt the project if it is not delivering the expected value.
What is Dynamic System Development Methodology?
It is a refined RAD
process that allows controls to be put in place in order to stop the process
from getting out of control.
What is extreme programming?
It is currently one of the most well-known agile
development life cycle models. (See [Agile] for ideas behind this approach.)
The methodology claims to be more human friendly than traditional develop-
ment methods.
What are the characteristics of XP?
• It promotes the generation of business stories to define the functionality.
• It demands an on-site customer for continual feedback and to define and
carry out functional acceptance testing.
• It promotes pair programming and shared code ownership amongst the
developers.
• It states that component test scripts shall be written before the code is
written and that those tests should be automated.
• It states that integration and testing of the code shall happen several times
a day.
• It states that we always implement the simplest solution to meet today’s
problems.
What are the main characteristics of good testing?
• for every development activity there is a corresponding testing activity;
• each test level has test objectives specific to that level;
• the analysis and design of tests for a given test level should begin during the
corresponding development activity;
• testers should be involved in reviewing documents as soon as drafts are avail
able in the development cycle.
What is component testing?
Component testing, also known as unit, module and program testing, searches for defects in, and verifies the functioning of software (e.g. modules, programs, objects, classes, etc.) that are separately testable. Component testing may be done in isolation from the rest of the system depend- ing on the context of the development life cycle and the system. Most often stubs and drivers are used to replace the missing software and simulate the interface between the software components in a simple manner. Usually it is done by progarmmers.
What is a stub?
A stub is called from the
software component to be tested
What is a driver?
a driver calls a component to be tested
What is test-driven development?
One approach in component testing, used in Extreme Programming (XP), is
to prepare and automate test cases before coding. This is called a test-first
approach or test-driven development. This approach is highly iterative and is
based on cycles of developing test cases, then building and integrating small
pieces of code, and executing the component tests until they pass
What is integartion testing?
It tests interfaces between components, interactions to dif-
ferent parts of a system such as an operating system, file system and hard-
ware or interfaces between systems. Note that integration testing should be
differentiated from other integration activities. Integration testing is often
carried out by the integrator, but preferably by a specific integration tester or
test team.
What is component integration testing?
component integration testing tests the interactions between software com
ponents and is done after component testing
What is system integarion testing?
system integration testing tests the interactions between different systems
and may be done after system testing. In this case, the developing organiza
tion may control only one side of the interface, so changes may be destabi
lizing. Business processes implemented as workflows may involve a series of
systems that can even run on different platforms.
What is a ‘big-bang’ integration testing?
all components or systems are integrated simultaneously, after which everything is tested
as a whole. Big-bang testing has the advantage that everything is finished before integration testing starts. There is no need to simulate (as yet unfinished) parts. The major disadvantage is that in general it is time-consuming and difficult to trace the cause of failures with this
late integration.
What is incremental integartion testing approach?
Another extreme is that all programs are integrated one by one, and a test is
carried out after each step. The incremental approach has the advantage that
the defects are found early in a smaller assembly when it is relatively easy to
detect the cause. A disadvantage is that it can be time-consuming since stubs
and drivers have to be developed and used in the test.
What are the incremetal integration testing types?
• Top-down: testing takes place from top to bottom, following the control flow
or architectural structure (e.g. starting from the GUI or main menu).
Components or systems are substituted by stubs.
• Bottom-up: testing takes place from the bottom of the control flow upwards.
Components or systems are substituted by drivers.
• Functional incremental: integration and testing takes place on the basis of
the functions or functionality, as documented in the functional specification
What is System testing?
System testing is concerned with the behavior of the whole system/product as defined by the scope of a development project or product. It may include tests
based on risks and/or requirements specification, business processes, use cases,
or other high level descriptions of system behavior, interactions with the operating system, and system resources. System testing is most often the final test on
behalf of development to verify that the system to be delivered meets the spec-
ification and its purpose may be to find as many defects as possible. System testing should investigate both functional and non-functional requirements of the system.
What is non-functional testing?
Typical non-functional tests include performance
and reliability. Testers may also need to deal with incomplete or undocumented
requirements.
What is functional testing?
System testing of functional requirements starts by using the
most appropriate specification-based (black-box) techniques for the aspect of
the system to be tested. For example, a decision table may be created for com-
binations of effects described in business rules. Structure-based (white-box) techniques may also be used to assess the thoroughness of testing elements such
as menu dialog structure or web page navigation
What is acceptance testing?
When the development organization has performed its system test and has cor-
rected all or most defects, the system will be delivered to the user or customer
for acceptance testing. The acceptance test should answer questions such as:
‘Can the system be released?’, ‘What, if any, are the outstanding (business)
risks?’ and ‘Has development met their obligations?’. Acceptance testing is
most often the responsibility of the user or customer, although other stakehold-
ers may be involved as well. The execution of the acceptance test requires a test
environment that is for most aspects, representative of the production environ-
ment (‘as-if production’). The goal of acceptance testing is to establish confidence in the system, part of the system or specific non-functional characteristics, e.g. usability, of the system. Acceptance testing is most often focused on a validation type of testing,
whereby we are trying to determine whether the system is fit for purpose.
Finding defects should not be the main focus in acceptance testing.
What are the two main types of acceptance testing?
The user acceptance test
Operational acceptance test
What is the user acceptance test?
The user acceptance test focuses mainly on the functionality thereby validating the fitness-for-use of the
system by the business user?
What is the operatinal acceptance test? (production acceptance test)
validates whether the system meets the
requirements for operation.
What are the other types of acceptance testing?
contract acceptance testing
compliance acceptance testing
What is alpha testing stage in acceptance testing?
This test takes place at the devel-
oper’s site. A cross-section of potential users and members of the developer’s
organization are invited to use the system. Developers observe the users and
note problems. Alpha testing may also be carried out by an independent test
team.