White Box Testing In The Absence of Functional Requirements
Sometimes, lacking requirements, we read the system code to attempt to discern what it was supposed to do, and then write tests based on that knowledge. This can arise when someone is asked to automate tests for a legacy system.
There is a place for white box testing, but it is not a substitute for actually knowing what the system is supposed to do. White box testing without a knowledge of actual requirements also risks enshrining system logic errors in your tests.
An alternative (aside from getting some requirements) is to use comparator tests. You run two versions of a system using the same inputs and then compare the outputs. This kind of test is less precise than a functional test; if the outputs do not match, you know something has changed, but you do not know whether the change represents a new bug, a correct bug fix or intentional feature change.