Performance & Security Testing Services

Mutqan Soft's performance and security testing service measures how your web application or API behaves under real load and against common exploitation attempts — in numbers, before thousands of users measure it on launch day. We run load, stress and soak tests with JMeter, trace bottlenecks into the services and databases behind slow requests, check for the common OWASP weaknesses in web apps and APIs, and review authentication, authorisation and input handling.

What you receive: latency, throughput and error-rate metrics; findings ranked by severity, each with reproduction steps; fix recommendations; and a re-measurement afterwards. Mutqan Soft is a software testing company based in Riyadh, and the engineer who runs your tests writes the findings and verifies the fixes.

  • Load, stress and soak tests with JMeter, reported as latency, throughput and error-rate metrics.
  • Checks for the common OWASP weaknesses in web apps and APIs, with authentication, authorisation and input handling reviewed.
  • Findings ranked by severity, each with reproduction steps, evidence and a fix recommendation.
  • A re-measurement after the fixes, and a written release decision: what was tested and what remains open.
  • Based in Riyadh: on site in Saudi Arabia or remote, with reports in Arabic or English.

Send the product details info@mutqansoft.sa

Performance testing: load, stress and soak

A performance testing service is only useful if each run answers a question someone will act on. Load, stress and soak tests answer different questions, so the test strategy names which of them your release needs and what each must show. All three are run with Apache JMeter. The workload model typically comes from your analytics or your business forecast: which endpoints, in what mix, with what data, at what concurrency.

When a number misses its target, the number is not yet the finding. Bottleneck analysis follows the slow requests into the services and databases behind them — whether latency rises while throughput flattens (a saturated resource such as CPU or a connection pool), whether errors appear before slowness (a hard limit), and which queries slow down under concurrency — so that a finding can name a cause, not only a symptom.

  • Load test — does the product meet its targets at the traffic you expect? The expected workload at normal and peak levels, compared with the targets you set.
  • Stress test — where is the limit, and how does the system fail? Load is raised past the expected peak until errors or time-outs appear, to see whether the system degrades with clear errors and recovers by itself, or crashes and needs a restart.
  • Soak test — does it stay healthy for hours? A realistic load held for several hours exposes memory leaks, connection-pool exhaustion, and tables or queues that grow until everything slows down.
  • Metrics — latency, throughput and error rate. Latency is typically read as percentiles (p50, p95 and p99 rather than the average, which hides the slow tail) and broken down by endpoint, so a fast home page cannot hide a slow checkout.

Pass/fail criteria: agree thresholds before the run

A test without agreed thresholds measures, but it cannot pass or fail. Thresholds should be agreed before the first run, as numbers tied to a workload and a time window — whoever runs your load tests, ask for them. The table is an illustrative example for the checkout of a fictional shop, Bustan Market — your values come from your own traffic, journeys and commitments, not from this page.

How response time is measured matters as much as the limit. For every request, JMeter records the elapsed time from just before the request is sent to just after the last part of the response arrives; it does not include browser rendering or JavaScript. Those per-request times are summarised as percentiles — JMeter's HTML dashboard reports the 90th, 95th and 99th by default — next to throughput and error rate. Useful criteria also say which window counts (usually the steady state after ramp-up), what counts as an error (5xx responses, time-outs, and 200 responses with an error body caught by an assertion), and when a run is invalid rather than passed: the load generator itself saturated, the build changed mid-run, or the environment was not the one agreed.

Criterion (example)Measured onPassFail
p95 response timePOST /api/checkout, 30-minute steady state at 120 requests/s800 ms or lessAbove 800 ms
p99 response timeThe same window1,500 ms or lessAbove 1,500 ms
Error rateEvery request in the mix: 5xx, time-outs, failed assertionsBelow 0.5%0.5% or more
ThroughputThe whole workload mix120 requests/s sustained for 30 minutesThe rate cannot be sustained because responses slow down
Soak stability4-hour run at 60% of peakp95 in the last hour within 10% of the first hourDrift above 10%, or memory or open connections keep climbing
Stress behaviourRamp past peak until errors appearClear 503 or 429 responses; normal service within 5 minutes after the load dropsCrash, hung requests, wrong data, or no recovery without a restart

Security testing: common OWASP weaknesses in web apps and APIs

The security part checks your web application and its APIs for the common weaknesses catalogued in two OWASP lists: the OWASP Top 10:2025 for web applications and the OWASP API Security Top 10 (2023 edition) for APIs. Checks run in the agreed environment; access-control checks need test accounts for each role. Both lists are references, not checklists to tick: the OWASP Web Security Testing Guide (WSTG) describes how each weakness is tested, and the Application Security Verification Standard (ASVS) states testable requirements — both useful to your team when it writes the fix and its own regression test.

Authentication, authorisation and input handling are reviewed as part of this service. They are where the two lists overlap and where automated scanners are weakest: a scanner cannot know that customer A must not read customer B's order. Some categories — such as Software Supply Chain Failures (A03:2025) and Insecure Design (A06:2025) — are only partly visible from the outside, and testing alone cannot rule them out.

AreaOWASP referenceExample checks
Access controlA01:2025 Broken Access Control; API1:2023 Broken Object Level Authorization; API5:2023 Broken Function Level AuthorizationCustomer A's token used to read customer B's order by changing the id; a customer token calling an admin endpoint; a field such as role or price accepted from the client (API3:2023)
Authentication and sessionsA07:2025 Authentication Failures; API2:2023 Broken AuthenticationLogin throttling and lockout, generic error messages, token expiry, logout and password change that really invalidate the session, the password-reset flow
Input handlingA05:2025 InjectionHostile values in search, filters, sort fields, file names and headers; database errors or reflected script in responses
ConfigurationA02:2025 Security Misconfiguration; API8:2023 Security MisconfigurationSecurity headers, TLS versions, cookie flags (Secure, HttpOnly, SameSite), CORS policy, verbose errors and default pages
Exceptional conditionsA10:2025 Mishandling of Exceptional ConditionsMalformed bodies, missing fields and time-outs: no stack traces in responses, no failing open
Resource consumptionAPI4:2023 Unrestricted Resource ConsumptionPage-size and payload limits, rate limiting with 429 responses — measured alongside the load tests

Scope boundary: what this service does not claim

This is testing for common weaknesses and measured performance, with the evidence behind each finding. It is worth being precise about what it is not, so you can plan anything else you need.

  • Not a certified penetration test or a compliance attestation. The report is test evidence: it does not certify compliance with a regulation or a standard. If an auditor, a regulator or a client contract requires either, plan for it separately; the findings and re-test results from this work remain useful input.
  • Mobile apps: the APIs a mobile app calls are in scope and get the same checks as any other API. The app package itself — data stored on the device, platform interaction, resistance to reverse engineering and tampering, the areas the OWASP MASVS standard defines — is not part of this service as described here.
  • Not a denial-of-service exercise. A stress test finds the capacity limit of your system under controlled load from a load generator; it is not a simulation of a distributed attack.
  • Third-party services — payment gateways, SMS providers, national integrations — should not receive test load without their owner's permission. Whoever tests for you, make sure the scope says whether each one is replaced by a stub or called through its sandbox.
  • Production: testing runs against a test or staging environment. Running anything against production is your decision; if you make it, agree the targets, rate, time window and stop conditions explicitly beforehand (see the FAQ).

How an engagement runs

The work follows the same six stages as every Mutqan Soft engagement, adapted to performance and security. A stage is not closed until its output exists.

The engineer who runs the tests writes the findings and verifies the fixes, so nothing is lost between the person who found a problem and the person who confirms it is gone.

StageWhat happensOutput
DiscoverRequirements, architecture and defect history read; what costs most if it breaks — journeys, data, traffic peaksRisk map
ModelCoverage designed — typically a workload model (endpoint mix, data, concurrency, ramp-up, duration) and the security areas to test, by role and endpointTest strategy
TestJMeter load, stress and soak runs and OWASP-based security checks on the agreed environment; every run and its result recordedExecution logs and metrics
ReportFindings with severity, reproduction steps and evidence in your tracker; a critical finding is reported immediatelyFindings ranked by severity
Re-testEvery fix re-tested and re-measured; regression runRe-measurement and regression results
Release decisionWhat was tested, what remains open, which risks are acceptedWritten release decision

What you receive

Findings land in the tracker your team already uses, and test documentation and reports are in Arabic or English — whichever your team works in. The table shows the shape of a performance finding, on the same fictional checkout as above.

  • Latency, throughput and error-rate metrics — typically as percentiles per endpoint and per run. Whoever measures for you, ask for each number together with the workload and environment it was measured under; without them it cannot be compared next time.
  • Findings ranked by severity, each with reproduction steps, environment and evidence (request, response, timings or a recording). A critical finding is reported immediately, not held for the final report.
  • Fix recommendations: what to change and where — an index, a pool size, a missing ownership check, a header.
  • A re-measurement after the fixes (typically with the same workload, so the comparison is honest), and every fix re-tested.
  • Execution logs and a written release decision: what was tested, what remains open, and which risks are accepted.
FieldExample (fictional: Bustan Market checkout API)
TitleCheckout p95 is three times the threshold at peak load
SeverityHigh — fails the release threshold for checkout
WherePOST /api/checkout, staging build 2.14.0, 120 requests/s
Measuredp95 2,400 ms against a threshold of 800 ms; error rate 0.2%
Cause foundThe query for orders by customer and date scans the whole table under concurrency; database CPU at 95%
Steps to reproduceRun the checkout workload (JMeter plan and data file attached) for 10 minutes at 120 requests/s
RecommendationComposite index on orders (customer_id, created_at), then re-measure
Re-measurementBuild 2.14.1: p95 610 ms at 120 requests/s — threshold met

What we need from you

Product, stack and release date are enough to start the conversation. To run the tests, these need to be in place:

  • An environment: a test or staging environment as close to production in size and configuration as possible; where it differs, the difference is written into the report so the numbers are read correctly. And a build that does not change during a run.
  • Traffic and dates: the expected peak in users or requests per second, the main journeys, the release date and any seasonal peaks — or the analytics to derive them from.
  • Test data at volume: synthetic accounts (at least two per role, for the access-control checks) and a database filled to a realistic size — not copies of real customer records.
  • Access: the API contract (OpenAPI or a Postman collection), test accounts, and read access to monitoring, logs or database metrics during the runs. Repository access helps root-cause analysis but is not required.
  • Clear authorisation: with any provider, it is worth writing down which hosts and endpoints are in scope for load and security tests and when they may run, and checking whether a WAF or rate limiter needs the load generators allow-listed.
  • A contact: one technical person who can read logs, restart a service and stop a run if something unexpected happens.

When to run performance and security testing

  • Before a launch or a major release — before thousands of users measure the performance themselves on launch day.
  • Before a seasonal peak: government digital services before their seasonal peak load, e-commerce before its sale seasons — with the workload set to the expected peak, not to an ordinary day.
  • After an architecture change: a new database or caching layer, a move to another cloud or region, a new API gateway or message queue — ideally re-measured with the same workload as before the change, so the comparison is honest.
  • After a change to authentication or permissions: a new SSO provider, a new token scheme, new roles or tenants — with the access-control and session checks run again.
  • When an API is opened to partners or to a mobile app — it becomes reachable by clients you do not control.
  • When production is already slow — the slowdown is reproduced under controlled load in a test environment and the bottleneck found before the next peak.

Frequently asked questions

Which tool do you use for load testing?

Apache JMeter, for load, stress and soak tests. JMeter's own manual recommends CLI (non-GUI) mode for load runs and keeps the GUI for building and debugging scripts. If your team already has load scripts in another tool, say so when scoping: we work with what your team already uses when it exists.

Can you test APIs without the frontend?

Yes, and it is often the better order. We test from the contract — an OpenAPI description or a Postman collection — covering valid and invalid cases, authentication, limits and performance, so the service layer is measured before the frontend arrives.

Do you test in production?

Testing runs against a test or staging environment. A stress test in particular pushes the system towards its breaking point, which is not something to do to real users. Running anything against production — even a low-rate response-time check — is your decision; if you make it, agree the targets, rate, time window and stop conditions explicitly beforehand.

Is this a penetration test, and do we get a certificate?

It is testing for the common OWASP weaknesses in web apps and APIs, with the findings and re-tests documented. It is not presented as a certified penetration test, and the report is not a compliance certificate. If an auditor, a regulator or a client contract requires either, plan for it separately; the findings and re-test evidence from this work remain useful input.

Do you do mobile app security testing?

We test the APIs the app calls — the server any attacker talks to, whatever the client — with the same checks: object-level authorisation, authentication, input validation and resource limits. Analysis of the app package itself (storage on the device, resistance to reverse engineering, the OWASP MASVS areas) is not part of this service as described here.

Do you provide web app assessment services in Saudi Arabia?

Yes. We are based in Riyadh, work on site in the Kingdom and remotely with clients across the Gulf, and write reports in Arabic or English. For a web application, the assessment described here covers performance under load and the common OWASP weaknesses; if you need a wider independent assessment of quality and readiness before a major launch, that is our enterprise consulting service.

Do you need our source code?

No. Performance and API testing run against a test or staging environment without the code. Repository access helps with the root-cause analysis of a bottleneck, but it is not a precondition for starting.

References

Planning a launch or a peak season?

Tell us about the product, its stack, the release date and the traffic you expect at peak. You will get a proposed test scope and an effort estimate back — not a sales pitch.

Send the product details

Email: info@mutqansoft.sa · Phone: +966 55 704 9016

Read more before you decide

QA Roadmap lessons

Free tools from the same team

The tools we use in our own engagements, free to use without signing up for most of them.

Measure an endpoint's response time over several samples: min, max, average, median and p95.

Performance

Run a small, safe benchmark against a public endpoint (bounded requests and concurrency) and get throughput and latency percentiles.

Performance

Generate large parameter datasets (users, tokens, ids, payloads) for k6, JMeter, Gatling and Locust load tests.

Performance

Grade HTTP security headers (CSP, HSTS, X-Frame-Options, Referrer-Policy, Permissions-Policy, COOP/CORP) from pasted headers or a public URL.

Validation

Test which TLS versions a server accepts, the cipher suite it negotiates, weak suites and HSTS, with an A+ to F grade that explains every cap.

Website & HTTP Diagnostics New

Grade the Set-Cookie headers of a page, or ones you paste, for Secure, HttpOnly, SameSite, prefixes, scope and lifetime, with the fix for each issue.

Internet Security & Privacy New

Other Mutqan Soft services

All six services on the homepage