0% found this document useful (0 votes)
72 views72 pages

Software Test Types and Levels

The document discusses different types of software testing including component testing, integration testing, system testing, and acceptance testing. It also discusses different test types including risk-based testing and functional testing. Component testing involves testing individual software components in isolation. Integration testing involves testing the interfaces and interactions between integrated components. System testing verifies that the integrated system meets specified requirements. Acceptance testing determines if the system satisfies user needs and acceptance criteria.

Uploaded by

gosho
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views72 pages

Software Test Types and Levels

The document discusses different types of software testing including component testing, integration testing, system testing, and acceptance testing. It also discusses different test types including risk-based testing and functional testing. Component testing involves testing individual software components in isolation. Integration testing involves testing the interfaces and interactions between integrated components. System testing verifies that the integrated system meets specified requirements. Acceptance testing determines if the system satisfies user needs and acceptance criteria.

Uploaded by

gosho
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 72

3.

SOFTWARE TEST TYPES AND


LEVELS
Table of Contents
 Test Levels
Component Testing (Unit testing)
Integration Testing
System Testing
Acceptance Testing
Table of Contents (2)
 Test Types
Risk-Based Testing
Functional Testing
Non-functional Testing
Structural Testing
Testing Related to Changes:
Re-testing and Regression Testing
 Maintenance Testing
Component Testing
Main Terms
 Component testing
Testing separate components of the software
 Software units (components)
Modules, units, programs, functions
Classes – in Object Oriented Programming
 Respective tests are called:
Module, unit, program or class tests
 In practice usually involves the programmer who wrote the code
 Defects are typically fixed as soon as they are found
 without formally recording the incidents found
Units vs. Components
 Unit
The smallest compilable component
 Component
A unit is a component
The integration of one or more components is a component
Test Objects
 Individual testing
Components are tested individually
Isolated from all other software components
 Isolation
Prevents external influences on the components
 Component test checks aspects internal to the
component
Interaction with neighbors is not performed
Component Testing Helpers
 Stubs
In Component testing called components are replaced
with stubs, simulators, or trusted components
A skeletal or special-purpose implementation of a software
component, used to develop or test a component that calls or is
otherwise dependent on it. It replaces a called component.
 Drivers
Calling components are replaced with drivers or trusted super-
components
A software component or test tool that replaces a component that
takes care of the control and/or the calling of a component or system.
Integration Testing
Integration
 Composing units to form larger structural units and
subsystems

 Done by developers, testers, or special integration


teams

 Supposes that components are already tested


individually
Levels of Integration Testing
 Component integration testing
Expose defects in the interfaces and interaction between
integrated components
Also called
○ “Integration test in the small”
 System integration testing
Testing the integration of systems and packages
Testing interfaces to external organizations
Also called
○ “Integration test in the large”
Off-the-shelf Products
 Standard, existing components used with some
modification

 Usually not subject of component testing

 Must be tested for integration


Why Integration Testing?
 After assembling the components new fault may occur
 Testing must confirm that all components collaborate
correctly
 The main goal - exposing faults
In the interfaces
In the interaction between integrated components
Some Typical Problems
 Wrong interface formats
Incompatible interface formats
Wrong files format
 Typical faults in data exchange
Syntactically wrong or no data
Different interpretation of received data
Timing problems
Integration Approaches
 There are different approaches for integration testing

The Big Bang approach


○ all components or systems are integrated simultaneously
○ The main disadvantage: difficult to trace the cause of failures

The incremental approach


○ The main disadvantage: time-consuming
Incremental Approaches
 The Top-Down approach
The high level logic and flow are tested first - the low level
components are tested later
 The Bottom-Up approach
Opposite to the Top-Down approach
The main disadvantage - the high level or the most complex
functionalities are tested late
System Testing
Why System Testing
 Previous tests were done against technical
specifications
 The system test
Looks at the system from another perspective
○ Of the customer
○ Of the future user
 Many functions and system characteristics result from
the interaction of all system components
Test Environment
 System testing requires specific test environment
Hardware
System software
Device driver software
Networks
External systems
Test Environment (2)
 A common mistake is testing in the customer’s
operational environment
Failures may cause damage to the system
No control on the environment
○ Parallel processes may influence
○ The test can hardly be reproduced
Common Problems
 Unclear or missing system requirements
Missing specification of the system's correct behavior
 Missed decisions
Not reviewed and not approved requirements
 Project failure possible
Realization might turn to be in the wrong direction
Acceptance Testing
The Main Idea
 The focus is on the customer's perspective and
judgment
Especially for customer specific software
 The customer is actually involved
The only test he can understand
Might have the main responsibility
 Performed in a customer’s like environment
As similar as possible to the target environment
New issues may occur
Forms of Acceptance Testing
 Typical aspects of acceptance testing:
Contract fulfillment verification
User acceptance testing
Operational (acceptance) testing
Field test (alpha and beta testing)
Contract Fulfillment Verification
 Testing according to the contract
Is the development / service contract accomplished
Is the software free of (major) deficiencies
 Acceptance criteria
Determined in the development contract
Any regulations that must be adhered to
○ Governmental, legal, or safety regulations
User Acceptance Testing
 The client might not be the user
 Every user group must be involved
Different user groups may have different expectations
Rejection even by a single user group may be problematic
Acceptance In Advance
 Acceptance tests can be executed within lower test
levels
During integration
○ E.g. a commercial off-the-shelf software
During component testing
○ For component’s usability
Before system testing
○ Using a prototype
○ For new functionality
Operational (Acceptance) Testing
 Acceptance by the system administrators
Testing backup/restore cycles
Disaster recovery
User management
Maintenance tasks
Security vulnerabilities
Field Testing
 Software may be run on many environments
All variations cannot be represented in a test
 Testing with representative customers
Alpha testing
○ Takes place at the developer's site
○ A cross-section of potential users and members of the developer's organization are
invited
○ Developers observe the users and note problems
Beta testing
○ Sends the system to a cross-section of users who install it and
use it under real-world working conditions
○ The users send records of incidents with the system to the development organization
Summary
Component testing - The testing of individual software components.
Integration testing - Testing performed to expose defects in the
interfaces and in the interactions between integrated components or
systems.
System testing - The process of testing an integrated system to
verify that it meets specified requirements.
Acceptance testing - Formal testing with respect to user needs,
requirements, and business processes conducted to determine
whether or not a system satisfies the acceptance criteria and to
enable the user, customers or other authorized entity to determine
whether or not to accept the system.
Test Types
Risk-Based Testing
Risk
 Risk
The possibility of a negative or undesirable outcome or event
Any problem that may occur
○ Would decrease perceptions of product quality or project
success
Types of Risk
 Two main types of risk are concerned
Product (quality) risks
○ The primary effect of a potential problem is on the product
quality
Project (planning) risks
○ The primary effect is on the project success
Levels of Risk
 Not all risks are equal in importance
 Factors for classifying the level of risk:
Likelihood of the problem occurring
○ Arises from technical considerations
○ E.g. programming languages used, bandwidth of connections,
etc.
Impact of the problem in case it occurs
○ Arises from business considerations
○ E.g. financial loss, number of users affected, etc.

35
Levels of Risk - Chart
Prioritization of Effort
 Effort is allocated proportionally to the level of risk

The more important risks are tested first !!!


Product Risks:
What to Think About
 Which functions and attributes are critical (for the
success of the product)?
 How visible is a problem in a function or attribute?
(For customers, users, people outside)
 How often is a function used?
 Can we do without?
Functional Testing
Functional Testing
 Functional testing verifies the system's input–output
behavior
 Black box testing methods are used
 The test bases are the functional requirements
Functional Requirements
 They specify the behavior of the system
“What" the system must be able to do?

Define constraints on the system


Requirements Specifications
 Functional requirements must be documented
Requirements management system
Text based Software Requirements Specification (SRS)

 Example:
http://www.slideshare.net/KrishnasaiGudavalli/software
-requirements-specification-17173967
Requirements-based Testing
 Requirements are used as the basis for testing
At least one test case for each requirement
Usually more than one is needed
 Mainly used in:
System testing
Acceptance testing
Functional testing types
 Smoke
 Sanity
 Regression
 Re-testing
 System testing - it’s functional part
 Unit testing
 UAT
Non-functional Testing
Testing the System Attributes
 “How well" or with what quality the system should carry
out its function
 Attributive characteristics:
Reliability
Usability
Efficiency
Testability of Requirements
 Nonfunctional requirements are often not clearly
defined
 How would you test:
“The system should be easy to operate”
“The system should be fast”
 Requirements should be expressed in a testable way
Make sure every requirement is testable
○ Make it early in the development process
Nonfunctional Tests
 Performance test
Processing speed and response time
 Load test
Behavior in increasing system loads
○ Number of simultaneous users
○ Number of transactions
 Stress test
Behavior when overloaded
Nonfunctional Tests (2)
 Volume test
Behavior dependent on the amount of data
 Testing of security
Against unauthorized access
Service attacks
 Stability
Mean time between failures
Failure rate with a given user profile
Nonfunctional Tests (3)
 Robustness test
Response
Examination of exception handling and recovery to errors
 Compatibility and data conversion
Compatibility to given systems
Import/export of data

50
Nonfunctional Tests (4)
 Different configurations of the system
Back-to-back testing
 Usability test
Ease of learning the system
Ease and efficiency of operation
Understandability of the system

51
Structural Testing
Examining the Structure
 Often referred to as ‘white-box’ or ‘glass-box’ testing
 Uses information about the internal code structure or
architecture
 Tools can be used to measure the code coverage of
elements, such as statements or decisions

53
Structure Testing Application
 Mostly used for:
Component testing
Integration testing
 Can also be applied at:
System integration
Acceptance testing

54
Testing Related to Changes:
Re-testing and Regression Testing
Re-testing
 After a defect is detected and fixed, the software
should be re-tested
To confirm that the original defect has been successfully
removed
 This is called confirmation

56
What is Regression Testing
 Retest of a previously tested program
Needed after modifications of the program
 Testing for newly introduced faults
As a result of the changes made to the system
 May be performed at all test levels

57
Tests Reusability
 Test cases, used in regression testing, run many times
They have to be well documented and reusable
Strong candidates for test automation

58
Volume of the Regression Test
 How extensive a regression test should be?
 There are a few levels of testing extensity:
1. Defect retest (confirmation testing)
○ Rerunning tests that have detected faults
2. Testing altered functionality
○ Only changed or corrected parts

59
Volume of the Regression Test (2)
 There are a few levels of testing extensity:
3. Testing new functionality
○ Testing newly integrated program parts
4. Complete regression test
○ Testing the whole system

60
Unexpected Side Effects
 The main trouble of software
The code complexity
 Altered or new code parts may affect unchanged code
Testing only code, that is changed, is not enough

61
Complete Regression Test
 The only way to be sure (as possible)
 System environment changes
Also require regression testing
Could have effects on every part of the system
 Too time consuming and costly
Not achievable in a reasonable cost
Impact analysis of the changes is needed

62
Maintenance Testing
What Do We Maintain?
 Software does not wear out and tear
Some design faults already exist
Bugs are about to be revealed
 A software project does not end with the first
deployment
Once installed, it will often be used for years or decades
It will be changed, updated, and extended many times

64
What Do We Maintain? (2)
 New versions
Each time a correction is made - a new version of the original
product is created
 Testing the changes can be difficult
Outdated or missing system specifications

65
Main Types Of Maintenance
 Adaptive maintenance
Product is adapted to new operational conditions
 Corrective maintenance
Defects being eliminated

66
Common Reasons For Maintenance
 The system is run under new operating conditions
Not predictable and not planned
 The customers express new wishes
 Rarely occurring special cases
Not anticipated by design
New methods and classes need to be written
 Rarely occurring crashes reported

67
Testing After Maintenance
 Anything new or changed should be tested
 Regression testing is required
The rest of the software should be tested for side effects
 What if the system is unchanged?
Testing is needed even if only the environment is changed
 The scope is related to the risk of the change, the size of the
existing system and to the size of the change
 May be done at any or all test levels and for any or all test
types
 Key activity – impact analysis

68
Triggers for Maintenance Testing
 Planned modifications
Enhancement modifications (adapting software to the user's wishes, for
instance by supplying new functions or enhancing performance)
Changes of environment (planned operating system or database
upgrades)
Corrective and emergency changes
 Migration (from one platform to another)
Should include operational test of the new environment
 Retirement of a system
May include the testing of data migration or archiving if long data-
retention periods are required
Definitions
Maintenance testing - Testing the changes to an
operational system or the impact of a changed
environment to an operational system.
Maintainability testing - The process of testing to
determine the maintainability of a software product.
Links
 http
://softwaretestingfundamentals.com/differences-betwee
n-black-box-testing-and-white-box-testing/
 http://technologyconversations.com/2013/12/11/black-b
ox-vs-white-box-testing/

You might also like