You are correct in that DevTest records whether or not a given step has passed or failed, but this may not be an indicator of the business reason the step failed.
One approach is to create a property and manage it during a test case using script logic. For example, let's say that you do not want to fail a test case until all the data associated with the test have been iterated. Then, if one or more of the test inputs fails, you want to fail the test and include all inclusive information of which data failed and possibly why that data failed.
To do this, I create a property (usually a String) at the start of the test. As the steps execute, I add behavior to append message information to the property containing key related information and why the data for that key is failing. When the test case ends, I add a final step (usually a JSR-223 step) that determines whether or not the test case passed or failed. The JSR step returns the property value as the response for this step. (e.g., return testExec.getStateValue("myProperty") ). I add an assertion that causes the test case to pass or fail. When the test fails, a user is able to navigate to this step in the reporting console and see the failure information by clicking the step's lastresponse. One might also filter the property to the file system with a file name that includes a datetime stamp. Or, store the result in a database. This enables users to look at the file outside of DevTest, if necessary. The key is to provide information such that a user can identify which data is failing and why.