Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I SLICED UP FUN!
BY J ONATHAN K OHL
thumb on the edge of the screen and try to type, or
A MNEMONIC FOR MOBILE APP TESTING
tap your fingers on the device while using it. If it
Test idea generation is the cornerstone of effective rotates to portrait and landscape modes, make sure
software testing. It’s hard to think of different you try in different modes. See if the application
approaches when testing software, so an easy way to behaves strangely when you rotate it and try to
get started is to use a mnemonic to help guide your manipulate with touch gestures or typing on a
thinking. I call it: I SLICED UP FUN!† keyboard.
This is a mnemonic I adapted from James Bach’s Even the way devices are held can impact their
SFDPOT (San Francisco Depot)1, a testing mnemonic connectivity and how well they respond to
that explores product elements. Each letter in the application inputs. Can you hold the device in such a
mnemonic represents a different approach to testing way and interact with it so that it causes the app you
mobile apps. I have found each of these areas to be are testing to crash or freeze up? What happens if you
effective at revealing problems with applications I am launch the application in each supported orientation
testing. Try using the app on your test device, of the device? (Sideways, upside down, straight up,
focusing on each of these areas, one at a time. Spend etc.)
time in each category to think of and execute
different test ideas.
S: STORE
Here is I SLICED UP FUN! expanded: Mobile apps tend to get distributed online through
special stores. The most well known are Apple’s App
I: INPUTS INTO THE DEVICE Store and the Android Market. For test ideas, try to
find out information about the requirements of
These represent the ways you can interact and
application requirements for store submissions.
control the device. Including:
Sometimes finding out what store(s) the app will be
Built‐in keyboard/keypad submitted to and looking at any public
Touch screen documentation available that outlines guidelines can
Synching with other devices be a treasure trove of testing ideas.
Peripherals that you can plug in to the device
Hold the device differently when inputting– See if you can find anything that might have been
be creative! missed by looking for:
Test the application and try out all the inputs that you Submission specifications
can think of. If it is a touch device, make sure you try Development guide
different combinations with your fingers. Keep a
1
Copyright ©2010 ‐
User guide for error handling, location other programs, particularly built‐in, native
services, permissions for user privacy items, applications and the application you are testing
accessibility, etc. interact. On mobile devices, they can cause your app
to fail. You have to be very conscious of your
L: LOCATION memory footprint and how you shut down and clean
Where you are located can have an impact on what up.
you are testing, particularly if the application
requires an internet connection. Applications may be Are there problems when:
affected by the following: Running multiple applications, utilizing
multitasking
Geo‐location capabilities
Using other applications, then using the
Network dead spots
application you are testing(email, calendar,
Connection issues
texting, note taking, others)
Moving from one data network to another
Notifications appear (new emails, phone calls,
(eg. wifi to wifi, wifi to 3G, 3G to wifi, others)
text messages, other notifications)
Error messages occur (losing connections,
Getting up and carrying your device while testing an
notifications, operating system and other
app is an effective way to find bugs. Just get up, walk
errors)
out of range of the wifi device you are connected to,
and see what happens to the application when you Be creative with your device settings. Find out all the
move from one network to another wifi or other ways you can change the settings on your phone, and
network. Can it handle your devices native messages determine which might have an effect on the
when you change or lose connections? Does it crash application. Spending a couple of hours using the
or freeze if it loses or changes connections? application while changing different settings is
worthwhile. Also spend time exploring ways you can
Also, your location is often different from where the
force error messages.
application is developed. You may speak a different
language than the programmers. Is the application Another interesting interaction is with any time‐
compatible with the language and culture where you based notification, such as calendars, alarms, and
are located? Are words correctly translated? Are built‐in clocks. Applications can behave strangely
meanings correct and clear? Does the application do when they become confused about time, or if they are
something that could be interpreted as funny or interrupted by a time‐related alert. Even using
offensive? If so, the development team needs to know applications in a certain order, or doing things on
those issues. certain days (time changes for example) can cause
interruptions or interactions that the application may
I: INTERACTIONS/INTERRUPTIONS2 have problems dealing with.
Mobile applications have far more hardware
restrictions when they operate than other computers. C: COMMUNICATION
They have less memory and less processing power Mobile apps run on a communication device, a
than a PC, for example. As a result, they are telephone. The primary use for mobile devices is
susceptible to problems when other applications or communication, but the app we are testing may not
operating system functions are running. It’s handle communication interaction smoothly. Here
important to test how the app behaves when other are some communication examples:
applications running at the same time. Furthermore,
any changes made to the device’s preferences can Phone
Texting
have an effect on your app. See how interaction with
2
Copyright ©2010 ‐
Emails D: DATA
Instant messaging
Voicemail messages The “D” in SFDPOT stands for data, in other words,
Others anything the application processes. Anything you can
input into the application is processed in some way.
It is interesting to test how an app interacts with Furthermore, any data that is coming from a server
communication: texting, emails, telephone, voicemail. or third party can have an effect on the application.
There are a lot of combinations to test here: taking Check for:
calls/texts, rejecting calls/texts, interacting with
voicemail. Each of these communication devices take Types of input – special characters, different
languages, etc
precedence over the app you are testing, so how does
Media – see if the app depends on an outside
it handle these interruptions? There are a lot of source to play music, videos or anything else.
scenarios you can try. In some cases, you might be The size of those files and the type of
able to use a communication device while using the communication it uses with a server can be a
app you are currently testing. great source of bugs.
Size of files – if the application uses outside
files, try using different file types
E: ERGONOMICS Frequency of updates – some applications
If you test mobile apps for any length of time, you will require data from a server that is updated
show signs of physical stress. You need to manage periodically to change settings, or to provide
this as a tester, by taking breaks and managing your new content. Find out the schedule of these
time and physical interaction. However, also think of updates and see how the application reacts
the end users. They run into the same problems that when an update occurs.
can make you tired:
Small screens can be hard on the eyes U: USABILITY
A small device means there is no ergonomic These can be some of the most important bugs to find
help from a desk, or chair – you often hunch and log, because they are the issues that often
over to interact with it frustrate end users the most. When you are testing
It’s not uncommon to get a sore back, fingers,
the application, note and log any issues that make
eyes when using a device for any length of
time you uncomfortable, frustrated, angry, or upset. To
find usability issues, look for any actions that are
Use physical cues from your own testing work and awkward, confusing, or slow. Listen to your emotions
analyze whether the application makes interaction – that’s an important source of usability issues.
worse. Are fonts and colors and sizes too small? Are Instructions can be incomplete or misleading, items
there too many steps to click through to get through can be labeled incorrectly, and there may be
complicated workflows? Does the end user have to workflows that make doing what you want to do
type a lot on the small device? Any shortcuts to difficult. If there are aspects of the application that
decrease physical strain, or improvements to display you don’t like and frustrate you, log them as usability
are huge factors with how successful an app is. issues. Sometimes installation, setup or upgrading an
Highlight and report problem areas that make you app can have complicated steps. Are there any
struggle – users will have the same kinds of problems strange configuration interactions with your phone's
if they use the app for any length of time. settings or hardware? Some device updates require
switching power off, removing batteries, and other
things that may be difficult for non‐technical users to
do. Highlight anything cumbersome, frustrating or
confusing for the development team.
3
Copyright ©2010 ‐
P: PLATFORM U: USER SCENARIOS4
Borrowing the “P” from Bach’s SFDPOT mnemonic, This is an incredibly powerful method of finding
looking at the device that the application needs to run problems. In fact, if I am limited to one type of testing
on is important. You may have a device that the approach in a short period of time, this is often the
programmers do not have access to, and their app one I will choose. (Check out Cem Kaner’s paper on
may not work at all, or may work poorly. Your unique scenario testing in the references to help get started.)
device is something that they are depending on you This is a fun way to use the application: imagine two
to test the application, so careful observation and or three real users that you know, and think what
documentation of problems, large or small is they would do when using the application. Try to
important. Also be aware of changes to your device. think of creative users: I always imagine that one
You have little control over operating system annoying family member who struggles with
updates. The provider encourages you to update technology and always wants me to fix their
these, for good reasons. However, new versions can computer or mobile phone. If I pretend to be that
cause an app to fail that worked in a prior version. Be person, what kinds of problems would they find?
aware that updates (even small ones) can cause an What would they struggle with? I also imagine a more
application to stop working. Be sure to find out all the technical user, and someone in between. I try to think
technical information about what device you are of real people and how they would react to using the
using, and what operating system version you have software. To create scenarios, I identify the following
installed when logging a bug.
How is this application supposed to be used?
What problems does it solve for users?
F: FUNCTION What are the goals of end users that this
Functional testing (the “F” in SFDPOT) is the most application helps them solve?
common form of testing. It usually involves
comparing the specification or requirements for an I then create scenarios based on that information. For
app, and verifying that the application does what it example, if I think of a busy office worker, I set up a
says it does. This can often be very simplistic: looking scenario with my phone so that it has a lot of emails,
for items and ensuring they are there and function texts and meeting reminders occurring while I use
the way they are supposed to. To be more creative, the app. You can get very creative here, with a lot of
generate test ideas by asking these questions: other application interaction, as well as trying to
quickly solve a problem or enjoy an experience with a
Can you identify everything that the device under different conditions.
application does?
Have you worked through all the aspects of
the app? Clicked every button? Filled in every N: NETWORK
form? Have looked into default settings and Mobile apps that require network connectivity such
options that are available to you?. as an internet connection are quite susceptible to
Try a tour of the product to identify problems. Since they aren’t stationary objects like a
everything it does3. Try to find commonly
PC, they have a huge dependence on the availability,
used features, and the most obscure. Be
performance and reliability of networks. The path
thorough.
Once you have a good sense of what the from a server to your device can be confusing,
product is supposed to do, does it match what complex and circuitous. What this means is that the
the app developers say it does? If it doesn’t, application may expect connectivity that isn’t
there is a source of problems. If your available consistently where you are testing. In these
impression differs from theirs, they need to cases, the application may fail or crash because of
know that.
timing issues (it takes too long to get responses) poor
4
Copyright ©2010 ‐
connections (lack of signal strength) or moving from other areas you want to focus on in your testing
one network to another. project.
Note: The ideas represented by I SLICED UP FUN! are
there to help get you started, but they are by no
means exhaustive. I recommend using other models
to help generate test ideas, particularly in the
areas of performance and security, which I don’t
touch on here. If you think of other ideas, be sure to
try them out, and use this concept in conjunction with
5
Copyright ©2010 ‐