Software Testing Concepts
Software Testing
It is the process of checking Software Application meets the requirement and works as Expected.
Different Types of Software Testing
Functional Testing with Example
It checks whether a software Application works according to the requirements. It Verifies 'What the system does' and checks if the features are working correctly.
Example: Functional testing Checks
- User enters a valid Username and Password → Login should succeed
- User enters an invalid password → Error Message should be displayed
- User Clicks on "Forgot Password" Link → Password reset page should be opened
If all these functions works as Expected, the feature passes functional testing
a) Unit Testing
It is the process of testing the smallest part (unit) of a program, usually method or function to make sure it works correctly. It is done by developers.
Example: Add(5,3) = 8
b) Integration Testing
Individual modules are combined together and tested as a group to ensure that they work as expected.
Example Workflow:
- Login page
- User selects a product
- User Clicks "Add to Cart" – Product is added to cart
- Enter Shipping Address
- Checkout page
- Payment page
- Order Confirmation Page
c) System Testing
It tests the entire Application. It covers end-to-end functions of the system. Final Phase of testing before the product is released.
Regression Testing
Recent Code-changes haven't negatively impacted existed functionality. Software Continues to work as expected after bug-fixes.
UAT (User Acceptance Testing)
Final Phase of testing where actual users, clients or business representatives verify that the software meets the business requirements.
It is usually performed by:
- Business Users
- Clients / Customers
- Product Owners
- Business Analysts
Performance Testing
- It checks how fast, stable and responsive when an application works under different workloads.
- It checks whether application works smoothly when many users use the same application.
Load Testing
It is a type of performance testing and checks how an application behaves when an expected number of users or requests.
Stress Testing
- It is a type of performance testing and checks how an application behaves when a load goes beyond its expected capacity.
- It happens when the system is overloaded.
- The goal is to find the breaking point of application and see how it recovers.
Scalability Testing
It is a type of performance testing in which application is handled by increasing number of resources, users, transactions or data by adding more resources.
Example:
- When 1000 users uses an application – It works fine
- When 5000 users uses an application – It works fine
- When 10000 users uses an application – It still works fine
Stability Testing
It is a type of performance testing and checks whether an application can run continuously over long period of time without crashing, slowing down or showing errors.
Example: Video streaming application is expected to run 24/7.
Usability Testing
It is used to check whether the application is easy to use, understand and navigate to end users. It verifies user can use the application comfortably without any confusion.
Example:
- Open the website
- Search for mobile phone
- Add it to cart
- Complete the payment
- Can the user easily find the search box?
- Is the "Add to Cart" button easily visible?
- Is the Checkout process simple?
Compatibility Testing
It is used to check whether the application works correctly on different devices, browsers, OS, Networks and Screen Sizes.
Example: Verify that OK button works fine in Chrome but not in Safari. It is a compatibility issue.
Security Testing
It is the process of checking whether an application is protected from unauthorized access, data thefts and security threats.
End-to-End Testing
It is the process of testing a software application from start to finish. Entire Application is tested from start to finish.
Adhoc Testing
It is the process of testing where tester tests the application without following the predefined testcase or testscripts.
Exploratory Testing
Learns the application, designs the testcases and executes them at the same time without following any pre-defined testcase or testscripts.
Edge Case Testing
How an application behaves during the unusual condition of an input data.
Smoke Testing
Once we get a new build we will start testing all major functionalities are working fine.
Sanity Testing
Quick check performed after a bug fix or small change to verify that the specific functionality works correctly.
SIT Testing (System Integration Testing)
Performed to verify that different systems or applications work together correctly.
Example: Different systems involved are:
- E-commerce website
- Payment gateway
- Bank System
- Inventory System
- Email / SMS service
Defect Life Cycle
New → Assigned → Open → Fixed → Re-open → Verified → Closed
Defect Leakage
Defect Leakage happens when a bug is not found in testing and reaches the customer or production environment.
Defect Rate Metric
It is a metric that measures how many defects (bugs) are found in a software application during a specific period or relative to the size of a software.
Example:
50 defects are found during testing. Application has 100 features.
Defect Rate = 50 / 100 = 0.5 defects per feature.
Root Cause Analysis (RCA)
It is the process of finding the actual reason (root cause) of a defect instead of just fixing the defect.
Software Development Life Cycle (SDLC)
SDLC in Testing refers to how testing activities are integrated into each phase of software development to ensure quality.
| SDLC Phase | Testing Activities |
|---|---|
| 1. Requirement Analysis | Testers review requirements, identify testable requirements, and prepare the Requirement Traceability Matrix (RTM). |
| 2. Planning | Create the test plan, estimate effort, define test strategy, identify tools and resources. |
| 3. Design | Review system design, prepare test scenarios, test cases, and test data. |
| 4. Development (Coding) | Developers perform unit testing. Testers may prepare automation scripts and review test cases. |
| 5. Testing | Execute test cases, report defects, perform regression testing, retesting, system testing, integration testing, and user acceptance support. |
| 6. Deployment | Perform smoke testing and verify the application in the production environment. |
| 7. Maintenance | Conduct maintenance testing, regression testing for updates, and verify bug fixes. |
Software Testing Life Cycle (STLC)
STLC is a systematic process followed by the testing team to ensure that software meets the required quality standards.
| Phase | Description |
|---|---|
| 1. Requirement Analysis | Understand and analyze the requirements. Identify which requirements are testable. Identify testing scope and risks. |
| 2. Test Planning | Prepare the Test Plan. Decide testing types, tools, resources, timelines, and effort. Define roles and responsibilities. |
| 3. Test Case Development | Create test scenarios and test cases. Prepare test data. Review and update test cases. |
| 4. Test Environment Setup | Set up the hardware, software, database, servers, and required tools. Verify that the environment is ready for testing. |
| 5. Test Execution | Execute test cases. Compare actual results with expected results. Report defects in a defect-tracking tool. Perform retesting and regression testing. |
| 6. Test Closure | Verify that testing objectives have been met. Prepare the Test Closure Report. Analyze test metrics and lessons learned. Document final test results. |
Scenario
- High-Level description of functionality feature to be tested is Scenario.
- Generally derived from User stories.
- It focuses on What to test, how to test.
Example:
Verify that the user can login successfully.
Test Case
Test case is a set of steps, inputs, Execution condition and Expected Results designed to verify a particular functionality. It includes Test Case ID, Test Description, Pre-conditions, Test Steps, Input Data, Actual Result, Expected Result, Status and Comments.
Pre-condition in Test Case
- It is something that must be true before executing a test case.
- It is the setup or environment needed before testing can start.
Example: Login Functionality
Test Case: Verify login with valid credentials.
Pre-condition:
- Application is installed and running.
- The User account already exists.
- User is on the login page.
Test Plan
- It is a document that describes What to test, When to test and Who will test it.
- It includes project, scope, objectives, Test-types, Resources, schedule, Tools, Risks.
Test Strategy
- High Level document that explains how testing will be performed for a project.
- It defines the Overall methods, approach & testing types to be used.
RTM (Requirement Traceability Matrix)
- Used in the development of software application to trace the requirements proposed by the client to the system being built.
- It is prepared before the test case execution to make sure all the requirements are covered in the test case.
Why RTM is Used?
- It ensures all requirements are tested.
- Identifies missing test cases.
Agile Methodology
It is a way of developing software in small, manageable parts (sprints) with continuous feedback from the customer. Instead of building the entire product at once, Agile builds it step-by-step, tests it and delivers it frequently.
Agile Testing Lifecycle
- Requirement Analysis
- Test Planning
- Test Case Design
- Test Execution
- Defect Reporting and Tracking
- Regression Testing
- Sprint Review and Retrospective
Popular Agile Frameworks
- Scrum
- Kanban
- Extreme Programming (XP)
- Lean Software Development
Challenges of Agile Testing
- Frequent requirement changes
- Limited documentation
- Tight sprint timelines
- Requires skilled and collaborative teams
- Continuous regression testing can be demanding
Waterfall Model
- Linear & Sequential Phases (Planning, Design, Implementation, Testing, Deployment) completed in Order
- SDLC is followed
- The Waterfall Model is a sequential software development methodology where each phase is completed before the next phase begins. In testing, the testing phase generally starts after development is completed.
Conclusion
Software testing is an essential part of software development that ensures a product is reliable, secure, efficient, and meets user requirements. It helps identify defects early, improves software quality, reduces development costs, and increases customer satisfaction. Whether using the Waterfall model, Agile methodology, or other approaches, effective testing plays a crucial role in delivering high-quality software.
Affordable Courses
& Learning Opportunities
Learn Full Stack Java, Python, Web Development, Mobile App Development, Data Science, UI/UX Design, Database Programming, and Digital Marketing with practical training, internship, and placement support.
