testing - Weebly

advertisement
Testing
SDLC Vs Agile
Software Quality
Assurance



Software quality assurance (SQA)
All those planned or systematic actions necessary to
provide adequate confidence that a product or
service is of the type and quality needed and
expected by the customer.
consists of a means of monitoring the software
engineering processes and methods used to ensure
quality. It does this by means of audits of the quality
management system under which the software
system is created. These audits are backed by one or
more standards, usually ISO 9000 or CMMI.
Software Quality
Assurance




Verification
Verification is preventing mechanism to
detect possible failures before the testing
begin. It involves reviews,
meetings, evaluating documents, plans, code,
inspections, specifications etc.
Validation
Validation occurs after verification and it's the
actual testing to find defects against the
functionality or the specifications.
Software testing


Is the process used to help identify the
correctness, completeness, security, and
quality of developed computer software
Software testing is oriented to "detection".
It's examining a system or an application
under controlled conditions. It's intentionally
making things go wrong when they should
not and things happen when they should not.
V-Model












The V-model is a software development process which can be
presumed to be the extension of the waterfall mode
V Model is also called test based development
There are two phases in the V model development. They are
1. Verification
Requirements analysis
System Design
Architecture Design
Module Design
2. Validation.
Unit Testing
Integration Testing
System Testing
User Acceptance Testing
V-Model
Requirements analysis




In this phase, the requirements of the
proposed system are collected by analyzing
the needs of the user(s).
This phase is concerned about establishing
what the ideal system has to perform
However, it does not determine how the
software will be designed or built.
The user acceptance tests(UAT) are
designed in this phase.
System Design





System engineers analyze and understand the
business of the proposed system by studying the
user requirements document.
They figure out possibilities and techniques by which
the user requirements can be implemented.
If any of the requirements is not feasible, the user is
informed of the issue.
The software specification document which serves as
a blueprint for the development phase is generated
The documents for system testing is prepared
in this phase.
Architecture Design




This phase can also be called as high-level design
(HLD).
The baseline in selecting the architecture is that it
should realize all the requirements within the given
time, cost and resources.
The output of this phase is the high-level design
document which typically consists of the list of
modules, brief functionality of each module, their
interface relationships, dependencies, database
tables, architecture diagrams, technology details etc
The integration testing design is carried
out in this phase.
Module Design



This phase can also be called as lowlevel design (LLD).
The designed system is broken up in to
smaller units or modules and each of
them is explained so that the
programmer can start coding directly.
The unit test design is developed in this
stage.
Coding

It is the process of writing, testing, and
maintaining the source code of
computer programs. The source code is
written in a programming language.
Validation Phases






Unit Testing
In the V-model of software development, unit
testing implies the first stage of dynamic
testing process.
Testing of individual components
It involves analysis of the written code with
the intention of eliminating errors.
It also verifies that the codes are efficient and
adheres to the adopted coding standards.
Testing is usually white box.
Integration Testing

Objectives:




To expose problems arising from the combination
To quickly obtain a working solution from components.
In integration testing the separate modules
will be tested together expose faults in the
interfaces and in the interaction between
integrated components.
Testing is usually black box as the code is
not directly checked for errors.
System Testing



System testing will compare the system
specifications against the actual system.
The system test design derived from
the system design documents and is
used in this phase.
Sometimes system testing is automated
using testing tools.
System Testing

Objective: Assess whether the app does what it is supposed to
do

Functional testing: coverage



Performance testing

Performance seen by



users: delay, throughput
System owner: memory, CPU, comm
Performance



Event-based coverage
Data-based
Explicitly specified or expected to do well
Unspecified  find the limit
Usability testing

Human element in system operation

GUI, messages, reports, …
User Acceptance Testing



Acceptance Testing checks the system
against the requirements of the user.
It uses black box testing using real
data, real people and real documents to
ensure ease of use and functionality of
systems.
Purpose: ensure that end users are
satisfied
Regression Testing


Retesting a previously tested program following
modification to ensure that faults have not been
introduced or uncovered as a result of the changes
made
Whenever a system is modified (fixing a bug, adding
functionality, etc.), the entire test suite needs to be
rerun



Make sure that features that already worked are not affected
by the change
Automatic re-testing before checking in changes into
a code repository
Incremental testing strategies for big systems
Performance Testing



Testing conducted to evaluate the compliance
of a system or component with specified
performance requirements.
Often this is performed using an automated
test tool to simulate large number of users.
Also know as "Load Testing".
These tests are also performed on different
platforms
Test Plan


A document describing the scope,
approach, resources, and schedule of
intended testing activities.
It identifies test items, the features to
be tested, the testing tasks, who will do
each task, and any risks requiring
contingency planning.
Tests Plans

Test plan need to be as early as possible, we are
trying to identify the mechanism to be used to ensure
that the customer receives a quality, test product.


Scope of testing(summarising functional, performance, and
internal design characteristics to be tested, plus schedule
constraints, completion criteria, etc)
Test plan (provides the overall strategy for test integration)
Test phases and builds
Schedule
Overhead software
Environment and resources

Test procedures





Order of integration (purpose, and modules to be tested )
Unit tests - description of tests and expected results –
Test environment - special tools, techniques
Test case data
Expected results
Test-Cases - Basics





Test Case is a commonly used term for a specific test. This is
usually the smallest unit of testing. A Test Case will consist of
information such as requirements testing, test steps, verification
steps, prerequisites, outputs, test environment, etc.
A set of inputs, execution preconditions, and expected outcomes
developed for a particular objective, such as to exercise a
particular program path or to verify compliance with a specific
requirement.
test-cases are derived during all phases of the development
cycle
determine expected results before running a test-case
look for errors where you found errors before
Testing and debugging




Defect testing and debugging are distinct
processes
Defect testing is concerned with confirming
the
presence of errors
Debugging is concerned with locating and
repairing these errors
Debugging involves formulating a hypothesis
about program behaviour then testing these
hypotheses to find the system error
©Ian Sommerville 1995
Debugging Activities
Locate error
& fault
Design fault
repair
Repair fault
Re-test
program
©Ian Sommerville 1995
Testing Activities
Identify
Test conditions (“What”): an item or event to be verified.
Design
How the “what” can be tested: realization
Build
Build test cases (imp. scripts, data)
Run the system
Execute
Test case outcome with
Compare expected outcome
Test result
Test tools





Computer programs used in the testing of a system, a
component of the system, or its documentation.
Various Automated Testing Tools have been developed and are
used to evaluate usability from different perspectives.
Test automation is the use of software to control the
execution of tests, the comparison of actual outcomes to
predicted outcomes,
The setting up of test preconditions, and other test control and
test reporting functions
Commonly, test automation involves automating a manual
process already in place that uses a formalized testing process.
Test tools




Code-driven testing
A growing trend in software development is to use
testing frameworks such as the xUnit frameworks (for
example, JUnit and NUnit) which allow the code to
conduct unit tests to determine whether various
sections of the code are acting as expected under
various circumstances.
Code driven test automation is a key feature of Agile
software development
It is considered more reliable because the code
coverage is better, and because it is run constantly
during development rather than once at the end of a
waterfall development cycle.
Test tools




Graphical User Interface (GUI) testing
Many test automation tools provide record and
playback features that allow users to record
interactively user actions and replay it back any
number of times, comparing actual results to those
expected.
Many test automation tools provide record and
playback features that allow users to record
interactively user actions and replay it back any
number of times, comparing actual results to those
expected.
A variation on this type of tool is for testing of web
sites. Here, the "interface" is the web page.
Test tools






JUnit
A regression testing framework used by developers
who implement unit tests in Java. (freeware)
Platforms running Java.
Software Description
• JUnit is a regression testing framework written by
Erich Gamma and Kent Beck. It is used by the
developer who implements unit tests in Java.
C++Test
A C/C++ unit testing tool that automatically tests any
C/C++ class, function, or component.
Test tools






Test Mentor - Java Edition
Java component, unit and function test automation
Software Description
•
A functional test and test modeling tool for Java developers & QA
Engineers to use as they develop their Java classes, clusters,
subsystems, frameworks, and other components, either deployed
on the client or the server during unit and integration testing.
Check
A unit test framework for C (freeware)
Software Description
•
Check features a simple interface for defining unit tests, putting
little in the way of the developer. Tests are run in a separate
address space, so Check can catch both assertion failures and code
errors that cause segmentation faults or other signals. The output
from unit tests can be used within source code editors and IDEs.
Test tools






HtmlUnit
Java unit testing framework for web applications
(freeware)
Software Description
HtmlUnit is a java unit testing framework for testing
web based applications. It is similar in concept to
httpunit but is very different in implementation
HttpUnit models the http protocol so you deal with
request and response objects. HtmlUnit on the other
hand, models the returned document so that you
deal with pages and form and tables.
http://www.testingfaqs.org/tunit.html#C++Test
Download