Software Testing Fundamentals

Types of Software Testing: Beginner Guide

Learn the main types of software testing, including functional, regression, smoke, exploratory, API, accessibility, performance, and security testing.

Types of software testing are different ways to investigate product risk. Some check whether a feature follows its business rules. Others check how connected services exchange data, whether a change damaged existing behavior, whether people can use the interface, or how the system behaves under load and attack.

This guide is for beginners who need a practical map, not a dictionary of labels. You will learn how common testing types overlap, which question each one answers, how several types apply to one checkout flow, and how to choose useful coverage when time is limited.

The Short Answer

There is no single perfect list of software testing types because the terms describe different dimensions:

  • Purpose: functional, accessibility, performance, or security testing.
  • Execution: manual or automated testing.
  • Working style: scripted or exploratory testing.
  • System layer: user interface, API, integration, or data testing.
  • Scope: component, integration, system, end-to-end, or acceptance testing.
  • Release moment: smoke testing on a build, feature testing before release, retesting a fix, or regression testing after change.

One test can belong to several categories. An automated API check that confirms a customer cannot read another customer's order is functional, API-level, security-relevant, and part of regression coverage. Labels help a team discuss purpose and scope. They should not replace the question, "Which risk are we trying to investigate?"

A Big-Picture Framework

Functional vs non-functional testing

Functional testing asks whether software follows its rules. Examples include a valid login opening the correct dashboard, an expired coupon being rejected, or a viewer being unable to delete a record.

Non-functional testing asks how well the product behaves under important conditions. It includes performance, accessibility, usability, reliability, compatibility, and many security concerns. The boundary is not always perfect. Authorization is a functional business rule and also a security concern.

Manual vs automated testing

Manual testing is performed and evaluated by a person. Automation uses code or tools to repeat predefined checks. Either approach can test a user interface, API, or data rule. Manual work is valuable for learning, exploration, and human observation. Automation is valuable for stable checks that must run often. The manual versus automation beginner guide explains how to choose between them.

Scripted vs exploratory testing

Scripted testing follows defined steps and expected results. Exploratory testing combines learning, design, and execution as the tester responds to evidence. Strong teams use both. A checkout tax calculation may need exact scripted cases, while a new checkout design benefits from exploration around interruptions, confusing feedback, and unexpected state.

UI vs API vs data testing

  • UI testing evaluates what a user can see and operate.
  • API testing sends requests directly to a service and validates responses, rules, permissions, and side effects.
  • Data testing inspects whether intended records, relationships, calculations, and state changes are correct.

The same defect can look different at each layer. A profile page may show an old display name even though the API and database contain the new value. That evidence points toward a presentation or caching issue without proving the exact code-level cause.

Pre-release, retesting, and regression

Testing before release evaluates new behavior and release risk. Retesting repeats a reported failure to see whether its fix works. Regression testing checks whether a change damaged related or critical behavior that worked before. These activities can be manual, automated, or a mixture.

How to Choose a Testing Type

Start with the risk, then select the type, layer, data, and execution method that produce trustworthy evidence.

Risk questionUseful starting type or layerWhy
Does the promotion calculate correctly?Functional testing at API and UI layersConfirms the rule and what the customer sees
Can one user open another user's order?Authorization checks at API and UI layersTests access control where it should be enforced
Did the promotion fix break normal checkout?Retesting plus focused regressionVerifies the repair and nearby workflows
Can a keyboard user complete checkout?Accessibility testingEvaluates operation, focus, labels, errors, and status
Does checkout remain responsive at expected traffic?Performance testingMeasures defined behavior under a workload
Does the build support deeper testing?Smoke testingQuickly protects test time from an unusable build
What unexpected risks appear in a new design?Exploratory testingLets the tester learn and adapt in real time
Do order, payment, and inventory agree?Integration and data testingChecks boundaries and state across connected systems

Do not choose a type only because a tool supports it or an interview list mentions it. State the question, expected evidence, and decision that the test supports.

Core Software Testing Types

Functional testing

Functional testing checks whether a feature follows its specified business behavior. It covers successful actions, validation, boundaries, roles, states, calculations, and error handling.

For login, functional checks may cover valid credentials, wrong credentials, locked accounts, logout, session expiration, and protected routes. The common mistake is checking only the happy path or accepting a vague expected result such as "login works."

Use functional testing whenever product rules matter. That includes UI, API, integration, and sometimes database checks.

Manual testing

Manual testing means a person performs and evaluates the main test actions. It works especially well for new features, ambiguous requirements, exploratory investigation, usability, visual behavior, accessibility observations, and one-time checks.

A tester manually exploring search might vary terms, filters, sorting, pagination, refresh, browser history, and viewport while adapting to each observation. The common mistake is confusing manual testing with random clicking. A useful manual session still has a mission, controlled data, notes, and a conclusion. Follow the manual testing tutorial for a full workflow.

Smoke testing

Smoke testing is a small, fast set of checks that determines whether a build is stable enough for deeper testing. A store smoke set might confirm that the application loads, a synthetic user can sign in, products appear, an item reaches the cart, and checkout opens.

The common mistake is treating a passed smoke suite as complete release evidence. Smoke coverage is intentionally shallow. Use it after a deployment, build, configuration change, or environment recovery to protect deeper test effort.

Regression testing

Regression testing checks whether a change caused existing behavior to fail. Scope should follow the changed components, integrations, critical journeys, defect history, and impact.

After changing discount logic, focused regression might cover valid and invalid codes, code removal, quantity changes, taxes, order review, payment, and stored totals. The common mistakes are rerunning everything without thought or checking only the repaired scenario. Stable high-value regression is often a good automation candidate.

Retesting

Retesting, sometimes called confirmation testing, verifies that a specific defect was fixed. Recreate the original environment, data state, actions, and expected result when possible.

If a locked account reached the dashboard, retest the locked account with the same credentials and build. Then add regression around active login, invalid attempts, lock threshold, logout, and protected routes. The common mistake is saying a bug is fixed after testing a nearby case instead of the original failure.

Exploratory testing

Exploratory testing combines learning, test design, and execution. A tester works from a mission or charter, time-boxes the session, records observations, and chooses each next action based on what was learned.

Example charter:

Explore cart persistence across refresh, sign-in, sign-out, two tabs, quantity changes, and session expiration for 30 minutes. Focus on lost items, stale totals, and conflicting state.

The common mistake is performing undocumented random actions. Use exploratory testing when behavior is new, complex, unclear, user-centered, or likely to contain interactions that scripted cases miss.

Integration testing

Integration testing checks whether connected components or services work together. A successful payment response may need to create one order, reduce inventory, and trigger a confirmation message. Each component could work alone while their connection fails.

Common mistakes include checking only the final screen and ignoring asynchronous timing, error recovery, duplicate messages, or partial state. Use integration tests at service boundaries, database connections, message queues, identity providers, payment systems, and other dependencies.

System and end-to-end testing

System testing evaluates the complete integrated application against requirements. End-to-end testing follows a representative journey across its real boundaries, such as sign in, add an item, apply a promotion, submit an approved test payment, see confirmation, and inspect order history.

These tests give valuable journey confidence but are slower and more fragile than focused lower-layer checks. The common mistake is forcing every rule through the full UI. Use a small number for critical journeys, while testing most validation and combinations closer to the service or component that owns them.

User acceptance testing

User acceptance testing, often called UAT, checks whether the solution meets business and user needs and is acceptable for its intended use. A product owner or knowledgeable business user may confirm that a promotion follows campaign rules and that operations staff can reconcile the resulting order.

UAT is not a substitute for QA feature testing. The common mistake is asking business users to discover basic defects without clear scenarios, data, or decision criteria. Use UAT when knowledgeable stakeholders must validate fitness for business use.

API testing

API testing sends requests directly to services and evaluates status, headers, response structure, exact values, errors, authentication, authorization, and side effects.

For POST /users, cover a valid unique user, missing and malformed fields, boundaries, duplicates, unsupported roles, missing credentials, disallowed roles, and whether failed requests create partial data. The common mistake is checking only a 200 or 201 status. The API testing beginner guide and Postman tutorial provide hands-on practice.

Accessibility testing

Accessibility testing investigates whether people with disabilities can perceive, understand, navigate, and operate the product. Beginner checks include keyboard access, visible focus, semantic labels, heading hierarchy, form errors, status announcements, contrast, zoom, and text reflow.

Automated scanners find some issues, not all. A scanner may detect a missing label but cannot fully judge whether instructions are understandable or a workflow makes sense with a screen reader. Use automated rules with manual keyboard and assistive-technology evaluation appropriate to the product.

Performance testing basics

Performance testing measures defined behavior under workload or resource conditions. Common areas include response time, throughput, concurrency, stability, scalability, and resource use.

"Make it fast" is not a testable expectation. A team needs representative traffic, data, environment, actions, duration, and thresholds. The common mistake is running a large load from an uncontrolled laptop against an environment without permission or interpreting one response time as a capacity result. Beginners should learn the concepts and collaborate with experienced engineers before generating significant traffic.

Security testing basics

Security testing investigates threats to confidentiality, integrity, availability, authentication, authorization, input handling, sessions, and sensitive data. Beginners can safely learn to test permission rules, expired sessions, safe error messages, secret handling, and whether user A can access user B's synthetic record in an approved practice environment.

Security assessment is a specialty, and intrusive testing requires explicit permission. The common mistake is scanning or attacking systems without authorization. Use safe test environments, defined scope, synthetic data, and expert guidance for deeper work.

Compatibility and cross-browser testing

Compatibility testing checks behavior across supported browsers, devices, operating systems, viewports, inputs, and configurations. A checkout may work in desktop Chrome but hide the Place Order button behind a mobile keyboard or fail in a supported Safari version.

The common mistake is treating a resized desktop browser as complete device coverage. Responsive view is useful, but real browsers and devices can differ in engines, keyboards, permissions, storage, and assistive technology. Use product analytics and support commitments to prioritize a representative matrix.

Practical Checkout Example: Several Types Working Together

Assume a store lets an eligible customer apply one 10% promotion to an in-stock item and submit an approved test payment.

Begin with requirements and functional coverage

Clarify eligibility, code format, minimum subtotal, calculation order, combination rules, expiration, inventory, payment states, and order-creation timing. Functional cases cover the correct discount, invalid or expired code, changing quantity after application, removing the code, declined payment, and double submission.

Use the right layer

At the API layer, verify promotion validation, calculation values, permission rules, error contracts, and that invalid requests create no order. At the UI layer, verify controls, displayed totals, clear messages, keyboard behavior, and confirmation. At the data or integration layer, verify that order, payment, promotion usage, and inventory agree.

Combine release-oriented types

Run a smoke check after deployment to make sure checkout can open. Explore interruptions, two tabs, refresh, slow responses, and returning from payment. If a duplicate-order defect is fixed, retest the original double-submit condition, then regress normal success, failure and retry, order history, inventory, and confirmation.

Add non-functional questions

Accessibility coverage checks labels, focus order, errors, and status updates. Compatibility coverage checks supported browser and device combinations. Performance specialists may validate checkout under an agreed workload. Security coverage checks session handling, authorization, sensitive-data exposure, and tampering resistance within approved scope.

No single type replaces the others. The team selects a small, risk-based combination that gives trustworthy release evidence.

Software Testing Types Comparison

Testing typeWhat it checksBeginner exampleCommon mistakeWhen to use it
FunctionalBusiness behavior and rulesValid and locked-user loginHappy path onlyEvery feature with defined behavior
ManualHuman-performed and evaluated checksExplore a new profile formRandom clickingNew, changing, visual, or human-centered work
SmokeBasic build stabilityLogin, catalog, cart, checkout openCalling it full coverageAfter deployment or environment change
RegressionExisting behavior after changePromotion fix did not break totalsRerun everything blindlyAfter code, configuration, or dependency change
RetestingA specific defect fixOriginal locked-user failure now rejects accessTesting a different caseAfter a proposed defect fix
ExploratoryRisks discovered through learning and adaptationCart state across tabs and refreshNo mission or notesNew, unclear, complex, or high-risk areas
IntegrationConnected components and servicesPayment creates one order and updates stockCheck only the final screenAt service and data boundaries
System/end-to-endComplete application or critical journeySign in through order confirmationPut every rule through UISmall set of essential user journeys
UATFitness for business or user needCampaign owner validates promotion rulesUse UAT as basic QABefore business acceptance or rollout
APIService contract, rules, permissions, and side effectsCreate user with valid and invalid JSONStatus code onlyFast service-level functional coverage
AccessibilityUse by people with disabilitiesKeyboard checkout with clear errorsScanner onlyThroughout design, development, and regression
PerformanceBehavior under defined workloadCheckout response at agreed concurrencyUnapproved load and vague targetsWhen response and capacity risks matter
SecurityProtection against defined threatsUser cannot read another user's orderTesting without permissionThroughout delivery with approved scope
CompatibilitySupported platforms and configurationsCheckout on supported Chrome, Firefox, and SafariResize one browser onlyWhen platform differences affect users

Testing Levels Are Another Dimension

Testing types are often confused with testing levels:

  • Unit tests check a small function, method, or class, usually in isolation.
  • Component tests check a larger unit with controlled dependencies.
  • Integration tests check connections between components or services.
  • System tests evaluate the complete application.
  • Acceptance tests confirm fitness for intended business use.

A discount calculation could have fast unit tests for arithmetic, integration tests for promotion and cart services, API tests for the contract, UI tests for customer-facing behavior, and acceptance checks for campaign rules. Duplicating every case at every level creates slow, expensive coverage. Put each check at the lowest practical layer that provides trustworthy evidence, then keep a smaller set of integrated journeys.

What Beginners Should Learn First

Use this order:

  1. Software testing fundamentals. Learn risk, expected versus actual behavior, positive and negative cases, and test levels.
  2. Manual testing workflow. Practice requirements, data, cases, exploration, execution, and reporting.
  3. Test cases and bug reports. Make expectations observable and failures reproducible.
  4. Smoke, retesting, and regression. Learn the distinct decision each supports.
  5. Web and API basics. Understand client, server, requests, responses, sessions, permissions, and data.
  6. Accessibility fundamentals. Include keyboard, labels, errors, and structure from the start.
  7. Automation later. Repeat stable, important checks after you understand their risk and setup.

The software testing roadmap turns this order into phases and practice deliverables. If you are exploring the job itself, read what a QA tester does.

A Selection Checklist for Real Features

Before naming a test type, ask:

  • What user or business outcome must work?
  • Which failure would have the greatest impact?
  • What changed, and which existing behavior depends on it?
  • Which layer owns the rule or provides the clearest evidence?
  • Which roles, states, boundaries, failures, and interruptions matter?
  • Are accessibility, performance, security, or compatibility risks in scope?
  • Does this need human exploration, repeatable automation, or both?
  • What test data and environment make the result trustworthy?
  • What is explicitly out of scope?
  • How will results and remaining risk be communicated?

For a larger feature or release, record these choices in a practical software testing test plan.

Frequently Asked Questions

What are the main types of software testing?

Beginners should recognize functional, manual, smoke, regression, retesting, exploratory, integration, system/end-to-end, acceptance, API, accessibility, performance, security, and compatibility testing. The right mix depends on the feature's risks and release context.

What is the difference between functional and non-functional testing?

Functional testing checks what the software does against business rules. Non-functional testing checks qualities such as accessibility, performance, usability, security, reliability, and compatibility. Some risks, such as authorization, cross both categories.

Is regression testing manual or automated?

It can be either. A person may manually regress a changing or visual workflow, while code can efficiently repeat stable high-value checks. Most teams benefit from a risk-based combination.

Which testing type should beginners learn first?

Start with functional test design through manual testing. It teaches you to analyze requirements, define expected results, control data, and report evidence. Add smoke, exploratory, regression, API, accessibility, and automation skills through projects.

Is API testing a type of software testing?

Yes. API testing evaluates services directly, including their contracts, business rules, errors, authentication, authorization, response content, and side effects. It can be manual or automated.

What is the difference between smoke testing and regression testing?

Smoke testing quickly determines whether a build is stable enough for deeper work. Regression testing checks whether a change damaged existing behavior. Smoke coverage is smaller and shallower.

Is exploratory testing the same as ad hoc testing?

Not necessarily. Skilled exploratory testing uses a mission, time box, notes, evidence, and debrief while adapting to discoveries. Unstructured ad hoc testing may lack those controls and outputs.

Can one test belong to multiple testing types?

Yes. An automated API permission check can be functional, security-relevant, service-level, and regression testing at the same time. Describe the risk and evidence rather than arguing over one label.

Learn the Types by Applying Them

Choose one permitted login, search, or checkout feature. Identify its functional, integration, accessibility, compatibility, and regression risks, then explain which checks belong at UI, API, and data layers. The free Software Testing Fundamentals course can help you build the foundation before moving into API automation or the broader QA Automation Engineer Roadmap.

Types of Software Testing: Beginner Guide | SuperSQA