I was recently asked to come up with a framework to benchmark loading time expectations based on the tasks being performed in the app.
I found that there were three categories in which I could define how time was used by the application (tentatively named functions, tasks and processes, anyone know standard terminology about this?):
A: (functions) any "busy" time in the application that doesn't require any feedback (like a progress bar, or mouse unavailability) to the user while performing the task. For example, saving a value on a field (which shouldn't require much time); any "instant" operation.
B (tasks) any "busy" time in the application that requires status feedback to the user, such as a busy cursor, a progress bar, a thinking bar, etc.
C (processes) any "busy" time that will disable the application for as long the process is happening and takes longer that what a user would wait sitting in front of the device. Like for example syncing a huge database overnight.
The image below, explains the former in terms of time and helps categorize Performance test scenarios in terms of the expected time of completion and developers best-case-scenario expectations.
I came up with this to standardize the ways we can allow our application to behave (as I couldn't find anything about it), but a) I was wondering whether someone had a better idea on how to manage loading-time expectations or how to categorize loading time as a non-functional requirement, or if someone thinks I'm missing something?
The values mentioned there are kind of arbitrary and the marks are not precise, however, I think the pattern is, and its interesting.
b) would it be better to measure the time that certain operation within our application takes and from there categorize it under a specific name or feedback type? (and if so, how do we push the application's performance further?)