3. After completing
this lesson, you
will be able to
understand:
1. Software development models
2.Test levels
3.TestTypes
4. MaintenanceTesting
4. K Levels
2)Testing throughout the life-cycle: (K2)
Software development models (K2)
Test Levels (Eg. Unit testing, Component
testing, Integration testing.) (K2)
Test types (Functional, non-functional,
structural, change-related testing) (K2)
Maintenance testing (K2)
5. Verification
andValidation
testing
VERIFICATION TESTING VALIDATIONTESTING
Verification is a static practice of
verifying documents, design,
code and program.
Validation is a dynamic
mechanism of validating and
testing the actual product.
It does not involve executing the
code.
It always involves executing the
code.
Examples includes reviews,
inspection and walkthrough
Example includes all types of
testing like smoke, regression,
functional, systems and UAT
It generally comes first-done
before validation.
It generally follows after
verification.
Checks “Are we building the
product right”?
Checks “Are we building the right
product”?
Involves all the static testing
techniques
Includes all the dynamic testing
techniques.
6. Software
Development
Model –
V model
TheV - model is SDLC model where execution of processes
happens in a sequential manner inV-shape. It is also known as
Verification andValidation model.
The corresponding testing phase of the development phase is planned in parallel.
7. Following are theValidation phases inV-Model:
UnitTesting: Unit tests designed in the module design phase are executed on the code during this
validation phase. Unit testing is the testing at code level and helps eliminate bugs at an early
stage, though all defects cannot be uncovered by unit testing.
IntegrationTesting: Integration testing is associated with the architectural design phase.
Integration tests are performed to test the coexistence and communication of the internal
modules within the system.
SystemTesting: System testing is directly associated with the System design phase. System tests
check the entire system functionality and the communication of the system under development
with external systems. Most of the software and hardware compatibility issues can be uncovered
during system test execution.
AcceptanceTesting: Acceptance testing is associated with the business requirement analysis
phase and involves testing the product in user environment.Acceptance tests uncover the
compatibility issues with the other systems available in the user environment. It also discovers the
non functional issues such as load and performance defects in the actual user environment.
9. Software
Development
Model –
Incremental
Model
Making the life cycle a “multi-waterfall” cycle .
Cycles are divided up into smaller, more easily managed modules.
Each module passes through the requirements, design, implementation
and testing phases
A working version of software is produced during the first module
we work incrementally we are adding piece by piece but expect that
each piece is fully finished
13. Whichever life cycle model is being used, there are several characteristics of good testing:
• For every development activity there is a corresponding testing
activity.
• Each test level has test objectives specific to that level.
•The analysis and design of tests for a given test level should begin
during the corresponding development activity.
•Testers should be involved in reviewing documents as soon as
drafts are avail able in the development cycle.
14. TEST LEVELS
1. Component testing, also known as unit, module and program
testing, searches for defects in, and verifies the functioning of
software (e.g. modules, programs, objects, classes, etc.) that are
separately testable. [Done by developers]
1.1.What is Stubs and Drivers ?
Most often stubs and drivers are used to replace the missing
software and simulate the interface between the software
components in a simple manner. A stub is called from the
software component to be tested; a driver calls a component to
be tested
.
15. IntegrationTesting: Integration testing is associated with the architectural design phase.
Integration tests are performed to test the coexistence and communication of the internal
modules within the system.
SystemTesting: System testing is directly associated with the System design phase. System tests
check the entire system functionality and the communication of the system under development
with external systems. Most of the software and hardware compatibility issues can be uncovered
during system test execution.
AcceptanceTesting: Acceptance testing is associated with the business requirement analysis
phase and involves testing the product in user environment. It also discovers the non functional
issues such as load and performance defects in the actual user environment.
Alpha testing: Alpha testing is done at the developers site. It is done at the end of the development process
Beta testing: Beta testing is done at the customers site. It is done just before the launch of the product.
16. Acceptance
testing -Types
The user acceptance test focuses mainly on the functionality
thereby validating the fitness-for-use of the system by the business
user
The operational acceptance test (also called production
acceptance test) validates whether the system meets the
requirements for operation.
Contract acceptance testing is performed against a contract's
acceptance criteria for producing custom-developed software.
Acceptance should be formally defined when the contract is
agreed
Compliance acceptance testing or regulation acceptance
testing is performed against the regulations which must be
adhered to, such as governmental, legal or safety regulations.
17. Integration
testing
When two different modules ‘Module A’ and ‘Module B’ are
integrated then the integration testing is done.
Integration testing follows two approach known as ‘Top Down’
approach and ‘Bottom Up’ approach.
In Big Bang integration testing all components or modules are
integrated simultaneously, after which everything is tested as a
whole
18. Integration
testing
Top down and
Bottom Up
Top-down integration testing:Testing takes place from top to
bottom, following the control flow or architectural structure (e.g.
starting from the GUI or main menu). Components or systems are
substituted by stubs.
Drawback - Basic functionality is tested at the end of cycle
Bottom-up integration testing: Testing takes place from the bottom
of the control flow upwards. Components or systems are substituted
by drivers
19. TEST TYPES
Test types are introduced as a means of clearly defining the
objective of a certain test level for a programme or project.We
need to think about different types of testing because testing the
functionality of the component or system may not be sufficient at
each level to meet the overall test objectives.
1Testing of function (functional testing)
2Testing of software product characteristics (non-functional
testing)
3Testing of software structure/architecture (structural testing)
4Testing related to changes (confirmation and regression
testing)
20. TEST TYPES
Functional test tends to answer the questions like “can the user do
this” or “does this particular feature work”
The techniques used for functional testing are often specification-
based.Testing functionality can be done from two perspective:
Requirement-based testing: In this type of testing the
requirements are prioritized depending on the risk criteria and
accordingly the tests are prioritized.This will ensure that the most
important and most critical tests are included in the testing effort.
Business-process-based testing: In this type of testing the
scenarios involved in the day-to-day business use of the system are
described. It uses the knowledge of the business processes.
For example, a personal and payroll system may have the business
process along the lines of: someone joins the company, employee is
paid on the regular basis and employee finally leaves the company.
Functional testing considers the specified behavior and is often also
referred to as black-box testing.This is not entirely true, since
black-box testing also includes non-functional testing
FunctionalTesting.
Testing of function
(functional testing)
21. TEST TYPES
In non-functional testing the quality characteristics of the
component or system is tested.
Non-functional testing includes:
Non - Functional
Testing.
Testing of software
product
characteristics
Reliability testing Usability testing
Efficiency testing Maintainability testing
Portability testing Baseline testing
Compliance testing Documentation testing
Endurance testing Load testing
Performance testing Compatibility testing
Security testing Scalability testing
Volume testing Stress testing
Recovery testing Internationalization testing and
Localization testing
22. Reliable testing : A test is considered reliable if we get the same result repeatedly.
Usability testing: In usability testing basically the testers tests the ease with which the
user interfaces can be used. It tests that whether the application or the product built is
user-friendly or not.
Efficiency Testing – [Internal to organization]
Test efficiency = (total number of defects found in unit+integration+system) / (total
number of defects found in unit+integration+system+User acceptance testing)
Testing Efficiency = (No. of defects Resolved /Total No. of Defects Submitted)* 100
SoftwareTest Effectiveness covers three aspects:
— How much the customer’s requirements are satisfied by the system.
— How well the customer specifications are achieved by the system.
— How much effort is put in developing the system.
PortabilityTesting - It refers to the process of testing the ease with which a computer
software component or application can be moved from one environment to another, e.g.
moving of any application fromWindows 2000 to Windows XP.
23. Baseline testing: It refers to the validation of documents and specifications on which test cases would
be designed.The requirement specification validation is baseline testing.
Compliance testing: It is related with the IT standards followed by the company and it is the testing
done to find the deviations from the company prescribed standards.
Documentation testing:As per the IEEE Documentation describing plans for, or results of, the testing
of a system or component,Types include test case specification, test incident report, test log, test
plan, test procedure, test report. Hence the testing of all the above mentioned documents is known as
documentation testing.
Endurance testing: Endurance testing involves testing a system with a significant load extended over
a significant period of time, to discover how the system behaves under sustained use.
For example, in software testing, a system may behave exactly as expected when tested for 1 hour
but when the same system is tested for 3 hours, problems such as memory leaks cause the system to
fail or behave randomly.
24. Load testing: A load test is usually conducted to understand the behavior of the application under a specific
expected load. Load testing is performed to determine a system’s behavior under both normal and at peak
conditions.
E.g. If the number of users are in creased then how much CPU, memory will be consumed, what is the
network and bandwidth response time
Performance testing: Performance testing is testing that is performed, to determine how fast some aspect
of a system performs under a particular workload.
It can compare two systems to find which performs better. Or it can measure what part of the system or
workload causes the system to perform badly.
Compatibility testing : Compatibility testing is basically the testing of the application or the product built
with the computing environment [Browsers , OS , hardware]
Security testing: Security testing is basically to check that whether the application or the product is secured
or not.
Scalability testing: It is the testing of a software application for measuring its capability to scale up in terms
of any of its non-functional capability like load supported, the number of transactions, the data volume
25. Volume testing :Volume testing refers to testing a software application or the product with a certain amount of
data. E.g., if we want to volume test our application with a specific database size, we need to expand our database
to that size and then test the application’s performance on it.
Stress testing : It involves testing beyond normal operational capacity, often to a breaking point, in order to
observe the results.
The goals of such tests may be to ensure the software does not crash in conditions of insufficient computational
resources (such as memory or disk space).
Recovery testing : Recovery testing is done in order to check how fast and better the application can recover after
it has gone through any type of crash or hardware failure etc.
For example: When an application is receiving data from a network, unplug the connecting cable. After some time,
plug the cable back in and analyze the application’s ability to continue receiving data from the point at which the
network connection was broken. OR Restart the system while a browser has a definite number of sessions and
check whether the browser is able to recover all of them or not.
Internationalization testing and Localization testing : Internationalization is a process of designing a software
application so that it can be adapted to various languages and regions without any changes.
Whereas Localization is a process of adapting internationalized software for a specific region or language by adding
local specific components and translating text.
1) For globalized, it should allow to enter alphanumeric inputs
2) For localized (country like INDIA), it should allow only numbers in input field.
26. VolumeTesting = Large amounts of data
LoadTesting = Large amount of users
StressTesting =Too many users, too much data, too little
time and too little room
27. TEST TYPES
Structural testing is often referred to as 'white-box' or
'glass-box' because we are interested in what is
happening 'inside the box'.
In structural testing the testers are required to have the
knowledge of the internal implementations of the
code. Here the testers require knowledge of how the
software is implemented, how it works.
During structural testing the tester is concentrating on
how the software does it. For example, a structural
technique wants to know how loops in the software are
working.This may be done regardless of the
functionality of the software.
Structural testing.
Testing of software
structure/architecture
28. TEST TYPES
Confirmation testing or re-testing:When a test fails because of
the defect then that defect is reported and now we gets a new
version of software after defect fix.
In this case we need to execute the test again to confirm that
whether the defect got actually fixed or not.This is known as
confirmation testing and also known as re-testing.
It is important to ensure that the test is executed in exactly the
same way it was the first time using the same inputs, data and
environments.
Regression testing: During confirmation testing the defect got fixed and
that part of the application started working as intended. But there might
be a possibility that the fix may have introduced or uncovered a different
defect elsewhere in the software.
The way to detect these ‘unexpected side-effects’ of fixes is to do
regression testing.
Confirmation and
regression testing .
Testing related to
changes
29. Maintenance
Testing
Once a system is deployed it is in service for years and decades.
During this time the system and its operational environment is
often corrected, changed or extended.Testing that is provided
during this phase is called maintenance testing.
Usually maintenance testing is consisting of two parts:
First one is, testing the changes that has been made because of
the correction in the system or if the system is extended or
because of some additional features added to it.
Second one is regression tests to prove that the rest of the system
has not been affected by the maintenance work.
30. Impact analysis
in software
testing
Impact analysis is basically analyzing the impact of the changes in
the deployed application or product.
It tells us about the parts of the system that may be
unintentionally affected because of the change in the application
and therefore need careful regression testing.
This decision is taken together with the stakeholders.
31. Q &A
Lets try to answer few questions based
on chapter 02
32. Question 1 What are good practices for testing within the
development life cycle?
a. Early test analysis and design.
b. Different test levels are defined with specific objectives.
c.Testers will start to get involved as soon as coding is done.
d. A and B above.
33. Question 2Which option best describes objectives for test levels with
a life cycle model?
a. Objectives should be generic for any test level.
b. Objectives are the same for each test level.
c.The objectives of a test level don't need to be defined in advance.
d. Each level has objectives specific to that level
34. Question 3 Which of the following is a test type?
a. Component testing
b. Functional testing
c. System testing
d. Acceptance testing
35. Question 4 Beta testing is:
a. Performed by customers at their own site.
b. Performed by customers at the software developer's site.
c. Performed by an independent test team.
d. Useful to test software developed for a specific customer or user.
36. Question 5 : A regression test:
a. Is only run once.
b.Will always be automated.
c.Will check unchanged areas of the software to see if they have been affected.
d.Will check changed areas of the software to see if they have been affected.
Editor's Notes
The Institute of Electrical and Electronics Engineers