Testing heuristics

These are some oftentimes useful questions you can ask yourself when coming up with test cases. Not all will apply every time, but this is a good list to start thinking:

  1. Does my role determine what I can see?

    1. If so, should components / interactions be hidden, disabled, display validation errors, or something else?

  2. Do my preferences(language, units) affect what i can see?

    1. If so, what about my interaction with the app changes?

  3. Does my role determine what I can do via the API?

    1. If so, how should the API inform the user of their insufficient access?

  4. Do dates play a role? Should I logically be able to assign a date in…

    1. the past

    2. today

    3. in the future?

  5. Are we making any inappropriate assumptions about dates? For example, just because a user is entering data today doesn’t necessarily mean the real world event took place today.

  6. What happens if I switch farms while interacting with this feature?

  7. What constraints should be placed on inputs?

    1. Should the UI / API restrict large / small inputs?*

    2. Should the UI / API restrict to a particular type of input, e.g. numbers, letters, alphanumeric, etc.?

    3. Are there strict formats that should be enforced, e.g. an email address?

  8. Are there any expectations that data will be transformed?

    1. Is the data I input returned in the expected way via the API / UI?

  9. Are there any cascading effects of performing a particular test?**

  10. Should we be handling this interaction synchronously or asynchronously. If asynchronously…

    1. What does success mean?

    2. Do we allow partial success?

    3. What failure cases do we need to handle?

    4. How do we report back the outcome, e.g. email, notification, or other

  11. Are we integrating with an external service?

    1. Do we need to ensure state is consistent between LiteFarm and the external service?

    2. What failure cases do we need to handle?

    3. How do we report back the outcome, e.g. email, notification, or other

 

 

 

 

 

* For example, latitude and longitude can be entered to any number of decimals. However, 6 decimal places defines a location or polygon with 10cm of precision. It’s hard to imagine a situation in LiteFarm where a tool is likely to provide greater precision than 10cm or a user would need greater precision than 10cm. Therefore, it makes a lot of sense to limit these inputs to 6 digits

** For example, when abandoning a crop plan, we need to verify all incomplete tasks associated with that plan are also abandoned.