What Is QA Testing? Software Quality Assurance Explained: Types, Process and Tools

On this page
QA testing (quality assurance testing) is the work of checking that software does what it should, for real users, before and after it is released. Testers plan what to check, run manual and automated tests, report bugs and confirm the fixes. "QA" itself is wider than testing: it covers the processes that stop bugs from being made in the first place, while testing finds the bugs that slipped through.
QA testing at a glance
| Question | Short answer |
|---|---|
| What does QA stand for? | Quality Assurance |
| Goal | Release software that works, is secure, fast enough and easy to use |
| Who does it | QA engineers/testers, developers (unit tests), product owners and users (acceptance tests) |
| When | From the requirements stage to after release ("shift left" and "shift right") |
| How | Manual testing plus automated tests that run on every code change (CI/CD) |
| Common tools | Playwright, Selenium, Cypress, Appium, Postman, JMeter/k6, Jira, TestRail |
QA vs QC vs testing
| Quality assurance (QA) | Quality control (QC) | Testing | |
|---|---|---|---|
| Focus | The process | The product | The software's behavior |
| Aim | Prevent defects | Detect defects before release | Find defects by running the software |
| Examples | Coding standards, code reviews, test strategy, definition of done | Release checks, inspections, sign-off | Running test cases, automated suites, exploratory sessions |
| Relationship | The umbrella | Part of QA | The main QC activity |
In job titles and everyday use, "QA testing" usually means the testing work done by a QA team, which is how we use it below.
Types of QA testing
By method
- Manual testing: a person uses the software like a user would. Best for new features, usability and exploratory testing (unscripted hunting for bugs).
- Automated testing: scripts check the software automatically on every change. Best for repetitive checks such as regression tests.
By level
| Level | What is tested | Usually written by |
|---|---|---|
| Unit testing | One function or class in isolation | Developers |
| Integration testing | Modules or services working together (APIs, databases) | Developers and QA |
| System / end-to-end testing | The whole app from the user's point of view | QA |
| Acceptance testing (UAT) | Does it meet the business need? | Product owners, clients, users |
Functional and non-functional
| Type | Checks | Example |
|---|---|---|
| Functional | Features work as specified | Login accepts a correct password and rejects a wrong one |
| Smoke testing | The build's critical paths work at all | App opens, user can log in and reach the home screen (see smoke testing explained) |
| Regression testing | Old features still work after a change | Checkout still works after the payment page was redesigned |
| Performance / load testing | Speed and stability under load | Site stays under 2 s with 5,000 users at once |
| Security testing | Weaknesses attackers could use | SQL injection, broken access control (see penetration testing) |
| Usability testing | How easy it is to use | New users can finish sign-up without help |
| Accessibility testing | Works for people with disabilities | Screen reader labels, keyboard navigation, contrast (WCAG) |
| Compatibility testing | Different browsers, devices, OS versions | Works in Chrome, Safari, Firefox, on Android and iPhone |
| Alpha / beta testing | Real use before full release | Internal staff (alpha), a group of real users (beta) |
The QA testing process step by step
- Review the requirements and spot unclear or risky parts early. Fixing a misunderstanding here is far cheaper than fixing code later.
- Write a test plan: what will be tested, how (manual/automated), on which devices, and what "done" means.
- Design test cases and test data, including edge cases (empty fields, very long input, wrong formats, slow network).
- Set up the test environment that mirrors production as closely as possible.
- Run the tests: automated suites in the CI pipeline on every change, plus manual and exploratory sessions on new features.
- Report bugs with steps to reproduce, expected vs actual result, screenshots/logs and severity.
- Retest the fixes and run regression tests so a fix didn't break something else.
- Release decision and monitoring: agree the release is good enough, then watch error logs and user feedback after launch and turn real problems into new tests.
Popular QA testing tools (2026)
| Area | Tools |
|---|---|
| Web UI automation | Playwright, Selenium, Cypress |
| Mobile apps | Appium, Espresso (Android), XCUITest (iOS) |
| API testing | Postman, REST Assured, Bruno |
| Performance | JMeter, k6, Gatling |
| Unit testing | JUnit, pytest, Jest, NUnit |
| Cross-browser / device clouds | BrowserStack, Sauce Labs, LambdaTest |
| Test and bug management | Jira, TestRail, Zephyr, Qase |
| CI/CD (runs tests automatically) | GitHub Actions, GitLab CI, Jenkins |
How AI is changing QA testing
AI coding assistants now help testers write test cases and automation scripts from plain-English descriptions, suggest edge cases, and "self-heal" UI tests when a button's position or name changes. Agent tools can explore an app and report what breaks. They save time on repetitive work, but people still decide what matters to test, judge usability, and check that AI-written tests actually test the right thing (see Codex vs Claude Code for two popular coding agents).
QA tester vs QA analyst vs QA engineer
| Role | Main work |
|---|---|
| QA tester | Runs manual tests, reports bugs, retests fixes |
| QA analyst | Studies requirements and risks, designs test cases and test plans |
| QA automation engineer / SDET | Writes and maintains automated test code and CI pipelines |
| QA lead / manager | Owns the test strategy, quality metrics and release sign-off |
Is QA testing a good career?
Yes, especially on the automation side. Pure manual roles are fewer than they were, but demand for people who can code tests, test APIs, work in CI/CD and judge quality with AI tools remains strong. A common path: learn testing basics (the ISTQB Foundation syllabus is a good free outline), then a programming language (JavaScript/TypeScript, Python or Java), then Playwright or Selenium, API testing and Git.
FAQ
Is QA testing hard to learn?
Manual testing basics can be learned in weeks; automation takes a few months of regular coding practice.
What is the difference between QA testing and UAT?
QA testing is done by the delivery team to check the software works. UAT (user acceptance testing) is done by the client or users to confirm it meets their needs before they accept it.
Can QA testing be fully automated?
No. Automation is great for repeatable checks, but exploratory, usability and accessibility testing still need people.
What is a bug report?
A written description of a defect: title, steps to reproduce, expected and actual result, environment (device, browser, version), severity and evidence such as screenshots or logs.