Software Testing
Fundamentals
Definition and Objective of Testing:
• Software Testing is the process of evaluating a software application to ensure that
it meets the specified requirements and is free of defects.
• Testing involves verifying and validating that a system works as intended, matches
user expectations, and performs reliably.
Main objectives of testing:
• Detect errors and bugs early (before release).
• Validate that the software meets requirements and performs as expected.
• Prevent future defects by learning from current bugs.
• Deliver a user-friendly, stable product.
• Reduce maintenance costs by minimizing issues post-release.
Role of Testing and Its Effects on Quality:
Testing is vital for quality assurance: It helps catch defects and ensures the
reliability, security, and performance of the software before it reaches users.
Benefits on product quality:
• Prevents costly failures: Early detection means less time and money spent on fixes
later.
• Improves user satisfaction by ensuring the software meets needs and functions
well.
• Enhances market competitiveness: High-quality, bug-free software has a better
reputation and retains more users.
• Reduces risks: Thoroughly tested software less likely contains security
vulnerabilities or compliance issues
Introduction to Test Case Design:
Test case design is the activity of creating a set of well-structured steps to verify that
specific features and functionalities of software work as intended.
Steps in Test Case Design:
• Understand Requirements: Analyze specifications, user stories, or use cases.
• Identify Test Scenarios: Determine what needs to be tested.
• Write Test Cases: Specify steps, data, and expected outcomes.
• Organize and Document: Ensure each test case is clearly described for repeatability
and review.
Common Techniques:
Equivalence Partitioning: Divide input data into valid and invalid clusters
(partitions).
Boundary Value Analysis: Focus on values at the edges of valid ranges.
Decision Table, State Transition, and Use Case Testing: Analyze logic, state
behavior, or workflows.
Decision Table
How to Identify Errors and Bugs in an Application:
Manual Testing: Testers interact with the application and check if functions work by
following documented steps.
Automated Testing Tools: Use automated scripts to execute repetitive tests quickly.
Exploratory Testing: Testers try to “break” the application by exploring unexpected
paths or combinations, beyond scripted tests.
Code Review & Static Analysis: Developers and automated tools check the code for
common errors, code smells, and adherence to standards.
User Feedback: Collecting issues reported by real users can reveal bugs missed
during other testing activities.
Regression Testing: Repeating existing tests after changes to ensure nothing is
broken
Designing Entry and Exit Criteria for Test Cases:
Entry and Exit Criteria are conditions that must be fulfilled before starting and after
finishing a testing phase.
Entry Criteria Examples
• Approved test plan and clear, testable requirements are available.
• Test environment is ready (all necessary tools, data, and systems are set up).
• All critical defects from previous cycles are fixed.
Exit Criteria Examples
• All planned test cases are executed and results documented.
• All high-severity or critical defects have been fixed or deferred with approval.
• Requirement coverage is verified through a traceability matrix.
• Stakeholders approve results; test documents are finalized.
Designing Test Cases in Excel:
You can use Excel to record and track test cases for easy management and sharing. A
typical test case table in Excel:
Features of a Testing Method Used (Example: Boundary Value Analysis):
• Boundary Value Analysis (BVA) is a popular testing method.
• Used to identify errors by focusing on edge input values, where bugs often occur.
How it works:
Test minimum, just-above-minimum, maximum, just-below-maximum, and “normal”
values.
Advantages:
Catches errors in handling of input boundaries.
Reduces number of required test cases while maximizing coverage.
Example:
If allowed age input is 18 to 65, test values: 17 (invalid), 18 (lower boundary), 19 (just
above), 64 (just below upper limit), 65 (upper boundary), 66 (invalid).
Summary Table: Sample Test Case Design Fields