October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk4 min

Every real bug I found came from running the code, never from reading it

In an Oracle ADF to Spring Boot migration, the defects that changed behavior appeared only when the generated endpoints were called and their results compared with the original application.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

In one Oracle ADF to Spring Boot migration project, the defects that changed behavior surfaced only after the generated endpoints were called and their results compared with the original application. Unit tests, compilation of generated projects and schema validation had all passed before that. The account comes from software developer Mohamed Essam’s first-person essay on DEV Community, dated September 16 (the page as accessed shows no year).

What the earlier checks had established

Essam’s project had a set of structural and partial runtime checks, and he reports that all of them passed. The figures below are his own project counts. They have not been independently audited, and the article does not give a year for them.

As an Amazon Associate I earn from qualifying purchases.

Check Reported figure What it exercised Limit the author identified
Unit tests 192 Generated SQL text They checked the SQL text, not what a call did at runtime
Compilation of generated projects 263 real applications Whether the generated code compiles Compilation does not run any endpoint
Schema validation A sample started against a live Oracle database JPA mappings against the real schema Did not exercise the native query
ADF attribute mapping 3,311 of 3,312 attributes mapped or explained by a diagnostic Attribute coverage A coverage count; it does not show that returned data matches the original
Acceptance tests 45 against a real database Not stated Not stated

Essam’s conclusion from this experience is blunt: “I now assume that anything which has only passed structural checks is probably wrong in some way I haven’t looked for yet.” The title carries the same point: “Every real defect this project has ever had came from the second kind,” meaning running the software and comparing results with expected behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Three defects that the earlier checks did not expose

When a script called every endpoint of one real application, roughly half returned HTTP 500. Tracing those failures and the wrong results behind them turned up three defects.

Named SQL parameters were not passed

The generated native query kept SQL containing named bind variables, but the code did not supply those parameters at execution time. Compilation and schema validation never ran that query, and the unit tests inspected the generated SQL text instead of the call’s behavior. The failure only appeared when an endpoint was invoked.

Entity names collided

The migration resolved entities by simple class name. Two different fully qualified classes, such as a billing Customer and a CRM Customer, could be confused with each other. The result is the most instructive case in the project: the endpoint returned HTTP 200 with well-formed JSON while reading rows from the wrong table. A healthy status code and a valid response shape told the author nothing about whether the right data was returned.

A view filter was lost

A WHERE clause that narrowed an ADF view was not carried into the generated endpoint in one case. The endpoint returned more rows than the original. Essam points out that when a filter encodes a row-level access rule, the same migration error can also expose data that should stay hidden.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Did you actually call the endpoints?

Essam’s testing change was a command that starts the generated application, calls each published endpoint, and reports which endpoints served data, which were correctly denied, and which failed. A practical version of that check looks like this:

  1. Start the generated application against a database loaded with the same seed data the original ADF application used. Confirm the seed first (see the fixtures section below).
  2. List every published endpoint and record the ADF view, entity or resource it replaces.
  3. Call each endpoint with the same inputs on both systems. Repeat the calls for each role you use and for an unauthenticated request.
  4. Compare the returned rows with the rows the original application returns for the same input. Do not stop at the status code or JSON shape.
  5. Label each result as served correctly, correctly denied, or failed. Investigate every HTTP 500, and every 403 where the original application’s grant would have allowed the call.

A 403 can be the correct answer

A denied request is not automatically a bug. Essam notes that a 403 can be correct when the original ADF resource had no grant. The comparison therefore has to include the source application’s authorization policy. For each endpoint, record which grant protected the original resource, then check that the generated endpoint denies the same roles and allows the same ones. Filters that act as row-level rules belong in this check too, because a missing filter can widen access even when every role is correctly authorized at the endpoint level.

Verify the fixtures before blaming the code

Essam twice investigated empty responses that turned out to come from failed INSERT statements in the seed script, not from broken queries. Before you attribute a surprising empty result to application code, confirm that the seed ran cleanly and that each seeded table holds the rows you expect. A query that returns nothing is only evidence of a query defect once you know the data is there.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What this evidence does and does not show

The account rests on one author’s migration project. The counts are self-reported, and the article does not provide an external study or benchmark comparing code reading with execution-based testing. It therefore does not establish that reading code or running structural checks is generally useless, and it does not show that running the software finds every defect. What it does show is narrower and still useful: in this project, checks that never called the endpoints missed behavior defects that calling them revealed. The article also names the author’s MIT-licensed assessment tool, adfmig, which runs on the user’s own machine.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.