Testing Material
Testing Material
Testing Material
c
ë
a
An accidental condition that causes a functional unit to fail to perform its required function
¦? Ô
¦? ë
¦?
¦?
¦?
¦? ë
¦? c
ë
A number of testing principles have been suggested over the past 40 years and offer
general
Guidelines common for all testing.
ë
Testing can show that defects are present, but cannot prove that there are no defects.
Testing reduces the probability of undiscovered defects remaining in the software but,
even if no defects are found, it is not a proof of correctness.
ë
!
Testing everything (all combinations of inputs and preconditions) is not feasible except
for trivial cases. Jnstead of exhaustive testing, risk analysis and priorities should be used
to focus testing efforts.
ë
"
Testing activities should start as early as possible in the software or system
development life cycle, and should be focused on defined objectives.
ë
# $
A small number of modules contain most of the defects discovered during pre-release
testing, or are responsible for the most operational failures.
ë
% ë
Jf the same tests are repeated over and over again, eventually the same set of test
cases will no longer find any new defects. To overcome this ³pesticide paradox´, the test
cases need to be regularly reviewed and revised, and new and different tests need to be
written to exercise different parts of the software or system to potentially find more
defects.
ë
&
Testing is done differently in different contexts. For example, safety-critical software is
tested differently from an e-commerce site.
ë
' (
) )
Finding and fixing defects does not help if the system built is unusable and does not
fulfill the users¶ needs and expectations
*
*
+
c
*
¦? +
¦? ë
¦? c
¦?
$
¦? ·
¦? c$
¦?
,
¦?
--.
¦?
/
0
¦?
ë
Ôoney required to prevent errors and to do the job right the first time.
Ex. Establishing methods and procedures, Training workers, acquiring tools
(
Ôoney spent to review completed products against requirements.
Ex. Cost of inspections, testing, reviews
a
All costs associated with defective products that have been delivered to the user or
moved in to the production
Ex. repairing cost, cost of operating faulty products, damage incurred by using them
Reliability
Efficiency
Jntegrity
Usability
Ôaintainability
Testability
Flexibility
Portability
Reusability
Jnterpretability
o planning and control;
o analysis and design;
o implementation and execution;
o evaluating exit criteria and reporting;
o test closure activities.
c
1Ô
"The Waterfall" approach, the whole process of software development is divided into
separate process phases.
The phases in Waterfall model are: Requirement Specifications phase, Software
Design, Jmplementation and Testing & Ôaintenance. All these phases are cascaded to each
other so that second phase is started as and when defined set of goals are achieved for first
phase and it is signed off, so the name "Waterfall Ôodel"
(
2 $
: All possible requirements of the system to be
developed are captured in this phase. Requirements are set of functionalities and
constraints that the end-user (who will be using the system) expects from the system. The
requirements are gathered from the end-user by consultation, these requirements are
analyzed for their validity and the possibility of incorporating the requirements in the
system to be development is also studied. Finally, a Requirement Specification document is
created which serves the purpose of guideline for the next phase of the model.
c2c $
: Before a starting for actual coding, it is highly important to
understand what we are going to create and what it should look like? The requirement
specifications from first phase are studied in this phase and system design is prepared.
System Design helps in specifying hardware and system requirements and also helps in
defining overall system architecture. The system design specifications serve as input for the
next phase of the model.
3
2
: On receiving system design documents, the work is
divided in modules/units and actual coding is started. The system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and
tested for its functionality; this is referred to as Unit Testing. Unit testing mainly verifies if
the modules/units meet their specifications.
3
2 c
: As specified above, the system is first divided in units
which are developed and tested for their functionalities. These units are integrated into a
complete system during Jntegration phase and tested to check if all modules/units
coordinate between each other and the system as a whole behaves as per the
specifications. After successfully testing the software, it is delivered to the customer.
4
2Ô
: This phase of "The Waterfall Ôodel" is virtually never ending
phase (Very long). Generally, problems with the system developed (which are not found
during the development life cycle) come up after its practical use starts, so the issues
related to the system are solved after deployment of the system. Not all the problems come
in picture directly but they arise time to time and needs to be solved; hence this process is
referred as Ôaintenance.
A x phase, in which the requirements for the software are gathered and
analyzed. Jteration should eventually result in a requirements phase that produces a
complete and final specification of requirements.
, in which a software solution to meet the requirements is designed. This
may be a new design, or an extension of an earlier design.
An J phase, when the software is coded, integrated and tested.
For each cycle of the model, a decision has to be made as to whether the software produced
by the cycle will be discarded, or kept as a starting point for the next cycle (sometimes
referred to as incremental prototyping). Eventually a point will be reached where the
requirements are complete and the software can be delivered, or it becomes impossible to
enhance the software as required, and a fresh start has to be made.
´)Ô
The V-model is a software development model which can be presumed to be the extension
of the waterfall model. Jnstead of moving down in a linear way, the process steps are bent
upwards after the coding phase, to form the typical V shape. The V-Ôodel demonstrates the
relationships between each phase of the development life cycle and its associated phase of
testing.
The prototype model is intended for large, expensive, and complicated projects.
(
$
5($6Ô
The RAD models a linear sequential software development process that emphasizes an
extremely short development cycle. The RAD model is a "high speed" adaptation of the
linear sequential model in which rapid development is achieved by using a component-
based construction approach. Used primarily for information systems applications.
($
:
^.?
Ô
The information flow among business functions is defined by
answering questions like what information drives the business process, what
information is generated, who generates it, where does the information go, who
process it and so on.
Component testing searches for defects in, and verifies the functioning of, software (e.g.
modules, programs, objects, classes, etc.) that are separately testable. Jt may be done in
isolation from the rest of the system, depending on the context of the development life
cycle and the system. Stubs, drivers and simulators may be used
Typically, component testing occurs with access to the code being tested and with the
support of the development environment, such as a unit test framework or debugging tool,
and, in practice, usually involves the programmer who wrote the code. Defects are typically
fixed as soon as they are found, without formally recording incidents.
One approach to component testing 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.
3
Jntegration testing tests interfaces between components, interactions with different parts of
a
System, such as the operating system, file system, hardware, or interfaces between
systems.
There may be more than one level of integration testing and it may be carried out on test
objects of varying size. For example:
^. Component integration testing tests the interactions between software components and is
done after component testing;
2. System integration testing tests the interactions between different systems and may be
done
After system testing. Jn this case, the developing organization may control only one side of
the
Jnterface, so changes may be destabilizing. Business processes implemented as workflows
Ôay involve a series of systems. Cross-platform issues may be significant
$
3
Top down integration testing is an incremental integration testing technique which begins by
testing the top level module and progressively adds in lower level module one by one.
Lower level modules are normally simulated by stubs which mimic functionality of lower
level modules. As you add lower level code, you will replace stubs with the actual
components. Top Down integration can be performed and tested in breadth first or depth
firs manner
3
Jn bottom up integration testing, module at the lowest level are developed first and other
modules which go towards the 'main' program are integrated and tested one at a time.
Bottom up integration also uses test drivers to drive and pass appropriate data to the lower
level modules. As and when code for other module gets ready, these drivers are replaced
with the actual module. Jn this approach, lower level modules are tested extensively thus
make sure that highest used module is tested properly
3
Jn big bang Jntegration testing, individual modules of the programs are not integrated until
everything is ready. This approach is seen mostly in inexperienced programmers who rely
on 'Run it and see' approach. Jn this approach, the program is integrated without any formal
integration testing, and then run to ensures that all the components are working properly.
c
System testing is concerned with the behaviour of a whole system/product as defined by
the scope of a development project or programme. Jn system testing, the test environment
should correspond to the final target or production environment as much as possible in
order to minimize the risk of environment-specific failures not being found in testing.
c
Testing the application for its friendliness to use.
This testing is also known as ë
. During this test,
test engineer validates correctness of functionality of our build on different customer
expected platforms (OS, Compiler, Browser and other system software¶s).
During this test, test engineer validates that whether our application
build changes from abnormal state to normal state or not?
This test is also known as Hardware Compatibility testing. During
this test, test engineer validates our application build existence with different technology
hardware devices.
ë
Performance testing is the process of determining the speed or
effectiveness of a computer, network, software program or device.
´
Volume Testing belongs to the group of non-functional tests, which are
often misunderstood and/or used interchangeably. Volume testing refers to testing a
software application for a certain data volume. This volume can in generic terms be the
database size or it could also be the size of an interface file that is the subject of volume
testing. For example, if you want to volume test your application with a specific database
size, you will explode your database to that size and then test the application's performance
on it.
,
,
is the process of putting demand on a system or device and
measuring its response.
c
When the load placed on the system is raised beyond normal usage
patterns, in order to test the system's response at unusually high or peak loads, it is known
as stress testing.
c
: The Process to determine that an JS (Jnformation System) protects data
and maintains functionality as intended.
The six basic security concepts that need to be covered by security testing are:
confidentiality, integrity, authentication, authorization, availability and non-repudiation
c
part of the battery of non-functional tests, is the testing of a
software application for measuring its capability to scale up or scale out [^ - in terms of any
of its non-functional capability - be it the user load supported, the number of transactions,
the data volume etc.
c ë?
When a build is received, a smoke test is run to ascertain if the build is stable and it can be
considered for further testing.
Smoke testing can be done for testing the stability of any interim build.
Smoke testing can be executed for platform qualification tests.
c
ë
Once a new build is obtained with minor revisions, instead of doing a through regression, a
sanity is performed so as to ascertain the build has indeed rectified the issues and no
further issue has been introduced by the fixes. Jts generally a subset of regression testing
and a group of test cases are executed that are related with the changes made to the app
c c
3
involves the testing of the different components of an application,
e.g., software and hardware, in combination. This kind of combination testing is done to
ensure that they are working correctly and conforming to the requirements based on which
they were designed and developed.
Trend Analysis is collection of data past and presents to help predict the future. or based on
the data/ trend trying to draw conclusions which may be used to increase profits/reduce
defects etc.
We can plot trend of the defects classified as functional integration and system testing
issues/defects. This will help in knowing the cause for the delays/rework. Let¶s assume
integration has highest defects then we can concentrate on the integration issues and
convey the development team to look for the integration.
Ôulti-user testing geared towards determining the effects of accessing the same application
code, module or database records. Jdentifies and measures the level of locking, deadlocking
and use of single-threaded code and locking semaphores.
Jn software engineering the Configuration Controller tracks and controls changes in the
software. Their practices include revision control and the establishment of baselines.
Depending on the size of the company the role can include any number of the following
tasks:
3) Recording and reporting all the necessary information on the status of the development
process.
4) Ensuring that configurations contain all their intended parts and are sound with respect
to their specifying documentation including requirements architectural specifications and
user manuals.