Test Ideas — Input Methods
There are many different exercises I do every now and then to practise testing. Many of them have something to do with generating test ideas. Perhaps because that really is an essence of testing — trying out many different ways is a structured way and observing what’s going on. This time, I’ll do one of such exercises here, it’ll be related to input methods.
I guess I don’t really need to explain what input methods are. In general, that’s anything that enables me, as a user of a product, to interact with it and input text, images, documents, etc. Input methods can be specific to a particular product. In my case that’s mostly a web application, mobile and tablet application, or a desktop application.
Without further ado, here are some ideas that come to mind:
- keyboard — that’s sort of obvious :) although I’d take it a bit further and test using only a keyboard. It can then become interesting since some elements might, for example, not become reachable with only a keyboard. How about different keyboards? E.g. where’s no single Del key on a Mac device (at least on some of them), so if your app reacts on Del somehow, Mac users will have to press Command + Backspace, that’s already a different experience.
- mouse — again, sort of obvious, people use it a lot, testers as well. But how about using only a mouse? It then probably means using some sort of virtual keyboard, which might already be a bit problematic. How about copy and paste using a mouse? Still no bugs?
- virtual keyboard — just mentioned it above :)
- fingers — if a mobile or tablet (sometimes even a laptop) is used, people use their fingers. Fingers have at least one disadvantage, their are much bigger than a pointer of a mouse, so if some elements are too small or too close to each other, clicking them might become problematic.
- voice — voice could be used to interact with a computer, it might sometimes perhaps speed things up, or it might be used as an assistive technology.
- assistive technology — there’re way too many of them, but to list just a few: trackball mouse, adaptive keyboard, eye-tracking device, head wand, mouth stick, … There is a nice article on WebAim about assistive technologies for people with motor disabilities.
- shortcuts — this is not really a device like many of the ones mentioned above, but shortcuts could be used to interact with an app. How do they work? Do we want them to work? Shortcuts can also interfere with other software and the operating system. That’s another risk to investigate.
- Screen reader — a screen reader can sit between a browser and a user (a user’s input device like a keyboard and mouse), which can create additional problems — some elements might not be correctly announced by the screen reader, app shortcuts can interfere with the screen reader’s shortcuts, etc.
- different languages — again, not really a device, but if I stretch it a bit, I can say that I might use a keyboard designed for a different language and perhaps that keyboard is missing some keys.
- copy&paste — copy and paste might sometimes work differently than just typing in some text using a keyboard. How about copy and paste when working with pictures?
- drag&drop — some apps allow for drag&drop, that typically happens in places like picture or document upload.
- swiping — an integral part of mobile and tablet devices.
- a different person — how about if you are busy and you ask a friend, your parent, your kid to use the app instead of you? Would they understand the app? Would they succeed without further training? It’s easy to know what to do when you’re already used to something, but novices might struggle quite a bit sometimes.
- API — perhaps there’s not only a GUI, but also some API that could be used to input things. How does that work? How would a new programmer work with it? Is there a good enough documentation?
That’s what I’ve been able to come up with right now. I don’t claim this is a complete list, or that one should test with all of these. The context matters a lot. But it’s a nice exercise to do once in a while to get used to generating test ideas. Is there any other input method that you have tested with? Or anything obvious I’ve forgotten to include?