Basic Concepts of Testing-306792
Basic Concepts of Testing-306792
TESTING
SOFTWARE TESTING TYPES
Black Box Testing- Internal system design is not considered in this type
of testing. Tests are based on requirements and functionality.
White Box Testing- This testing is based on knowledge of the internal
logic of an application’s code. Also known as Glass box Testing. Internal
software and code working should be known for this type of testing. Tests
are based on coverage of code statements, branches, paths, conditions.
Unit Testing- Testing of individual software components or modules.
Typically done by the programmer and not by testers, as it requires detailed
knowledge of the internal program design and code. May
require developing test driver modules or test harnesses.
Incremental Integration Testing- Bottom up approach for testing i.e
continuous testing of an application as new functionality is added;
Application functionality and modules should be independent enough to test
separately. done by programmers or by testers.
Integration Testing- Testing of integrated modules to verify combined
functionality after integration. Modules are typically code modules, individual
applications, client and server applications on a network, etc. This type of
testing is especially relevant to client/server and distributed systems.
Functional Testing- This type of testing ignores the internal parts and
focus on the output is as per requirement or not. Black-box type testing
geared to functional requirements of an application.
System Testing- Entire system is tested as per the requirements. Black-
box type testing that is based on overall requirements specifications, covers
all combined parts of a system.
End-to-End Testing- Similar to system testing, involves testing of a
complete application environment in a situation that mimics real-world use,
such as interacting with a database, using network communications, or
interacting with other hardware, applications, or systems if appropriate.
Sanity Testing- Testing to determine if a new software version is performing well
enough to accept it for a major testing effort. If application is crashing for initial use
then system is not stable enough for further testing and build or application is
assigned to fix.
Regression Testing- Testing the application as a whole for the modification in
any module or functionality. Difficult to cover all the system in regression testing so
typically automation tools are used for these testing types.
Acceptance Testing- Normally this type of testing is done to verify if system
meets the customer specified requirements. User or customer do this testing to
determine whether to accept application.
Load Testing- Its a performance testing to check system behavior under
load. Testing an application under heavy loads, such as testing of a web site
under a range of loads to determine at what point the system’s response
time degrades or fails.
Stress Testing- System is stressed beyond its specifications to check
how and when it fails. Performed under heavy load like putting large number
beyond storage capacity, complex database queries, continuous input to
system or database load.
Performance Testing- Term often used interchangeably with ’stress’
and ‘load’ testing. To check whether system meets performance
requirements. Used different performance and load tools to do this.
Usability Testing- User-friendliness check. Application flow is tested,
Can new user understand the application easily, Proper help documented
whenever user stuck at any point. Basically system navigation is checked in
this testing.
Install/Uninstall Testing- Tested for full, partial, or upgrade
install/uninstall processes on different operating systems under different
hardware, software environment.
Recovery Testing- Testing how well a system recovers from crashes,
hardware failures, or other catastrophic problems.
Security Testing- Can system be penetrated by any hacking way.
Testing how well the system protects against unauthorized internal or
external access. Checked if system, database is safe from external attacks.
Compatibility Testing- Testing how well software performs in a
particular hardware/software/operating system/network environment and
different combination s of above.
Comparison Testing- Comparison of product strengths and weaknesses
with previous versions or other similar products.
Alpha Testing- In house virtual user environment can be created for this
type of testing. Testing is done at the end of development. Still minor design
changes may be made as a result of such testing.
Beta Testing- Testing typically done by end-users or others. Final testing
before releasing application for commercial purpose.
MODELS OF SOFTWARE TESTING
V-Model
The V-model is a software development process which can be presumed to
be the extension of the waterfall model. Instead 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-Model demonstrates the relationships between each
phase of the development life cycle and its associated phase of testing.
The V-model deploys a well-structured method in which each phase can be
implemented by the detailed documentation of the previous phase. Testing
activities like test designing start at the beginning of the project well before
coding and therefore saves a huge amount of the project time.
Many of the process models currently used can be more generally
connected by the 'V' model where the 'V' describes the graphical
arrangement of the individual phases. The 'V' is also a synonym for
Verification and Validation.
By the ordering of activities in time sequence and with abstraction levels the
connection between development and test activities becomes clear.
Oppositely laying activities complement one another (i.e.) server as a base
for test activities. For example, the system test is carried out on the basis of
the results specification phase.
V-MODEL
WATERFALL MODEL
Project Planning
Requirements Gathering – 1) Business Requirements
2) IT Requirements
Design – 1) HLD
2) LLD
Implementation (development) (unit testing)
Testing – a) Integration Testing b) System Testing c) End-to-End testing d)
User Acceptance Testing
Package & Release
Business Requirements- Constitutes a specification of what the system
wants, this is usually expressed in terms of broad outcomes the business
requires rather than specific function that the system may perform.
IT Requirements- Technical derivatives of Business requirements are IT
requirements. It describes what the system, product or process must do in
order to fulfill the business requirements. It will be more specific and
functional in terms.
HLD- High level Design gives the overall System Design in terms of
Functional Architecture and Database design. This is very useful for the
developers to understand the flow of the system. In this phase design team
review team (testers) and customers plays a major role. For this the entry
criteria are the requirement document that is SRS. And the exit criteria will
be HLD projects standards the functional design documents and the
database design document.
LLD- During the detailed phase the view of the application developed
during the high level design is broken down into modules and programs.
Logic design is done for every program and then documented as program
specifications. For every program a unit test plan is created.
The entry criteria for this will be the HLD document. And the exit criteria will
the program specification and unit test plan (LLD).
Test Plan- is a document which talks about what will be tested by whom
and in which environment. It mainly defines the following-
a) Scope b) Approach c) Timelines d) Resources
Test Strategy- The purpose of this document is to specify the overall
testing procedure to be carried forward for the particular project. It Contains
details about the various testing phases involved, testing methodologies
adopted, test environments, test timelines (period), various testing tools
used and the details of the deliverables.
Test Case- a set of conditions under which a tester will determine
if the requirements of an application is partially or fully satisfied. A
Test case consists of several test steps.