- Published on
Software Tester
- Authors
- Name
- Loc Truong
Basic of Software Testing
1. Understand Purpose of Testing
- Ensures software meets requirements.
- Detects defects early to reduce costs.
- Improves software reliability and performance.
2. Principles of Software Testing
- Testing shows defects, not absence of defects.
- Exhaustive testing is impossible.
- Early testing saves time and cost.
- Defects tend to cluster.
- Pesticide paradox: Repeating same tests won't find new bugs.
- Testing is context-dependent.
- Absence-of-errors fallacy: A bug-free product may still fail.
3. Difference between Error, Fault and Failure
- Error: Mistake made by a developer.
- Fault (Bug): Defect in code.
- Failure: When a fault is executed, causing incorrect behavior.
4. White Box and Black Box Testing
- White Box: Internal logic and structure testing (unit testing, code coverage).
- Black Box: Testing without knowing internal structure (functional testing).
5. Levels of Testing
- Unit Testing: Tests individual components.
- Integration Testing: Ensures different parts work together.
- System Testing: Tests entire system against requirements.
- Acceptance Testing: Verifies if software meets business needs.
6. Software Development Life Cycle (SDLC)
- Phases: Requirement Analysis -> Design -> Implementation -> Testing -> Development -> Maintainance.
- Models: Waterfall, Agile, V-Model, Spiral.
Testing Design Techniques
1. Use Case Testing
- Tests real-world user scanarios.
- Ensures business processes function as expected.
2. Decision Table Testing
- Uses tables to define different input conditions and expected outputs.
3. State Transition Testing
- Evaluates how a system behaves when it changes states.
- Useful for workflows, login/logout, etc.
4. Boundary Value Analysis
- Tests values at boundaries (e.g., min/max).
- Example: If input range is 1-100, test 0, 1, 100, 101.
5. Equivalence Partioning
- Divides input data into valid/invalid groups.
- Reduces test cases while ensuring coverage.
6. Error Guessing
- Uses experience to predict potential errors.
- Example: Entering special characters in a name field.
Types of Software Testing
1. Functional Testing
- Verifies specific software functions.
- Example: Login, payment processing, form submission.
2. Non-Functional Testing
- Tests performance, usability, security, etc.
3. Regresstion Testing
- Ensures new changes don't break existing features.
4. Smoke Testing
- Initial test to check if major features work.
5. Load Testing
- Assesses system performance under expected load.
6. Performance Testing
- Evaluates speed, stability, and scalability.
Automated Testing
1. Introduction to Automation Testing
- Uses tools/scripts to execute test cases.
- Reduces manual effort and increases efficiency.
2. Choosing the Right tools for Automation Testing
- Selenium, JUnit, TestNG, Cypress, Playwright, etc.
3. Planning, Design and Development
- Define automation scope, design test scripts, and set up frameworks.
4. Test Execution and Management
- Running scripts, managing results, handling failures.
5. Debugging
- Identifying and fixing issues in automation scripts.
Test Management
1. Concept and Test Planning
- Defines testing scope, objectives, schedule, and resources.
2. Configuring and Using Test Management Tools
- JIRA, TestRail, Zephyr, HP ALM, etc.
3. Test Monitoring and Control
- Tracking test progress and adjusting strategies.
4. Test Estimation
- Predicting time, effort and cost for testing
5. Risk Management in Testing
- Identifying risks, assessing impact, and mitigation strategies.
6. Reporting Test Status
- Test reports, defect reports, dashboards.
Manual Testing
1. Introduction to Manual Testing
- Testing without automation tools.
2. Types of Manual Testing
- Exploratory, Usability, Ad hoc, Accessibility.
3. Bug Life Cycle
- New -> Open -> Assigned -> Fixed -> Retested -> Verified -> Closed.
4. Bug Reporting Tools
- JIRA, Bugzilla, Redmine, Mantis.
5. Test Case Development
- Writing detailed test cases with inputs, expected results, and steps.
6. Use of Excel in Manual Testing
- Documenting test cases, bug tracking, data storage.
Agile Testing
1. Principles of Agile Testing
- Testing integrated into development.
- Continuous feedback, fast iterations.
2. Agile Test Strategy
- Focuses on delivering working software quickly.
3. Agile Testing Quadrants
- Functional, Non-functional, Automation, Exploratory testing.
4. Role of a Tester in an Agile Team
- Works closely with developers, automates tests, writes test cases.
5. Testing Tools in Agile
- JIRA, Selenium, TestNG, Cucumber.
6. User Story Testing
- Verifying user stories meet acceptance criteria.
Security Testing
1. Security Testing Concepts
- Ensures application is secure from threats.
2. Common Security Vulnerabilities
- SQL Injection, XSS, CSRF, Broken Authentication.
3. Risk Assessment
- Identifying and prioritizing risks.
4. Security Testing Tools and Techniques
- OWASP ZAP, Burp Suite, Metasploit.
5. Penetration Testing
- Simulating attacks to find vulnerabilities.
6. Vulnerability Scanning
- Automated scanning tools to detect security issues.
Web Application Testing
1. Web Testing Strategies
- Ensuring UI/UX, performance, security and functionality.
2. Functional Web Testing
- Testing web page interactions, forms, authentication.
3. Performance Testing for Web Applications
- Load testing, stress testing.
4. Security Testing for Web Applications
- Testing for SQL Injection, XSS, CSRF, etc.
5. Load Testing for Web Applications
- Checking performance under high traffic.
6. Cross Browser Testing
- Ensuring compatibility across different browsers.
Mobile Application Testing
1. Mobile Application Testing Strategies
- Testing across different OS, screen sizes, network conditions.
2. Functional Testing for Mobile Applications
- Checking mobile-specific features like gestures, push notifications.
3. Performance Testing for Mobile Applications
- Evaluating speed, memory usage, battery consumption.
4. Security Testing for Mobile Applications
- Identifying security loopholes in mobile apps.
5. Device and Platform Testing
- Ensuring compatibility across various devices.
6. Usability Testing for Mobile Applications
- Checking user-friendliness, responsiveness.
API Testing
1. Introduction to APIs and API Testing
- Testing communication between software components.
2. REST and SOAP Web Services Testing
- Validating API requests, responses.
3. API Testing Tools
- Postman, SoapUI, JMeter.
4. Creating API Test Cases
- Writing test cases for status codes, authentication, response time.
5. Security Testing for APIs
- Checking for token validation, encryption, rate limiting.
6. Load Testing for APIs
- Simulating high traffic to assess performance.
DevOps and Testing
1. Understanding DevOps
- Collaboration between dev and ops teams.
2. Role of a Tester in DevOps
- Automating tests, integrating with CI/CD.
3. Continuous Testing
- Running tests in a continuous integration pipeline.
4. DevOps Testing Tools
- Jenkins, Docker, Kubernetes.
5. Quality Gates in DevOps
- Ensuring code meets predefined quality standards.
6. Performance Tuning in DevOps
- Optimizing application and infrastructure performance.