Professional Documents
Culture Documents
Software Testing
of all software costs, the overall cost of used metric units for a key spacecraft
the project will most likely be lower than operation.
similar projects.
What exactly does a software tester
Following are two cases that do?
demonstrate the importance of software
quality: Apart from exposing faults (“bugs”) in a
software product confirming that the
Ariane 5 crash June 4, 1996 program meets the program
specification, as a test engineer you
- Maiden flight of the European Ariane 5 need to create test cases, procedures,
launcher crashed about 40 seconds scripts and generate data. You execute
after takeoff test procedures and scripts, analyze
- Loss was about half a billion dollars - standards and evaluate results of
Explosion was the result of a software system/integration/regression testing.
error • Speed up development process by
- Uncaught exception due to floating- identifying bugs at an early stage (e.g.
point error: conversion from a 64-bit specifications stage)
integer to a 16-bit signed integer applied • Reduce the organization's risk of legal
to a larger than expected number liability
- Module was re-used without proper • Maximize the value of the software
testing from Ariane 4
• Assure successful launch of the
- Error was not supposed to happen with product, save money, time and
Ariane 4 reputation of the company by
- No exception handler Mars Climate discovering bugs and design flaws at an
Orbiter early stage before failures occur in
production, or in the field
- September 23, 1999
• Promote continual improvement
- Mars Climate Orbiter, disappeared
as it began to orbit Mars. What makes a good tester?
• Testing can’t show that bugs don’t were unable to get the software to work.
exist. An important reason for testing is It worked on a few systems – likely the
to prevent defects. You can perform ones that the Disney programmers used
your tests, find and report bugs, but at to create the game – but not on the
no point can you guarantee that there most common systems that the general
are no bugs. public used.
level or does not accept it as a bug, thus Pending state. Fixed: Programmer will
pushing it into Not Accepted/Won’t fix fix the bug and resolves it as Fixed.
state.
Close: The fixed bug will be assigned to
Such bugs will be assigned to the the tester who will put it in the Close
project manager who will decide if the state.
bug needs a fix. If it needs, then assigns
it back to the developer, and if it doesn’t, Re-Open: Fixed bugs can be re-opened
then assigns it back to the tester who by the testers in case the fix produces
will have to close the bug. problems elsewhere.
Pending: A bug accepted by the The image below clearly shows the Bug
developer may not be fixed immediately. Life Cycle and how a bug can be
In such cases, it can be put under tracked using Bug Tracking Tools
(BTT)
Unit Testing
Integration Testing
• Security Testing: Testing of database Beta Testing: Testing after the product
and network software in order to keep is code complete. Betas are often widely
company data and resources secure distributed or even distributed to the
from mistaken/accidental users, public at large.
hackers, and other malevolent
attackers. • Gamma Testing: Gamma testing is
testing of software that has all the
• Penetration Testing: Penetration required features, but it did not go
testing is testing how well the system is through all the in-house quality checks.
protected against unauthorized internal
or external access, or willful damage. • Mutation Testing: A method to
This type of testing usually requires determine to test thoroughness by
sophisticated testing techniques. measuring the extent to which the test
cases can discriminate the program
• Compatibility Testing: Testing used from slight variants of the program.
to determine whether other system
software components such as browsers, • Independent Verification and
utilities, and competing software will Validation (IV&V): The process of
conflict with the software being tested. exercising software with the intent of
ensuring that the software system meets
• Exploratory Testing: Any testing in its requirements and user expectations
which the tester dynamically changes and doesn't fail in an unacceptable
what they're doing for test execution, manner. The individual or group doing
based on information they learn as this work is not part of the group or
they're executing their tests. organization that developed the
software.
• Comparison Testing: Testing that
compares software weaknesses and • Pilot Testing: Testing that involves the
strengths to those of competitors' users just before actual release to
products. ensure that users become familiar with
the release contents and ultimately
• Alpha Testing: Testing after code is accept it. Typically involves many users,
mostly complete or contains most of the is conducted over a short period of time
functionality and prior to reaching and is tightly controlled. (See beta
customers. Sometimes a selected group testing)
of users are involved. More often this
testing will be performed in-house or by • Parallel/Audit Testing: Testing where
an outside testing firm in close the user reconciles the output of the
new system to the output of the current
Application Development and Emerging Technologies Lesson 5
system to verify the new system • Defect: Defect is the variance from a
performs the operations correctly. desired product attribute (it can be a
wrong, missing or extra data). It can be
• Glass Box/Open Box Testing: Glass of two types – Defect from the product
box testing is the same as white box or a variance from customer/user
testing. It is a testing approach that expectations. It is a flaw in the software
examines the application's program system and has no impact until it affects
structure, and derives test cases from the user/customer and operational
the application's program logic. system. 90% of all the defects can be
• Closed Box Testing: Closed box caused by process problems.
testing is same as black box testing. A • Failure: A defect that causes an error
type of testing that considers only the in operation or negatively impacts a
functionality of the application. user/ customer.
• Bottom-up Testing: Bottom-up • Quality Assurance: Is oriented
testing is a technique for integration towards preventing defects. Quality
testing. A test engineer creates and Assurance ensures all parties
uses test drivers for components that concerned with the project adhere to the
have not yet been developed, because, process and procedures, standards and
with bottom-up testing, low-level templates and test readiness reviews.
components are tested first. The
objective of bottom-up testing is to call • Quality Control: quality control or
low-level components first, for testing quality engineering is a set of measures
purposes. taken to ensure that defective products
or services are not produced, and that
• Smoke Testing: A random test the design meets performance
conducted before the delivery and after requirements.
complete testing.
• Verification: Verification ensures the
Testing Terms product is designed to deliver all
• Bug: A software bug may be defined functionality to the customer; it typically
as a coding error that causes an involves reviews and meetings to
unexpected defect, fault or flaw. In other evaluate documents, plans, code,
words, if a program does not perform as requirements and specifications; this
intended, it is most likely a bug. can be done with checklists, issues lists,
walkthroughs and inspection meetings.
• Error: A mismatch between the
program and its specification is an error • Validation: Validation ensures that
in the program. functionality, as defined in requirements,
is the intended behavior of the product;
validation typically involves actual
Application Development and Emerging Technologies Lesson 5