2. INDEX
1. Introduction to Software
i. Definition
ii. Types of Software
2. Introduction to SOFTWARE TESTING
i. Objectives of Software Testing
ii. Purpose of Software Testing
3. Types of TESTING
4. Software Testing Life Cycle(STLC)
5. Summary
3. Introduction to Software:
Definition:
Software, in it’s general terms, is a set of instructions or
programs instructing a computer to do specific tasks. It is a
general term used to describe computer program.
It can also be defined as the process of verifying and
validating the software application with respect to the customer
requirements.
Types of Software:
Practical computer systems divide software systems into
three major classes:
1. System Software
2. Programming Software
3. Application Software
4. System Software:
provides the basic functions for computer usage and helps
to run the computer hardware and system.
purpose is to unburden the application software
programmer from the often complex details of the particular
computer being used such as device readers, printers,
keyboards.
Programming Software:
usually provides tools to assist a programmer in writing
computer programs, and software using different programming
languages in a more convenient way.
Tools include: compilers, interpreters, debuggers, linkers.
5. Application Software:
is developed for some certain purpose, which either can
be a certain program or a collection of some programmes, such
as a graphic browser or the data base management system.
allows end users to accomplish one or more specific tasks.
6. Software Testing:
Introduction:
Testing is a process used to help identify the correctness,
completeness and quality of developed computer software.
Testing can never completely establish the correctness of
computer software.
One definition of testing is "the process of questioning a
product in order to evaluate it", where the "questions" are
things the tester tries to do with the product, and the product
answers with it’s behaviour in reaction to the probing of the
tester.
Testing helps in Verifying and Validating if the Software
is working as it is intended to be working.
7. Objectives of Software Testing:
To ensure that the software satisfies the BRS i.e., Business
Requirement Specification and SRS i.e., System Requirement
Specifications.
Finding defects which may get created by the programmer
while developing the software.
Gaining confidence in and providing information about the
level of quality.
To prevent defects.
To gain the confidence of the customers by providing them a
quality product.
To make sure that the end result meets the business and user
requirements.
8. Purpose of Software Testing:
Software testing is really required to point out the defects and
errors that were made during the development phases.
It’s essential since it makes sure of the Customer’s reliability
and their satisfaction in the application.
It is very important to ensure the Quality of the
product. Quality product delivered to the customers helps in
gaining their confidence.
Testing is necessary in order to provide the facilities to the
customers like the delivery of high quality product or
software application which requires lower maintenance cost
and hence results into more accurate, consistent and reliable
results.
9. Testing is required for an effective performance of software
application or product.
It’s important to ensure that the application should not result
into any failures because it can be very expensive in the
future or in the later stages of the development.
10. Types of TESTING:
Testing of a software is done based on 5 major classifications
namely:
1. Source of test
2. Life Cycle phase
3. Goal of specific testing activity
4. Characteristics of the artifact under test
5. Test process
11. Source of test:
Black box testing – is a method that examines the functionality
of an application without peering into its internal structures or
working. Tests are based on requirements and functionality.
Also known as Closed box Testing.
12. White box testing – is a method that tests internal structures or
workings of an application, as opposed to its functionality. This
testing is based on knowledge of the internal logic of an
application’s code.
Also known as Glass box Testing, Clear 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.
13. Interface Testing – is performed to evaluate whether systems or
components pass data and control correctly to one another.
Ad hoc Testing – is a method performed without planning and
documentation, but can be applied to early scientific
experimental studies.
14. Life Cycle phase:
Unit Testing – is a method of 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.
Integration Testing – is a method of 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.
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.
15. 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.
Beta Testing – Final testing before releasing application for
commercial purpose. It is typically done by end-users or others.
16. Goal of specific testing activity:
Robustness Testing – is any quality assurance methodology
focused on testing the robustness of software.
Stress Testing – Testing technique which evaluates a system or
component at or beyond the limits of its specified
requirements.
usually conducted by the performance engineer.
Performance Testing – is the process of determining the speed
or effectiveness of a computer, network, software program or
device.
usually conducted by the performance engineer.
17. Load Testing – is a performance testing to check system
behaviour 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.
usually conducted by the performance engineers.
18. Test Process:
Waterfall Model – Requirement Analysis
Design
System Testing
Coding & Unit Testing
Integration & subsystem
Testing
Maintenance
Training & Delivery
Acceptance Testing
19. V- model –
Requirement Analysis
Design
System Testing
Coding
Integration & subsystem
Testing
Maintenance
Acceptance Testing
Develop unit tests
Unit Testing
Validate requirement
Develop system acceptance tests
Validate design
Develop integration tests
20. Agile Testing – Agile is an iterative development methodology,
where requirements evolve through collaboration between the
customer and self-organizing teams and agile aligns
development with customer needs.
21. Software Testing Life Cycle(STLC):
is a testing process which is executed in a sequence, in
order to meet the quality goals. It is not a single activity but it
consists of many different activities which are executed to
achieve a good quality product.
Sequence of STLC:
1. Requirement Analysis
2. Test Planning
3. Test Case Development
4. Environment Setup
5. Test Execution
6. Test Cycle Closure
22. Process Chart of STLC:
Requirements
Analysis
Test Planning
Test Case
Development
Environment Setup
Test Execution
Test Cycle Closure
23. Requirement Analysis:
Activities to be done:
Analyzing the SRS from the testing point of view.
Identifying the testing techniques and testing types.
Prioritizing the feature which need focused testing.
Analyzing the Automation feasibility.
Identifying the details about the testing environment where
actual testing will be done.
Outcomes:
Requirement Traceability Matrix.
Automation feasibility report.
24. Test Planning:
Activities to be done:
Estimation of testing effort.
Selection of Testing Approach.
Preparation of Test Plan, Test strategy documents.
Resource planning and assigning roles and responsibility to
them.
Selection of Testing tool.
Outcomes:
Test Plan document.
Test Strategy document.
Best suited Testing Approach.
25. Test Case Development:
Activities to be done:
Creation of test cases.
Creation of test scripts if required.
Verification of test cases and automation scripts.
Creation of Test Data in testing environment.
Outcomes:
Test cases.
Test scripts (for automation if required).
Test Data.
26. Environment Setup:
Activities to be done:
As per the Requirement and Architecture document the list of
required software and hardware is prepared.
Setting up of test environment.
Creation of test data.
Installation of build and execution of Smoke testing on it.
Outcomes:
Test Environment setup is ready.
Test Data is created.
Results of Smoke testing.
27. Test Execution:
Activities to be done:
Execution of Test Cases.
Reporting test results.
Logging defects for the failed test cases.
Verification and retesting of the defect.
Closure of defects.
Outcomes:
Test execution Report.
Updated test cases with results.
Bug Report.
28. Test Cycle Closure:
Activities to be done:
To evaluate the test completion on the basis of Test Coverage
and Software Quality.
Documentation of the learning from the project.
Analyzing the test results to find out the distribution of severe
defects.
Test Closure Report preparation.
Outcomes:
Report of Test Closure.