Manual Testing Tutorial
Chapter 3: Software Testing Life Cycle (STLC)
3.1 What is STLC?
The Software Testing Life Cycle (STLC) is a systematic process that defines testing activities to be performed during
each stage of software development. It ensures a thorough evaluation of the product's functionality, performance, and
reliability.
3.2 Phases of STLC
1. Requirement Analysis
o Purpose: Understand what needs to be tested.
o Activities:
Analyze requirements.
Identify testable features.
Check for testability of requirements.
o Deliverables: Requirements Traceability Matrix (RTM).
2. Test Planning
o Purpose: Plan the testing strategy and resources.
o Activities:
Create a test plan.
Estimate testing effort.
Identify tools, resources, and timelines.
o Deliverables: Test Plan Document.
3. Test Case Design
o Purpose: Create detailed test cases.
o Activities:
Write test cases based on requirements.
Review and optimize test cases.
o Deliverables: Test Cases and Test Data.
4. Environment Setup
o Purpose: Prepare the test environment.
o Activities:
Set up hardware, software, and network configurations.
Verify the test environment with a smoke test.
o Deliverables: Test Environment Setup Checklist.
5. Test Execution
o Purpose: Execute the test cases.
o Activities:
Execute test cases manually or using tools.
Log defects and retest after fixes.
o Deliverables: Test Execution Reports and Defect Logs.
6. Test Closure
o Purpose: Conclude testing activities.
o Activities:
Document lessons learned.
Archive test artifacts.
Prepare a test summary report.
o Deliverables: Test Closure Report.
3.3 Entry and Exit Criteria
Entry Criteria:
o Test plan is approved.
o Test environment is ready.
o Test cases are prepared.
Exit Criteria:
o All planned tests are executed.
o Defects are fixed and retested.
o Test summary report is created.
3.4 Diagrams: STLC Workflow
plaintext
Copy code
Requirement Analysis
Test Planning
↓
Test Case Design
Environment Setup
Test Execution
Test Closure
3.5 Real-Time Example: Testing a Social Media Application
1. Requirement Analysis:
o Features: Post creation, liking posts, and messaging.
o Testable Requirements: Character limit for posts, notification on likes, etc.
2. Test Planning:
o Define scope: Testing the messaging feature in this release.
o Plan tools: Use JIRA for defect tracking.
3. Test Case Design:
o Test Case 1: Validate successful message delivery.
o Test Case 2: Verify error on exceeding the message length
4. Test Execution:
o Test Case 1: Validate successful message delivery.
Steps:
Log into the app with valid credentials.
Navigate to the chat feature and select a contact.
Send a text message "Hello."
Verify the message appears in the conversation.
Expected Result: The message "Hello" is displayed in the chat and marked as delivered.
o Test Case 2: Verify error on exceeding the message length.
Steps:
Log into the app.
Navigate to the chat feature and select a contact.
Attempt to send a message exceeding 200 characters.
Verify an error message appears.
Expected Result: The system displays "Message length exceeded" and prevents the message
from being sent.
5. Test Closure:
Activities:
o Document all executed test cases.
o Log any defects, such as:
Notification delay in message delivery.
Error message for long messages appearing in an unexpected format.
o Prepare a Test Summary Report, including:
Total test cases executed: 20.
Passed test cases: 18.
Failed test cases: 2.
Defects logged: 2.
o Deliverables:
Test Summary Report
Lessons Learned Document:
The chat feature needs optimization for long messages.
Notifications should sync faster with server responses.
3.6 Key Deliverables of STLC
1. Requirements Traceability Matrix (RTM): Maps test cases to requirements.
2. Test Plan Document: Outlines testing strategy, scope, and schedules.
3. Test Cases: Detailed steps and expected results for test scenarios.
4. Defect Logs: Records of identified defects, severity, and status.
5. Test Summary Report: Overview of testing activities, results, and key metrics.
Chapter 4: Types of Testing
4.1 What Are the Types of Testing?
In software testing, various types of testing are used to validate different aspects of a software product. These can be
broadly categorized into Functional and Non-Functional testing, but there are also specialized types based on specific
goals, such as exploratory testing and regression testing.
4.2 Functional Testing
Functional testing validates the functionality of a software application by checking whether it behaves as expected.
These tests are usually based on requirements and specifications.
Types of Functional Testing:
o Unit Testing: Tests individual components or functions of the software.
Example: Testing a login function to verify the correct username and password handling.
o Integration Testing: Ensures that different modules or components of the software work together.
Example: Testing the interaction between a payment gateway and the shopping cart in an e-
commerce application.
o System Testing: Tests the entire system as a whole to ensure it works as expected.
Example: Testing a fully developed e-commerce website, including login, shopping, and
checkout functionality.
o Acceptance Testing: Verifies if the software meets the business requirements and is ready for
deployment.
Example: Testing an online banking system to ensure it meets regulatory requirements and
user expectations.
4.3 Non-Functional Testing
Non-functional testing focuses on non-functional aspects of the software, such as performance, usability, and security.
Types of Non-Functional Testing:
o Performance Testing: Assesses how well the software performs under load and stress.
Example: Load testing an e-commerce website to see how many users it can handle
simultaneously.
o Usability Testing: Evaluates how user-friendly and intuitive the software is.
Example: Testing the navigation and layout of a mobile app to ensure a seamless user
experience.
o Security Testing: Ensures that the software is secure from vulnerabilities and cyber-attacks.
Example: Penetration testing an online banking application to check for security flaws.
o Compatibility Testing: Verifies that the software works across different environments, devices, and
browsers.
Example: Testing a website on various browsers like Chrome, Firefox, and Safari to ensure
cross-browser compatibility.
4.4 Specialized Testing Types
These are testing types performed in specific scenarios or to uncover particular issues.
1. Exploratory Testing:
o The tester explores the application without predefined test cases to find potential issues.
o Example: Manually testing an e-commerce website's checkout process by trying different
combinations of payment methods and discounts.
2. Regression Testing:
o Ensures that new changes or updates do not break or negatively impact existing features.
o Example: After adding a new product page, testing the existing checkout and search functionalities to
make sure they still work properly.
3. Smoke Testing:
o A preliminary test to check whether the basic functions of the application work.
o Example: After a new build, testing if users can log in and access the main page of the application.
4. Sanity Testing:
o Focuses on verifying whether a specific bug has been fixed or if a small change works as expected.
o Example: After fixing a bug where a user couldn't add items to their cart, testing this specific
functionality.
5. Ad-hoc Testing:
o Unscripted testing performed to find unexpected defects without following any formal testing process.
o Example: Randomly clicking on different features of an app to see if any unexpected crashes occur.
4.5 Diagram: Types of Testing
Types of Testing
/ \
Functional Testing Non-Functional Testing
/ | | \ / | | \
Unit Integration System Acceptance | Performance Usability Security
4.6 Real-Time Examples of Functional Testing
1. Functional Testing of a Login Page:
o Scenario: A user attempts to log in using a valid username and password.
o Steps:
1. Enter valid credentials.
2. Click on "Login".
o Expected Result: The user should be directed to the homepage.
o Bug Example: Incorrect password handling could result in a login failure.
2. Functional Testing of a Shopping Cart:
o Scenario: A user adds items to the shopping cart.
o Steps:
1. Select a product and add it to the cart.
2. Go to the cart page and verify the product is listed.
o Expected Result: The correct product, quantity, and price should be displayed in the cart.
o Bug Example: The cart shows the wrong price or an empty cart after adding products.
4.7 Real-Time Examples of Non-Functional Testing
1. Performance Testing for a Web Application:
o Scenario: Test how the website performs under load.
o Steps:
1. Simulate multiple users accessing the website simultaneously.
o Expected Result: The website should respond to all users without crashing.
o Bug Example: The website becomes slow or crashes under heavy traffic.
2. Usability Testing for a Mobile App:
o Scenario: Test the ease of use and user-friendliness of an app.
o Steps:
1. Have users navigate through the app, completing common tasks.
o Expected Result: The app should be intuitive, with easy navigation and minimal friction.
o Bug Example: Users have difficulty finding the settings menu or navigating between screens.
4.8 Key Considerations in Testing Types
Functional Testing is typically prioritized during the initial stages of development, while Non-Functional Testing
is done later to ensure overall performance.
Specialized testing types like Exploratory and Ad-hoc are used for finding defects that are not easily identified
through standard testing procedures.