Security testing in development and acceptance
ISO 27001 Annex A 8.29 requires security testing to be defined and embedded throughout the development lifecycle, with pass/fail criteria that gate every release. In practice that means static analysis and dependency scanning in CI, dynamic testing against staging, independent acceptance sign-off, and periodic penetration testing — scaled to the risk of the system. It applies equally to software you build and software you buy.
The security section of an enterprise due-diligence questionnaire has a habit of arriving mid-deal: where is your latest penetration test report? How is code tested before release?
If the honest answer is "our developers are careful," you already know how that reads on the other side of the table.
ISO 27001 Annex A 8.29 is the control that changes that answer. Its premise is simple: nothing reaches production on the assumption that it's secure — that has to be demonstrated.
In practice, that means security testing defined across the development lifecycle: not one big test before launch.
Build it once, and it answers every buyer who asks.
This guide covers what the control requires, how a lean firm implements it without an enterprise security team, and the evidence auditors sample when they test it.
It's written for regulated service providers — firms answerable to the FCA, the ICO, or both — and B2B software firms of roughly 25–250 people: the size where the pipeline has to do most of the work.
ISO 27001 Annex A 8.29 requires security testing processes to be defined and implemented across the development lifecycle, verifying before release that security functions behave as specified, code is free of known vulnerabilities, and configurations are secure. It applies to new systems, upgrades, and software you buy or outsource.
The purpose of the control is to validate that security requirements are actually met when applications or code move to production. Your testing regime needs to verify three things, in proportion to how much the system matters:
The standard expects structure around that testing: documented test plans with expected outcomes and defined pass/fail criteria, developer-level testing during the build, and independent acceptance testing before release.
A release gate with no defined failure condition isn't a gate.
Two scope points catch firms out. First, the control applies to new systems, upgrades and new versions — not just greenfield builds.
Second, it applies to software you buy or have built for you: acquired code needs security requirements in the contract and an evaluation against them before you accept delivery.
A.8.29 sits in a chain of development controls. It picks up where A.8.28 (secure coding) leaves off, runs in the separated environments A.8.31 requires, and produces the test evidence that A.8.32 (change management) consumes at the release gate.
Annex A 8.29 matters because it converts security from a claim into evidence. Enterprise buyers ask for penetration test reports and secure-SDLC proof in almost every serious procurement, and ISO 27001 auditors treat the control as core for any firm with development in scope.
For a software vendor, security testing is sales infrastructure.
Two fears usually sit under this control, and both deserve naming. The engineering fear: that security testing means friction — gates that slow the release train a growing firm depends on. The commercial fear: that one exploitable flaw undoes years of trust-building with the customers that matter most.
A.8.29, implemented the modern way, answers both at once — the testing runs inside the pipeline the developers already use, and the evidence it throws off is exactly what enterprise buyers ask to see.
The cost curve makes the same argument. A critical flaw found by a CI scan costs an hour. The same flaw found by a customer's security team costs the relationship. Found by an attacker, it costs an incident, disclosure obligations, and possibly a conversation with the ICO.
Auditors treat this as a core control for any organisation with development in scope — and they test whether the gate is real, not whether the tooling exists.
To implement Annex A 8.29, define pass/fail testing criteria in your secure development policy, automate static analysis (SAST) and dependency scanning (SCA) in CI, run dynamic testing (DAST) against staging, keep peer review on security-critical paths, and commission an independent penetration test annually. At a 25–250 person firm, the pipeline does most of this for you.
That last point is the one worth pausing on. Most of this control is configuration, not headcount.
The modern toolchain has quietly turned A.8.29 from a security-team problem into an engineering-workflow one:
Describe the regime in your secure development policy. Which tests run at which lifecycle stage, who's responsible, and — critically — the pass/fail criteria. The criteria are what auditors check first.
Let the pipeline do the volume. Static analysis (SAST) and dependency scanning (SCA) on every build; dynamic testing (DAST) against staging for the runtime and API layer. All three exist as commodity tooling that bolts onto GitHub or GitLab CI in days, not months.
Keep the human layer for what machines miss. Peer code review with security on the checklist, and developer tests around the security-critical paths: login, permission checks, crypto usage, tenant boundaries.
Test somewhere that resembles production. Staging should mirror production configuration (that's A.8.31's job), with masked or synthetic data — never live personal data.
Scale depth to risk. Routine releases ride the automated gates plus review. New architecture, new external surfaces or high-risk changes get deeper attention. Commission an independent penetration test annually and after major architectural change — at this scale, that cadence satisfies both auditors and enterprise customers.
Make acceptance explicit. A named person signs off that criteria are met before release. Highs and criticals get fixed and retested, or formally risk-accepted. Silence is not acceptance — and the person who wrote the change shouldn't be the person who accepts it.
Cover acquired software. Security requirements in the development contract, and an evaluation against them before you accept delivery.
Starting from zero, the sequence is: wire the automated gates first — SAST and SCA take one to two weeks including tuning — then add DAST and the acceptance workflow. Budget £5–15k for the annual penetration test at this scale.
From that point on, every build is quietly collecting the evidence your next audit — and your next enterprise deal — will ask for.
| Method | What it does | Where it runs |
|---|---|---|
| Static application security testing (SAST) | Analyses source code for vulnerable patterns without executing it | CI, on every build |
| Software composition analysis (SCA) | Flags known vulnerabilities in the open-source libraries you depend on | CI, on every build |
| Dynamic application security testing (DAST) | Probes the running application the way an attacker would | Staging, per release cycle |
| Peer code review | Human judgement on security-critical paths machines can't assess | Every security-relevant change |
| Penetration testing | Independent, goal-driven testing of the whole system | Annually and after major change |
You don't need all of everything.
The combination that satisfies the control for most mid-market firms is SAST and SCA on every build, DAST against staging, review on the way in, and the annual pen test on top.
ISO 27001 auditors test Annex A 8.29 by sampling: expect them to pick a recent release and trace it end to end — scan results, review record, acceptance sign-off — and separately pick a high-severity finding and follow it to closure. The evidence below is what that sample will touch.
Have these ready:
Questions to expect in the room:
Annex A 8.29 is the most natively automatable control in ISO 27001: the same CI/CD pipeline that runs the tests can enforce the pass/fail criteria, collect the evidence, and track remediation.
The pipeline is the control — and that changes what compliance costs:
In practice: static code analysis and dependency scanning in CI, dynamic testing against staging, peer review of security-relevant changes, functional checks of security features, and periodic penetration testing. The mix scales with what the system does and how much it matters.
No. Routine releases ride automated scanning and peer review; independent penetration testing belongs on an annual cycle and after major architectural change. Per-release pen testing is over-engineering for most mid-market firms.
If development is in scope of your ISMS, yes — auditors treat it as a core control and will sample releases to test whether the gate is real. Firms with genuinely no development activity can justify exclusion in the Statement of Applicability.
Yes. Security requirements belong in the supplier contract, and delivery should be evaluated against them before acceptance. "The agency tested it" without evidence doesn't survive an audit sample.
Two 2013 controls — system security testing and system acceptance testing — merged into one, with more explicit expectations around structured test plans, environment separation, and testing woven through the lifecycle rather than saved for the end.
Every control in this framework and the clause guides that sit above them, grouped by control domain. Open any entry for its control definition, implementation steps and the audit evidence it expects. Dimmed entries are planned.
Work with a Trust Architect to scope your ISMS, close the gaps, and get audit-ready — without stalling your roadmap.