
Unit Testing: Who Should Perform It, QA or Developers?
Unit testing should be performed by developers because they write the code and understand its internals. When QA handles unit testing, it creates inefficiencies, threatens code design, and blurs ownership of quality
Why unit testing should be performed by developers
Design-driven testing: Developers align tests with code structure, reinforcing SOLID and modular design. If testers write unit tests, code design often lags .
Developer insight: They know internal logic, edge cases, and dependencies—information QA lacks .
Shift-left efficiency: Early-testing by developers catches issues fast, accelerating CI/CD without bogging down QA pipelines
Problems when QA tries unit testing
Misaligned focus and lower business value
QA specialists focus on integration, user workflows, and system behavior; unit tests are implementation-centric and low in business value for them
Design and ownership issues
Delegating unit tests to QA breaks the feedback loop between code and tests. Developers lose insight into code quality tradeoffs during design .
Overhead and duplication
QA writing unit tests duplicates effort, introduces maintenance costs, and shifts tests away from code ownership, leading to inefficiencies
What QA should focus on instead
Integration/end-to-end testing: Test interfaces, data flows, and UI/UX across components.
User-centered scenarios: Simulate real-world usage and edge-case behaviors, which unit tests can’t cover .
Performance and regression checks: Identify broader quality issues beyond developer scope.
Best practice collaboration
Developers own unit testing: They write and maintain tests during development.
QA complements with integration tests: Focus on black-box, system-wide behavior.
Shared visibility: Unit test results feed into CI; QA can reference but not maintain them.
Mutual learning: QA can help define quality scenarios and edge cases, feeding back into developer tests
Conclusion
🧑💻 Developers should own unit testing because they best understand the internal logic and structure of the code.
🔍 QA’s expertise lies in higher-level testing, such as integration, UI, performance, and end-to-end scenarios.
⚠️ Assigning unit tests to QA leads to design disconnect, duplicated effort, and blurred responsibility.
🚀 Unit testing by developers results in faster feedback, cleaner code, and safer refactoring.
🤝 Collaboration between developers and QA—not role confusion—produces the strongest software quality outcomes.
References
QA shouldn’t write unit tests—they miss the implementation perspective and add bureaucracy news.ycombinator.comsymphony.is
Unit testing is traditionally a developer responsibility
QA and dev testing have distinct focuses and complement each other BrowserStack
Collaboration between devs and QA on test scope boosts quality arXiv