Skip to content

Latest commit

 

History

History
112 lines (81 loc) · 8.31 KB

File metadata and controls

112 lines (81 loc) · 8.31 KB

Software Testing

Overview

Software testing is the systematic evaluation of software to identify defects, ensure quality, and verify that a system meets its specified requirements. It encompasses a wide range of techniques—from manual test case execution to automated testing frameworks—and plays a vital role in maintaining software reliability, performance, and security.


Status: 🟢 Core Topic

Who should learn this?
✅ Aspiring QA engineers and software testers
✅ Software developers writing unit/integration tests
✅ DevOps and CI/CD engineers
✅ Technical leads and product owners ensuring quality

Learning Objectives

  • Understand the purpose and importance of software testing
  • Learn types of testing: unit, integration, system, acceptance
  • Explore black-box vs white-box testing strategies
  • Develop test plans, cases, and traceability matrices
  • Implement automated testing using modern frameworks

Key Concepts

  • Test Levels: Unit testing, Integration testing, System testing, Acceptance testing
  • Testing Types: Manual, Automated, Regression, Performance, Security, Usability
  • Test Strategies: Black-box, White-box, Grey-box
  • Testing Artefacts: Test cases, test scripts, bug reports, test plans
  • Tools & Frameworks: JUnit, PyTest, Selenium, Postman, Jest, Cucumber, TestNG

📚 Books

Title Author(s) Level Description
Test Driven Development: By Example Kent Beck Beginner Canonical introduction to TDD; hands-on examples that shape your mindset for writing tests first.
Concise Guide to Software Testing Gerard O’Regan Beginner Undergraduate introduction to modern testing practices, terminology, and foundations.
Introduction to Software Quality Gerard O’Regan Beginner Quality-focused perspective including standards, metrics, and QA methodologies.
The Art of Unit Testing Roy Osherove Intermediate Classic guide to unit test design, dependency injection, and test doubles (C#-oriented but widely applicable).
Unit Testing: Principles, Practices, and Patterns Vladimir Khorikov Intermediate Modern, highly praised unit testing guide with theory and practice well balanced.
Lessons Learned in Software Testing Cem Kaner, James Bach, Bret Pettichord Intermediate Anecdotal, practitioner-based insights from decades of testing experience.
Exploratory Software Testing James Whittaker Intermediate Practical approach to heuristic and non-scripted exploratory testing.
Agile Testing Lisa Crispin, Janet Gregory Intermediate Dev/QA collaboration, automation, and testing strategies in agile environments.
Software Testing Techniques (2nd ed.) Boris Beizer Advanced Seminal textbook covering test types and strategies in academic depth.
Software Testing: Principles and Practices Srinivasan Desikan, Gopalaswamy Ramesh Advanced ISTQB-aligned, good coverage of techniques, tools, and management.
Continuous Testing for DevOps Professionals Eran Kinsbruner et al. Advanced Enterprise testing in CI/CD and DevOps pipelines with real-world tooling examples.
Effective Software Testing: 50 Specific Ways to Improve Elfriede Dustin Advanced Focused tips for coverage, automation, and test effectiveness across SDLC.
How Google Tests Software James Whittaker, Jason Arbon, Jeff Carollo Advanced Insight into test culture, infrastructure, and scale at Google.

🎓 Courses

📘 Beginner Level

Course Title Provider Level Description
Software Testing and Automation Specialization University of Minnesota (Coursera) Beginner Covers software testing lifecycle, automation tools, and hands-on project work.
Introduction to Software Testing Stanford Online Beginner Explores fundamentals of test case design, test strategies, and defects.
ISTQB Foundation Level Certification Training Udemy Beginner Structured prep for ISTQB FL exam. Theory-focused, useful for cert alignment.

📗 Intermediate Level

Course Title Provider Level Description
Software Testing NPTEL (IIT Kharagpur) Intermediate Covers test models, test coverage criteria, and test case generation.
Test Automation with Python: Selenium WebDriver Udemy Intermediate Web UI automation using Python and Selenium. Practical walkthroughs included.
Software Testing & Quality Assurance George Mason University Intermediate Covers structural, functional, mutation-based testing methods with academic rigour.
CS169.1x: Agile Development Using Rails UC Berkeley (edX) Intermediate Focuses on BDD, TDD, CI, and collaborative software practices.

📙 Advanced Level

Course Title Provider Level Description
Advanced Software Testing Techniques Pluralsight Advanced Includes advanced test design, mocks, and continuous testing integration.
Software Verification and Validation MIT OCW Advanced Formal V&V topics in safety-critical systems; useful in defence and aerospace.
Testing Reactive Systems (Video/Book) O'Reilly Advanced Targets concurrency, event streams, and state-based systems in modern architecture.
Software Construction (6.005 / 6.031) MIT OCW Advanced Emphasises correctness and testability; extensive unit testing and test-first design included.

🛠️ Hands-On Projects

  • Write unit tests for a basic calculator or CRUD app using pytest, JUnit, or NUnit
  • Automate end-to-end UI tests with Selenium or Playwright for a small web project
  • Perform exploratory testing on a bug-ridden legacy app and write a detailed defect report
  • Build a CI/CD pipeline using GitHub Actions or GitLab CI that runs test suites automatically

✅ Assessment

  • Can you differentiate between black-box and white-box testing?
  • Can you design test cases for a given module using boundary value analysis?
  • Are you comfortable automating a test suite using a modern testing framework?
  • Do you understand how testing integrates into CI/CD pipelines?

🔗 Next Steps