---
title: Pentest or code review, when you can only afford one
url: "https://cs.abinantony.io/blog/pentest-or-code-review"
category: Practice
published: 2025-09-30
updated: 2026-01-14
type: article
source: Abin Antony Security
---

# Pentest or code review, when you can only afford one

> Choose a penetration test when you need evidence for a customer or auditor, or when the system is live and you need to know what is exploitable today. Choose a secure code review when the codebase is new to you, when the same bug class keeps recurring, or when you need to fix causes rather than symptoms.

The budget covers one engagement. A penetration test and a code review cost roughly the same, take roughly the same time, and produce very different documents. Here is how the choice actually gets made.

## They answer different questions

|  | Penetration test | Secure code review |
| --- | --- | --- |
| Question answered | What can an attacker do today? | Why is it possible, and where else? |
| Coverage | What is reachable and running | Whatever paths are read, running or not |
| Finds logic flaws | Yes, where reachable | Yes, including unreachable paths |
| Finds race conditions | Sometimes | Reliably |
| Proves exploitability | Yes | Not directly |
| Produces shareable evidence | Yes — the report customers ask for | Rarely asked for by customers |
| Best for a fix | Symptom, precisely located | Cause, everywhere it occurs |

## Choose the penetration test when

- A customer, auditor or investor is asking for a report. This is the deciding factor more often than any technical consideration, and it is a legitimate one.
- The system is live and you do not know your current exposure.
- The application is assembled from services and integrations rather than a single codebase you control.
- You need to know that something is exploitable in order to get engineering time allocated. A working proof of concept moves a backlog in a way that a code comment does not.

## Choose the code review when

- You inherited the codebase — acquisition, a departed contractor, a rewrite you did not supervise.
- The same class of bug keeps reappearing. Testing finds instances; review finds the missing default that produces them.
- The sensitive logic is complex: payments, credit, quotas, refunds, anything with concurrency.
- The product is not deployed yet, or a full environment is impractical to stand up for testing.
- You want the engagement to end with framework-level fixes and CI rules rather than a list.

## The honest middle path

For most teams buying their first engagement, the highest-value split is neither in full: a short threat-modelling session, then a code review of only the authentication, authorisation and payment paths, then a focused test of the endpoints that review flagged.

It costs about the same as one full engagement, and it finds more, because the testing hours are aimed instead of spread. Any consultant who insists on selling you the standard package before understanding which of these you need is selling a package, not an assessment.

## What to ask before you commit

1. "Given what I have described, which of these would you buy, and why?" The answer tells you whether you are talking to a practitioner or a salesperson.
2. "How many days does a person actually spend on this?"
3. "Is a retest included?"
4. "Can I see a redacted sample report?" — this single question filters out most scanner resellers.


---

Abin Antony Security — Abin Antony, Kochi, Kerala. Contact: abina35@gmail.com · https://cs.abinantony.io
