Functionality Testing vs Performance Testing in Software Engineering

Software Engineering · Chapter 29

Functionality Testing vs Performance Testing in Software Engineering

A booking button can give the right result for one student and still become too slow when hundreds of students use the site together. We need two different views to understand both problems.

Functional view · What does it do?

Does a valid booking reserve the correct seat? Does an invalid booking show the correct error?

Performance view · How well does it run?

How fast and stable is the booking flow when many users arrive?

Direct answer

Functionality testing is commonly called functional testing. It checks whether software functions produce the expected results according to requirements. Performance testing checks responsiveness, throughput, resource use, and stability under a defined workload. Functional testing asks whether a feature works correctly; performance testing asks how well it works when conditions such as user load change.

Open the chapter map
  1. One simple example
  2. Functional testing meaning
  3. Functional test process
  4. Performance testing meaning
  5. Important metrics
  6. Types of performance tests
  7. Performance test process
  8. Worked test plan
  9. Difference table
  10. Exam answers

Our software testing overview separates functional and non-functional test types. Performance testing is one important kind of non-functional testing. The two views can examine the same feature, but they collect different evidence.

Understand Both Tests with a Library Seat Booking App

Functionality Testing vs Performance Testing in Software Engineering

Imagine a college library app. A student selects a time slot, sees available seats, and books one seat. The app must prevent two students from owning the same seat in the same slot.

Picture 1: The student journey being tested

Functional check

Student A books seat L12 for the 10–11 AM slot. The app confirms L12 and prevents student B from booking that same seat in that slot.

Performance check

When an agreed number of students search and book together, do responses remain within the agreed time and error limits?

A page can be quick but show the wrong seat. A page can show the right seat but take too long when the library opens booking for everyone. Correctness and speed both matter.

What is Functionality (Functional) Testing?

The standard term is functional testing. It evaluates what a component or system should do according to functional requirements. The tester gives an input or performs an action and checks the output and resulting state against an expected result. The ISTQB Foundation Level overview also separates functional and non-functional testing.

The test basis comes from clear requirements, business rules, use cases, and acceptance criteria. The requirements documentation chapter explains why words such as “proper booking” are too vague. A testable rule says exactly when a booking should be created and when it must be rejected.

Valid path

Expected success

A free seat in a valid slot is reserved and appears in the student's booking history.

Invalid path

Expected rejection

A student cannot book a seat that is already reserved for the same slot.

Boundary

Edge condition

Booking at the closing time follows the exact time rule agreed by the library.

State

Saved result

A cancellation frees the seat and updates both the availability list and booking history.

Functional testing is possible at different test levels. A small function may be tested alone, connected services can be tested together, and a full user flow can be checked at system level. The unit testing chapter covers one small part; the functional objective is broader than any single test level.

Common functional test design techniques

  • Equivalence partitioning: group inputs expected to behave similarly, such as valid and invalid slot IDs.
  • Boundary value analysis: check values at and around a limit, such as the last allowed booking minute.
  • Decision table: map conditions and outcomes, such as seat free or occupied, student eligible or blocked.
  • State transition testing: check changes such as available → reserved → cancelled → available.

Simple rule: A test is not complete because a button was clicked. Check the response, the saved data, and any important side effects against the expected rule.

Functional Testing Process: Step by Step

Read the requirement

Identify what the feature must do, who may use it, and what should happen on success and failure.

Choose test conditions

Include normal, invalid, boundary, and important state-change situations.

Prepare data and environment

Create a free seat, an occupied seat, eligible users, and any other controlled starting conditions.

Write expected results

Record the exact confirmation, error, and database or state change expected from each action.

Execute and compare

Perform the action, observe the actual result, and compare it with the expected behaviour.

Report, fix, and retest

Record defects with evidence, confirm fixes, and rerun relevant checks after changes.

Test IDActionExpected functional result
FT-01Eligible student books free seat L12 for 10–11 AM.One booking is saved; confirmation names L12 and the chosen slot.
FT-02Another student tries L12 in the same slot.Request is rejected; the original booking remains unchanged.
FT-03Student cancels a valid booking.Booking is cancelled and the seat becomes available again under the agreed cancellation rule.
FT-04Student submits an invalid slot ID.No booking is created and an appropriate error is shown.

On mobile, swipe the table sideways to see every column.

What is Performance Testing?

Performance testing studies how a system behaves under a defined workload. It can measure how long a request takes, how much work the system completes, how often requests fail, and how much CPU, memory, database, or network capacity is used.

“The site should be fast” is not a useful test target. A meaningful target states the operation, environment, workload, time measure, and acceptable limit. For example: “In the agreed test environment, during 300 active student sessions using the defined search-and-book mix, at least 95% of seat-search requests finish within 3 seconds over a 10-minute steady period.” This is an illustrative project target, not a universal standard for every site.

Functional correctness still matters during a performance run. If a tool reports very fast responses because the app returned errors or booked the wrong seat, the performance result is misleading.

Important Performance Testing Metrics

MetricEasy meaningWhat to check carefully
Response time / latencyTime between a request and its usable response.State which action is measured and under what load.
Percentile, such as p9595% of observed requests completed at or below this time.A good average can hide slow experiences for many users.
ThroughputCompleted operations per second or minute.Count useful successful work, not only sent requests.
ConcurrencyUsers or operations active at the same time, as defined by the test.Virtual users are not automatically the same as requests per second.
Error rateShare of requests that fail or return an unacceptable result.Inspect timeouts, rejected transactions, and wrong results separately.
Resource useCPU, memory, database connections, disk, and network use.Find the bottleneck, not just a busy machine.

On mobile, swipe the table sideways to see every column.

p95 example: If 100 comparable requests are sorted by response time, p95 is around the time below which 95 requests finished. The exact calculation method can differ between tools. A statement like “p95 is 3 seconds” needs a named request, workload, and measurement period.

Types of Performance Testing with Easy Examples

Expected workload

Load testing

Checks behaviour under an expected or planned workload. Example: students search for seats when booking opens at 9 AM.

Beyond limits

Stress testing

Pushes demand or limits resources beyond normal conditions. Observe where the service degrades and whether it recovers safely.

Sudden burst

Spike testing

Raises demand quickly. Example: many students refresh and book immediately after a notification.

Long period

Endurance / soak testing

Keeps a relevant workload running for a longer time to detect gradual slowdown or resource growth.

Growth

Scalability testing

Studies how efficiently the system handles increased workload as capacity or architecture changes.

Limit

Capacity testing

Estimates how much workload can be supported while meeting defined performance targets in the tested setup.

Picture 2: Different workload questions

Choose the test based on the real risk, not simply because a tool offers a preset.

For deeper terminology and measurement guidance, the ISTQB Performance Testing syllabus covers workload, metrics, planning, execution, and result analysis.

Performance Testing Process: Step by Step

Define the goal and service target

Choose important actions, expected workload, response-time and error limits, and the measurement period.

Model realistic user behaviour

Estimate the share of students searching, booking, viewing history, or cancelling. Include realistic pauses and fresh test data.

Prepare the environment

Record hardware, database size, network, caching, configuration, and external dependencies. Note differences from production.

Check scripts with a small load

Verify that virtual users log in, perform real work, receive correct results, and do not reuse invalid session or booking data.

Run baseline and target workloads

Increase load in a controlled way, allow a steady measurement period, and run special scenarios such as a spike when relevant.

Measure and investigate

Collect response percentiles, throughput, failures, resource use, and logs. Find whether the bottleneck is in the app, database, network, or test generator.

Improve and repeat under comparable conditions

After a change, rerun the same workload and compare evidence. Also check that the improvement did not damage functional behaviour.

Performance engineering may start during design, but a meaningful load result depends on a controlled setup. The SDLC chapter shows how requirements, development, testing, and maintenance connect; performance risks can be considered across these activities.

Worked Example: Two Test Plans for One Feature

Illustrative project agreement

The college library opens booking daily. A student can reserve one available seat for a time slot. For this example, the team agrees to test a defined mix of seat search and booking with 300 active student sessions in a representative test environment. The illustrative performance target is: at least 95% of seat-search requests finish within 3 seconds during a 10-minute steady run, and fewer than 1% of valid requests fail. These numbers are example requirements for teaching, not a benchmark every application must meet.

Plan A: Functional

  1. Book an available seat.
  2. Reject a second booking of that seat in the same slot.
  3. Check cancellation and availability.
  4. Reject invalid slot and unauthorised request.
  5. Verify database state and confirmation.

Pass condition: each action produces its agreed result and correct saved state.

Plan B: Performance

  1. Use a realistic search-and-book workload.
  2. Run 300 active sessions in the stated environment.
  3. Collect p95 search time, completed bookings, and failures.
  4. Monitor database and app resources.
  5. Check data correctness under load.

Pass condition: the agreed time and error targets are met without incorrect bookings.

Suppose one run shows p95 seat-search time of 2.6 seconds but 4% of bookings fail. We cannot call that a pass merely because the response time target passed. Investigate the failure cause and rerun under comparable conditions. Also, do not present those sample measurements as real results from a deployed website.

Functionality Testing vs Performance Testing: Difference Table

PointFunctional testingPerformance testing
Main questionDoes the feature do the right thing?How well does it behave under defined conditions?
Requirement typeFunctional behaviour and business rules.Performance-related quality targets and workload.
Typical evidenceExpected vs actual output, error handling, and saved state.Response times, percentiles, throughput, failures, resource use, and stability.
ExampleOne seat cannot be booked twice for the same slot.Seat search meets the agreed p95 target at the stated load.
Test dataValid, invalid, boundary, and state combinations.Realistic data volume, user mix, arrival pattern, and run duration.
Failure exampleWrong seat is confirmed.Correct seat appears, but responses become too slow or time out under load.
ScopeCan be tested at several test levels.Can be measured at several levels, often with representative integrated systems for user-facing targets.

On mobile, swipe the table sideways to see every column.

How Functional and Performance Tests Work Together

These are complementary views. First, make sure the important user journey and its test data are valid. Then measure that journey under realistic workload, while still checking correctness. After improving a slow database query or adding a cache, run suitable functional and regression checks to ensure the change did not break seat availability or booking rules.

A high-traffic failure may expose an unexpected functional defect, such as two students receiving the same seat after simultaneous requests. That problem involves both the feature's correctness and the conditions that revealed it. The module design and dependency chapter helps explain why changes in one component can affect another. Both kinds of tests contribute evidence for software quality assurance.

Common mistakes: calling average response time enough without checking slow percentiles; counting error responses as successful throughput; using unrealistically empty data; testing an unrepresentative server but reporting results as production capacity; and assuming a fast page must also be functionally correct.

How to Write This Topic in Semester Exams

2-mark answer

Functional testing checks whether software features behave according to functional requirements. Performance testing checks response time, throughput, stability, and resource behaviour under a defined workload. The first focuses on correctness; the second focuses on performance efficiency.

5-mark answer structure

  1. Define both test types.
  2. Explain “what it does” versus “how well it works under load”.
  3. Give one shared feature example.
  4. Name response time, throughput, and error rate.
  5. Add a short difference table and conclusion.

10-mark ready answer

Functional testing, sometimes called functionality testing in ordinary language, evaluates whether a component or system performs the functions required by users and business rules. It compares actual behaviour with expected behaviour for normal, invalid, boundary, and state-change conditions. Test cases may be designed using techniques such as equivalence partitioning, boundary value analysis, decision tables, and state transitions. For a library seat booking system, functional tests check that a free seat can be booked, an occupied seat cannot be booked again for the same slot, cancellation updates availability, and invalid requests do not create bookings.

Performance testing evaluates how efficiently and reliably the system behaves under a defined workload. Important measures include response time, response-time percentiles, throughput, error rate, concurrency, and use of resources such as CPU, memory, and database connections. Types of performance testing include load testing under expected demand, stress testing beyond normal limits, spike testing for sudden bursts, endurance testing over a longer period, scalability testing as workload and capacity change, and capacity testing against defined targets.

A performance test begins by defining goals and workload, preparing a representative environment and data, verifying load scripts, running baseline and target scenarios, collecting measurements, locating bottlenecks, and repeating the test after improvements. For the booking app, a project might require 95% of search requests to complete within an agreed time while a stated number of students use the system. The test must also check failed requests and booking correctness; a fast error response is not success.

Functional testing asks whether the system gives the right result. Performance testing asks whether it continues to provide acceptable service under specified conditions. Both are needed because a system may be correct for one user but too slow for many users, or fast while returning incorrect results.

Quick Revision and Memory Trick

FunctionalRight result?
PerformanceRight speed and stability at stated load?
Functional evidenceOutput + state + errors.
Performance evidencep95 + throughput + failures + resources.

Memory shortcut: W-H — Functional testing checks What the software does. Performance testing checks How well it works under defined demand.

Frequently Asked Questions

Is “functionality testing” the same as functional testing?

People often use “functionality testing” to mean functional testing. In formal testing terminology, functional testing is the common term.

Is performance testing only about speed?

No. It also studies completed work, failure rate, resource use, stability, and behaviour under a stated workload.

Can a test be both functional and performance-related?

Yes. A booking flow run under load can check response time and also verify that it never creates a duplicate booking. State both objectives and expected results.

What is the difference between load and stress testing?

Load testing normally checks the expected or planned workload. Stress testing explores peak or beyond-limit conditions and how the system degrades or recovers.

Does passing a performance test prove that the site will always be fast?

No. Results apply to the tested workload, data, environment, configuration, and time period. Real conditions may differ.

Conclusion

A useful test plan asks two questions about an important feature: does it produce the correct result, and can it continue to do so under the workload that matters? Functional testing checks rules and outcomes. Performance testing measures speed, capacity, stability, and resource behaviour under defined conditions. Together they provide a clearer view of software quality than either one alone.

Post a Comment

0 Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.
Join Telegram Exam updates and free resources