Software Testing
Anas Ali
Department of Computer Science
NUML Lahore Campus
Software Testing
• Software testing is defined as the execution of a program to find its
faults. While more time typically is spent on testing than in any other
phase of software development, there is considerable confusion
about its purpose.
• Many software professionals, for example, believe that tests are run
to show that the program works rather than to learn about its faults
How to define Software Testing Principles
• Testing
The execution of a program to find its faults
• Verification
The process of proving the programs correctness.
• Validation
The process of finding errors by executing the program in a real environment
• Debugging
Diagnosing the error and correct it
Testing Principles: To remove as many defects as possible before test since the
quality improvement potential of testing is limited
Testing Levels
• Unit testing
• Integration testing
• System testing
• Acceptance testing
Unit testing
• The most ‘micro’ scale of testing.
• Tests done on particular functions or code modules.
• Requires knowledge of the internal program design and code.
• Done by Programmers (not by testers).
Unit testing
Objectives ∙ To test the function of a program or unit of
code such as a program or module
∙ To test internal logic
∙ To verify internal design
∙ To test path & conditions coverage
∙ To test exception conditions & error
handling
When ∙ After modules are coded
Input ∙ Internal Application Design
∙ Master Test Plan
∙ Unit Test Plan
Output ∙ Unit Test Report
Who ∙Developer
Methods ∙White Box testing techniques
∙Test Coverage techniques
Tools ∙Debug
∙Re-structure
∙Code Analyzers
∙Path/statement coverage tools
Education ∙Testing Methodology
∙Effective use of tools
Integration Testing
•Testing of combined parts of an application to
determine their functional correctness.
•‘Parts’ can be
• code modules
• individual applications
• client/server applications on a network.
Types of Integration Testing
Big Bang testing: Big Bang Integration Testing is an integration
testing strategy wherein all units are linked at once, resulting in a
complete system. When this type of testing strategy is adopted, it is
difficult to isolate any errors found, because attention is not paid to
verifying the interfaces across individual units.
Top Down Integration testing: testing form the top of the
module hierarchy and work down to the bottom. Modules
are added in descending hierarchical order.
Bottom Up Integration testing:
testing from the bottom of the hierarchy and works up to the
top. Modules are added in ascending hierarchical order.
System Testing & Acceptance Testing
• the process in which a quality • Acceptance Testing: Acceptance
assurance (QA) team evaluates testing is a quality assurance (QA)
how the various components of process that determines to what
an application interact together in degree an application meets end
the full, integrated system or users' approval
application.
System Testing
Objectives ∙ To verify that the system components perform
control functions
∙ To perform inter-system test
∙ To demonstrate that the system performs both
functionally and operationally as specified
∙ To perform appropriate types of tests relating
to Transaction Flow, Installation, Reliability,
Regression etc.
When ∙ After Integration Testing
Input ∙ Detailed Requirements & External Application
Design
∙ Master Test Plan
∙ System Test Plan
Output ∙ System Test Report
Who ∙Development Team and Users
Methods ∙Problem / Configuration Management
Tools ∙Recommended set of tools
Education ∙Testing Methodology
∙Effective use of tools
Acceptance Testing
Objectives ∙ To verify that the system meets
the user requirements
When ∙ After System Testing
Input ∙ Business Needs & Detailed
Requirements
∙ Master Test Plan
∙ User Acceptance Test Plan
Output ∙ User Acceptance Test report
Who Users / End Users
Methods ∙Black Box techniques
∙Problem / Configuration
Management
Tools Compare, keystroke capture & playback,
regression testing
Education ∙Testing Methodology
∙Effective use of tools
∙Product knowledge
∙Business Release Strategy
Testing methodologies
Black box testing
White box testing
Incremental testing
Thread testing
• Black box testing
•No knowledge of internal design or code
required.
•Tests are based on requirements and
functionality
• White box testing
• Knowledge of the internal program design and code
required.
• Tests are based on coverage of code
statements,branches,paths,conditions.
BLACK BOX - TESTING TECHNIQUE
• Incorrect or missing functions
• Interface errors
• Errors in data structures or external database access
• Performance errors
• Initialization and termination errors
Black box / Functional testing
• Based on requirements and functionality
• Not based on any knowledge of internal
design or code
• Covers all combined parts of a system
• Tests are data driven
White box testing / Structural testing
• Based on knowledge of internal logic of an
application's code
• Based on coverage of code statements,
branches, paths, conditions
• Tests are logic driven
White Box - testing technique
• All independent paths within a module have been
exercised at least once
• Exercise all logical decisions on their true and false
sides
• Execute all loops at their boundaries and within their
operational bounds
• Exercise internal data structures to ensure their
validity
Functional testing
• Black box type testing geared to functional requirements of
an application.
• Done by testers.
System testing
• Black box type testing that is based on overall requirements
specifications; covering all combined parts of the system.
End-to-end testing
• Similar to system testing; involves testing of a complete
application environment in a situation that mimics real-world
use.
Sanity testing
•Initial effort to determine if a new software
version is performing well enough to accept
it for a major testing effort.
Regression testing
•Re-testing after fixes or modifications of the
software or its environment.
Major Testing Types
Stress / Load Testing
Performance Testing
Recovery Testing
Conversion Testing
Usability Testing
Configuration Testing
Stress / Load Test: Evaluates a system or component at
or beyond the limits of its specified requirements.
• Determines the load under which it fails and
how.
Performance Test: Evaluate the compliance of a
system or component with specified
performance requirements.
•Often performed using an automated test
tool to simulate large number of users.
Recovery Test: Confirms that the system recovers
from expected or unexpected events without loss of
data or functionality.
Eg. Shortage of disk space, Unexpected loss of communication,
Power out conditions
Conversion Test: Testing of code that is used to convert data from
existing systems for use in the newly replaced systems
Usability Test: Testing the system for the users to learn and use
the product.
Configuration Test
•Examines an application's requirements for
pre-existing software, initial states and
configuration in order to maintain proper
functionality.
Case Study
• A city hospital is developing a Hospital Appointment Booking System (HABS)
to simplify the process of booking and managing patient appointments. The
system will allow patients to register online, search for available doctors by
specialty and time slot, and book appointments. Once an appointment is
booked, patients should receive SMS and email confirmations. The system
will also let doctors view, update, or cancel their schedules and hospital staff
manage appointment slots, doctor profiles, and patient queries.
The hospital requires the system to be highly secure, as it will store sensitive
medical and personal data. It should be accessible via mobile and desktop,
support real-time booking updates, and be usable by staff with basic computer
skills. The system must ensure data encryption, fast response time, and system
recovery in case of failure. It should be built using Laravel (PHP) for the
backend, [Link] for the frontend, and a MySQL database, hosted on a secure,
HIPAA-compliant server.
Category Requirement
Functional Requirements
- Patient registration, login, profile update- Role-based login for
User Management
doctors and staff- Password reset
- Search doctors by specialty and availability- Book, reschedule,
Appointment Management
cancel, view appointments- Real-time slot updates
Doctor Features - Set and manage availability- View and update appointment status
- Manage doctor profiles and schedules- Oversee appointments-
Staff/Admin Features
Respond to queries- Generate reports
Notifications - SMS and email confirmations- Optional reminders
Non-Functional Requirements
- HTTPS, encryption at rest- Role-based access control- 2FA for
Security
doctors/staff- Audit logging
Usability - Mobile and desktop accessibility- Simple UI for basic users
Performance - <2s response time- Real-time updates
Reliability & Availability - Data backup and recovery- 99.9% uptime
Compliance - HIPAA-compliant infrastructure and data handling
Scalability & Maintainability - Modular, API-first design<br