Five types of security testing compared
The word security testing gets used for everything from a linter rule to a two-week red team engagement. Separating the types matters because they find different faults, cost different amounts and belong to different people. Static analysis reads code without running it and flags dangerous patterns such as string-built database queries. Dynamic analysis attacks the running application through its inputs. Penetration testing is a human, goal-driven attempt to break in, usually time-boxed. Dependency and configuration review checks third-party components for known vulnerabilities and servers for weak settings. Threat modelling happens before any of that, on a whiteboard, asking what an attacker would want and how they would get it.
| Type | When in the lifecycle | What it finds | What it misses | Who usually runs it |
|---|---|---|---|---|
| Static analysis (SAST) | Every commit, in the build | Injection patterns, hard-coded secrets, unsafe functions, taint flows | Logic flaws, authorization errors, anything that depends on runtime data | Developers, with a security champion tuning rules |
| Dynamic analysis (DAST) | Deploy to test environment | Reflected injection, missing headers, weak session handling, exposed endpoints | Business logic abuse, flaws behind multi-step workflows | Testers, automated in the pipeline |
| Penetration testing | Pre-release and annually | Chained weaknesses, privilege escalation, logic abuse, what a real attacker would do | Whatever the time box did not reach; results are a sample | Specialist, internal or external |
| Dependency and configuration review | Every build plus scheduled | Known vulnerabilities in libraries, outdated components, default credentials, open ports | Unknown vulnerabilities, custom code faults | Developers, operations, testers |
| Threat modelling | Requirements and design | Missing controls, trust boundary errors, abuse cases nobody wrote a story for | Implementation faults; it finds design gaps only | Whole team, facilitated by an architect or lead tester |
OSSTMM in plain terms
The Open Source Security Testing Methodology Manual, published by ISECOM, is the methodology most often named when a team asks how to make security testing repeatable rather than heroic. Three of its ideas are useful even if you never run a full OSSTMM audit. First, it divides the target into channels: human, physical, wireless, telecommunications and data networks. A test that covers only the data network channel has left four doors unchecked, and saying so in those words is clearer than a list of tools. Second, it separates what is visible, what is accessible and what is trusted, the three ways an attacker gets a foothold, and asks the tester to enumerate each before attacking any. Third, it introduces the rav, a risk assessment value that scores the attack surface against the controls protecting it, so two audits of the same system a year apart produce comparable numbers instead of two different narratives.
Why does a methodology beat a checklist? A checklist tells you what to look for and stops when the list ends. A methodology tells you how to look, how to record what you found and did not find, and how to compute a result that another tester could reproduce. When the auditor asks what your security test covered, a rav and a channel map answer the question; a list of tool names does not. Issue 6 of the original magazine (June 2009) carried a security testing theme and, as far as the archive shows, was cited on at least one security mailing list for an article on the OSSTMM; the issue 6 record preserves what is known about it.
The OWASP Top Ten as a risk vocabulary
The OWASP Top Ten is a ranked list of the most common web application risk categories, revised every few years from real vulnerability data. OWASP describes it as a shared vocabulary, and says it should not be used as a test plan. Broken access control, cryptographic failures, injection, insecure design, security misconfiguration, vulnerable and outdated components, identification and authentication failures, software and data integrity failures, logging and monitoring failures, and server-side request forgery. When a tester logs a defect as broken access control rather than user can see other user's invoice, the developer, the architect and the auditor all know the class of fault and its usual fix. Map each category to one of the five testing types and you have a coverage matrix: injection to static and dynamic analysis, access control to penetration and manual testing, outdated components to dependency review, insecure design to threat modelling.
Where security testing sits in a delivery pipeline
Place each type where its cost is lowest and its feedback fastest. Static analysis and secret scanning run on every commit and should finish in minutes; a finding at this stage costs a developer a few minutes. Dependency scanning runs on every build. Dynamic analysis runs against the deployed test environment, alongside the API and integration tests described in continuous testing, and takes 10 to 30 minutes. Penetration testing runs before a major release and on a schedule, because a human attacker is too slow and too expensive for every change. Threat modelling runs whenever a new trust boundary appears: a new integration, a new role, a new data store. The original site also hosted an application security document that made the same argument in the language of 2009; its material is folded into the sections here, and the sister title Security Acts carried IT security coverage for the wider organization.
A workable target for a mid-sized web service: static analysis under 5 minutes per commit, dependency scan under 2 minutes per build, dynamic scan under 30 minutes per deploy to test, penetration test 5 to 10 days per major release. Anything slower gets skipped in practice.
What a tester without a security background can start doing
You do not need to be a penetration tester to raise the security level of a product. Three of the five types are within reach of any functional tester in a quarter, and the other two become more effective when a tester prepares the ground.
- Add abuse cases to every story. For each acceptance criterion, write the misuse version: what if the user changes the ID in the URL, submits the form twice, or uploads a 2 GB file. These are black-box tests with a hostile stance.
- Own the dependency review. Read the scan output, triage by whether the vulnerable function is actually reachable, and track fixes like any other defect with a severity and an age.
- Run the dynamic scanner and learn to read its report. Half the findings will be missing headers and cookie flags that a developer fixes in an hour; learning which half is the skill.
- Facilitate threat modelling. A tester who asks what could go wrong for a living is the natural facilitator; use a simple prompt list (spoofing, tampering, repudiation, information disclosure, denial of service, elevation of privilege) and record the answers as test conditions.
- Prepare the penetration test. Give the specialist a current architecture diagram, test accounts at every role, and the list of what your own testing already covers, so their days go on what only they can find. Rank the findings with the same risk-based approach you use for functional defects.
Common questions
Is penetration testing the same as security testing?
No. Penetration testing is one type of security testing, the manual, goal-driven kind. A team that only pen tests once a year is doing a fifth of the job, expensively.
How often should we run a penetration test?
Before each major release and at least annually, plus after any change to authentication, payment or a trust boundary. Regulated sectors often mandate the annual cycle.
What is the difference between OSSTMM and the OWASP testing guide?
OSSTMM is a general security testing methodology covering five channels and a scoring model. The OWASP testing guide is specific to web applications and is organized by vulnerability class. Many teams use OSSTMM for the frame and the OWASP guide for the web-layer detail.
Do static analysis tools produce many false positives?
Yes, often more than half of raw findings on first run. Tuning the rules to the codebase over the first month typically brings the useful rate above 70 percent. Budget for that tuning.
Can security testing be fully automated?
Static, dynamic and dependency testing can be largely automated. Threat modelling and penetration testing cannot, because they depend on human judgement about intent and value.
Where does security testing appear in ISO/IEC 25010?
Security is one of the eight product quality characteristics in ISO/IEC 25010, broken into confidentiality, integrity, non-repudiation, accountability and authenticity. Those five sub-characteristics make a useful checklist for test conditions.
Sources
- OWASP Web Security Testing Guide
- OWASP Top Ten web application security risks
- ISECOM, Open Source Security Testing Methodology Manual (OSSTMM 3)
- NIST SP 800-115, Technical Guide to Information Security Testing and Assessment
Further reading named in the text
- Adam Shostack, Threat Modeling: Designing for Security (Wiley, 2014)
- Gary McGraw, Software Security: Building Security In (Addison-Wesley, 2006)
- ISO/IEC 25010, Systems and software Quality Requirements and Evaluation, product quality model (ISO, 2011)
This guide is part of the software testing techniques hub. It is best read alongside performance testing and equivalence partitioning and boundary values, which cover the neighbouring questions.