- What We Were Actually Looking At
- Why a Security Audit Lands Differently Than a Bug Report
- Getting Oriented in Code Nobody on Our Side Had Written
- Where AI Genuinely Helped
- Two Days, and What That Number Actually Means
- The Report Was the Real Deliverable
- What Changed on the Developer Side
- Limits Worth Being Clear About
- Where the Project Landed
- What We Would Tell Another QA Engineer
- Inherited an Application You’re Not Sure You Can Trust?
- FAQs
- What is AI-assisted penetration testing?
- Can AI replace QA engineers or professional security testers?
- How does AI improve security testing speed?
- What should a penetration testing report include?
- Should you run a security audit on an inherited application?
- Is AI-assisted security testing safe to rely on?
- Does AI-assisted QA work for functional testing too?
Imagine a client walks in already burned once, and now a security audit just handed them a second reason to worry.
Here is what happened. They had given months and spent thousands of dollars on a build with another agency, and the client still did not have what they paid for. Progress had stopped. The output did not match the invoices. They were done waiting and were ready for a fresh start.
There is nothing unusual here. Picking up someone else’s half-finished project is common for any agency that does custom software development. You learn the codebase and start fixing what is broken.
But this project had a twist: before we wrote a single line of code.
Before handing us anything, the client brought in a third-party security firm to audit the existing application. Smart move, especially after the last experience they had. The audit came back flagging multiple security vulnerabilities.
Suddenly, the client was facing two problems instead of one. They already suspected the product was not worth what they paid. Now they had proof it might not even be safe.
That is where we came in, to figure out just how bad it really was.
What We Were Actually Looking At
We want to be precise about our starting position, because it shapes everything that follows.
We had not written a line of this application. Nobody on our side had. We had no history with the architecture, no accumulated knowledge of which modules were fragile, no memory of why a particular decision had been made two years earlier. The people who could answer those questions were at a different company and were no longer involved.
An external audit had flagged security vulnerabilities in a codebase that was, to us, completely unfamiliar.
Our assignment was basically a complete security assessment of that application. Not a spot check on the audit findings. A full assessment, so the client could make an informed decision about the state of what they owned.
One more thing worth saying plainly: this was our first full QA penetration testing assignment. We had worked on QA before. We had done quality assurance testing across multiple projects. But a complete security assessment is a different discipline from functional QA, and we were not going to pretend otherwise. We decided that we would use AI as an assistant throughout the investigation and would validate everything ourselves before it went into a report. Claude was the tool we used. It was an assistant, not the tester.
Why a Security Audit Lands Differently Than a Bug Report
A functional bug is easy to have a conversation about. It either happens or it does not. The client can usually see it, and the fix is scoped in an afternoon.
Security findings do not behave that way.
Functional QA asks whether the application does what it is supposed to do. Security testing in manual QA asks what else the application can be made to do. An application can pass every functional test it has ever been given and still carry gaps that nobody looked for, because nobody was assigned to look.
That is what makes late-stage findings so uncomfortable. The client had already spent 18 months and a real budget on this build. Being told there were security vulnerabilities in it did not just create a technical task. It raised a question about whether the whole thing was sound.
Answering that question was the job.
Getting Oriented in Code Nobody on Our Side Had Written
The hardest part of the first day was not testing. It was comprehension.
Before we could assess anything, we had to understand how the application was put together. How data moved through it. Where the sensitive operations lived. Which parts of the system had been built carefully and which had clearly been rushed.
Normally, that understanding gets built slowly, over months of working on a product. We did not have months.
This is where AI-assisted QA made the biggest practical difference, and it is not the part people usually talk about. Working with Claude, we could move through unfamiliar code far faster than we could reading it cold. We could ask what a section was doing, work through how it connected to the rest of the system, and get a usable mental model of the application in hours instead of weeks.
That is not a small thing. Most of the cost of inheriting a codebase is the orientation period, and AI-assisted security testing compressed it.
Where AI Genuinely Helped
Across the assessment, the AI assistance was useful for:
Where AI Genuinely Helped
- Reading and explaining unfamiliar code quickly, so we could build a working understanding of the application
- Reasoning through observed behavior and what it might indicate
- Helping decide where to focus attention instead of examining everything at equal depth
- Articulating the root cause of a finding in language a developer could act on
- Structuring documentation while the investigation was still fresh
Where It Stopped
Every one of those items is preparation. None of them is a conclusion.
Deciding whether something was actually a vulnerability stayed with me. Confirming it in the running application stayed with me. Judging whether it mattered in this system, with this architecture, stayed with me.
We verified every single finding manually before it went into the report. Not most of them. All of them.
That rule existed for a reason. An AI assistant will follow a line of reasoning wherever it leads, and it will describe a theoretical problem in the same confident tone it uses for a real one. If we had delivered unverified output, we would have handed developers a list of maybes dressed up as findings. That damages trust faster than reporting nothing.
Two Days, and What That Number Actually Means
We identified and confirmed several security flaws within two days and wrote them down as part of a report that development teams could start working on at any moment.
We also decided to be careful with the numbers, as that part is most likely to be misunderstood by everyone.
What “two days” does not mean: Two days were not spent by AI running a QA penetration test by itself. It was a QA engineer working through investigation, manual verification, and documentation with AI assistance throughout. The AI accelerated the process. It did not perform it. Take the human out, and there is no assessment, just generated text.
It also did not replace what the third-party security company did. Their audit was independent, and independence is exactly what gives an external assessment its value. What the internal work did was respond to that audit properly, on an unfamiliar codebase, at a speed that kept the project moving.
The speed came from the combination. QA discipline plus AI assistance. Neither one alone would have produced it.
The Report Was the Real Deliverable
Finding a vulnerability is not the same as fixing one. A finding that a developer cannot locate is not resolved. It is queued.
So we put most of the effort into the report. Each finding included:
|
1
|
Evidence of the VulnerabilitySo it could be seen rather than argued about. |
|
2
|
Source Code ScreenshotsHighlighting the affected areas, so nobody had to hunt for the location. |
|
3
|
A Clear Explanation of the Root CauseSo the fix addressed the cause and not the symptom. |
|
4
|
Actionable RecommendationsSo developers had a direction rather than a warning. |
That combination removed the reproduction and location work from the developer’s plate entirely.
Anyone who has handed a vague security ticket to a development team knows the pattern that follows. The developer tries to reproduce it. Something does not match. A discussion starts about whether the finding is even real. Days pass before a line of code changes, and almost none of that time is spent fixing anything.
Evidence plus location plus root cause collapses that cycle. The developer opens the report, sees the affected code, understands why it is a problem, and starts working.
On an inherited codebase, this matters more, not less. Our developers were as new to the application as we were. Telling them “there is an issue somewhere in this area” would have cost days. Showing them the exact code cost minutes.
What Changed on the Developer Side
The detail in the report made it straightforward for developers to understand the exact location and cause of each vulnerability. That reduced debugging time and enabled faster implementation of security fixes.
There was a quieter effect too, and it is worth naming for anyone in an engineering management role.
Security findings can turn adversarial quickly. QA reports a risk, development questions the severity, and the conversation becomes about credibility instead of remediation. Well-evidenced findings take that argument off the table. When the evidence is sitting in front of everyone, the discussion moves straight to how to fix it.
Documentation quality is not administrative overhead in vulnerability assessment work. It is the mechanism by which findings turn into fixes.
Limits Worth Being Clear About
If you are considering a similar approach, these are the parts we would not skip.
⚠️ AI-Generated Findings Require Human Validation
This is the whole game. An AI assistant can produce a confident, well-written description of something that is not a real vulnerability in your application. Manual verification of every finding is not a nice-to-have step; it is what separates a security report from a plausible-sounding document.
✅ Security Testing Needs Proper Authorization
Testing an application you are not explicitly authorized to test is a legal problem, not a technical one. In this case, the assessment was assigned work on an application the client had brought to us and asked us to evaluate. Scope and permission should be settled in writing before any testing starts.
✅ Context Still Has to Come From a Person
Whether a finding matters depends on the architecture, the data involved, and how the application is deployed. That judgment does not come out of a tool.
✅ Internal Assessment Complements External Assessment
As general industry guidance rather than a claim about this project: an independent security review has value precisely because it is independent. AI-assisted QA makes internal security work faster and more thorough. It does not make outside expertise unnecessary.
Where the Project Landed
The assessment strengthened the application’s overall security posture. The project moved forward with significantly improved security standards, and the client acknowledged the quality of the QA and security testing work.
For a client who had just spent 18 months and a real budget getting an unsatisfactory result elsewhere, that mattered beyond the technical outcome. They had arrived with reasonable doubts about whether anyone was going to be straight with them about the state of their product. A report with evidence in it is a hard thing to argue with, in either direction.
The audit findings stopped being a reason to worry about the project. They became a work item with a clear owner and a clear path.
What We Would Tell Another QA Engineer
AI does not replace QA expertise. We say that as someone who leaned on AI heavily during our first QA penetration testing assignment and still had to make every real decision ourselves.
What AI does, when used properly, is take friction out of the parts of the work that slow you down. It shortens the time between suspicion and conclusion. It makes an unfamiliar codebase readable in hours instead of weeks. It helps you produce better evidence and clearer documentation. It improves how your findings land with developers.
- The judgment stays human.
- The validation stays human.
- The accountability stays human.
This project arrived with 18 months of someone else’s history attached to it and a security audit that had already found problems. What resolved it was not a longer timeline or a bigger budget. It was a QA engineer using AI deliberately, verifying everything by hand, and writing a report good enough that developers could act on it the same day.
That combination held up. It is worth building into how a team approaches application security testing rather than saving for the next emergency.
Inherited an Application You’re Not Sure You Can Trust?
Elsner’s QA team runs evidence-backed security assessments — every finding manually verified, documented with root cause and location, so your developers can act on it the same day.
FAQs
What is AI-assisted penetration testing?
AI-assisted penetration testing is a security assessment carried out by a human tester who uses an AI assistant to speed up parts of the work. The AI supports code comprehension, reasoning about observed behavior, and drafting documentation. The tester still designs the assessment, verifies each finding manually, and owns the conclusions.
Can AI replace QA engineers or professional security testers?
No. AI can accelerate investigation and documentation, but it cannot confirm that a suspected issue is real in a specific application, judge whether it matters given the architecture, or take responsibility for the result. In this assessment, every finding was manually verified before it entered the report.
How does AI improve security testing speed?
Mostly by reducing comprehension time. On an unfamiliar codebase, understanding how the application is built normally takes weeks. AI assistance shortens that to hours, which leaves more of the schedule for actual testing, verification, and reporting.
What should a penetration testing report include?
At minimum: evidence of each vulnerability, the exact location in the source code, a clear explanation of the root cause, and specific recommendations for fixing it. Reports built this way reduce developer debugging time because the reproduction and location work is already done.
Should you run a security audit on an inherited application?
As general guidance, yes. When you take over an application built by another vendor, you inherit its security posture along with its code. Assessing it before further development means you find out what you are dealing with early, rather than after launch.
Is AI-assisted security testing safe to rely on?
It is safe as an accelerator and unsafe as an authority. AI-generated findings can be confidently wrong. Treat every output as a lead to investigate rather than a conclusion, verify manually, and make sure testing is properly authorized in writing before it begins.
Does AI-assisted QA work for functional testing too?
The same principle applies across manual QA testing and automation testing. AI is useful for generating coverage ideas, reading unfamiliar code, and drafting documentation. Deciding what to test and whether a result is acceptable stays with the engineer.
About Author
Tarun Bansal - Technical Head
Tarun is a technology enthusiast with a flair for solving complex challenges. His technical expertise and deep knowledge of emerging trends have made him a go-to person for strategic tech initiatives. Passionate about innovation, Tarun continuously explores new ways to drive efficiency and performance in every project he undertakes.