1. Location estimates are noisy--you have to integrate over many samples to get a statistically significant result
2. Location estimates are 2-dimensional. The noise and statistics for lat are not the same as those for lon
3. Location estimates are dependent upon the spatial environment--radio signals are directional and they are affected by amplitude variations, antenna location, antenna visibility, changes in the immediate environment, etc.
4. Location estimates are affected by the quality and availability of reference signals and other factors like you mentioned: speed, orientation, changes in motion state (idle, walking, driving, etc), geofencing, etc.
You will need to include all of these factors in your testing to be able to determine the quality of your measurement tool.
I can record a sequence of events that includes just about anything the phone can do: lat/long changes, speed, orientation, changes in motion state (idle, walking, driving, etc), geofencing, bluetooth state changes, wifi state changes, etc. Everything timestamped.
But, how do you play this sequence back in a way that makes the app think you're taking the same trip again? I was hoping the OS (iOS and/or Android) would provide a mechanism for this. And it does, but only lat/long. Nothing else.
The missing information is very important when trying to debug what's going on in my application on any particular trip. Now, I know I can create my own version of CLLocation that will generate these events whenever I want them, but I was hoping to find a solution that didn't require changing application code to support. I would like to take my findings and create a product that can help people do this sort of testing and requiring them to switch out CLLocation everywhere it's used in their application is a difficult sell.