ProideaClub Blog

Innovate your Dreams

Common Bugs When Testing iOS Apps

The bugs we’ve encountered ranged from app specific usability issues to general issues common amongst many apps. Today, we want to highlight 5 issues that we’ve encountered repeatedly, using some of the most popular apps as examples. The list below is presented in no particular order.

 

1. Handling Bad Network Connections

iOS devices are inherently mobile, so apps cannot assume permanent, fast connections to the internet. Tasks requiring network connections should generally be asynchronous and notify the user if they fail due to lack of connectivity. Facebook Messenger and iOS FaceTime handles this nicely.

 

In Facebook Messenger, a warning message is displayed prominently, indicating that Internet connection is required for the app to function.

 

In FaceTime, an alert is displayed with buttons that take the user directly to network settings.

On the other hand, Vine and Instagram do not handle this well.

 

In Vine, users see a sad face and posts simply do not load. There’s no indication that this is caused by network connectivity.

 

Instagram shows a large reload button on images that cannot load. This button has no effect while network is off.

 

2. Handling Chinese (extended) Keyboard

iOS has a number of international keyboards built in. While most of these keyboards are of the same size, a few keyboards have extended sections. The Chinese Pinyin keyboard is an example of the extended keyboard. Apps should not assume a fixed keyboard size and should adjust their content appropriately.

 

The Google+ app, as shown above, has a small button above the normal keyboard that hides the keyboard when pressed.

 

However, when the Chinese keyboard is used, the extended keyboard covers most of the button, rendering it useless.

 

Using the device in landscape mode exacerbates the problem. In Twitter, the extended keyboard, custom buttons, navigation bar, and status bar combined take up almost the entire screen, leaving no room to display the input text field.

 

3. Handling Privacy Settings

iOS privacy settings control third party app access to photos, locations, and contacts. Apps needing access to these assets need to handle cases when access has been denied either inside the app or outside through system settings. A great way to handle this is to let the users know about the necessary permissions and give them instructions on how to turn them on.

 

A good example of how to handle this is the Facebook app. When it lacks permission to access location, it shows a clear message with step-by-step instructions for users on how to grant access.

 

On the other hand, when Vine lacks permission to access location, it gets stuck searching for nearby places with no indication of what’s wrong.

 

4. Validating User Input

Many apps allow users to input username, birthdate, or other account information. Basic input validation should be implemented, and if the user’s input is invalid, a clear explanation should be presented.

 

Skype does not validate user’s birthdate, so a completely bogus date can be entered.

 

Path has very few restrictions for usernames. In the screenshot above, the username is set to a large number of blank spaces followed by a period. Path does not allow usernames to contain only blank spaces and will fail silently (i.e. it does not save the username and shows no explanation).

 

5. Handling Simultaneous Button Presses

iOS devices support multi-touch and apps should properly handle cases when users intentionally or accidentally touch multiple buttons at the same time.

 

In Pinterest, tapping ‘Pin it’ and ‘Send’ at the same time when viewing a pin will cause the app to enter a bad state.

 

Conclusion

As we’ve illustrated above, common issues can be found even in some of the most popular and mature apps. By sharing experiences we gained from testing, we hope to help improve apps built by our readers. There’s a lot more we’d like to share in future posts. If you have any thoughts or questions regarding testing, don’t hesitate to contact us at support@rultech.com

 

Rultech Blog – WordPress

Rultech Blog – Blogspot

Rultech Knowledge Base – Knowledge Base

Pro!deaClub Blog – Blog

Pro!deaClub – Blogspot

Usefull Plugins for Xcode

What’s this all about?

This is just a short collection of some useful Xcode 4/5 plugins I use. Most of us Cocoa developers, I guess, are looking about for making our development environment a more friendly and “warm” place with features enriching the development experience.

This list is far off being complete and will be extended permanently. So if you like it you should take a look at it from time to time.

 

UncrustifyX

Xcode plugin to uncrustify the source code opened in the editor.

UncrustifyX Github-Repository.

 

XCFixins

This project includes plugins (known as fixins) that extend Xcode and fix some of its annoying behaviors.

XCFixins Github-Repository.

 

Xcode_beginning_of_line

XCode 4 plugin to make HOME key jump to the first non-whitespace line of code.

Xcode_beginning_of_line Of Line Github-Repository.

 

Dash Plugin for Xcode

This plugin allows you to use Dash (I think, this is a Must-Have!) instead of Xcode’s own documentation viewer when using option-click (or the equivalent keyboard shortcut) to view the documentation for the selected symbol.

Dash Plugin Github-Repository.

 

Exterminator

A magic button in Xcode to exterminate the current project’s DerivedData directories.

Exterminator Github-Repository.

 

KSImageNamed

Xcode plug-in that provides autocomplete for imageNamed: calls.

KSImageNamed Github-Repository.

 

ColorSense

Plugin for Xcode to make working with colors more visual. Every time when place the cursor on a UIColor/NSColor code fragment it will show the current color of this code as an overlay. By clicking this color overlay you can edit the value just with the standard OS X color picker.

ColorSense Github-Repository.

 

Mini Xcode

This is a plugin that makes it easier to run Xcode without the main toolbar. It adds keyboard shortcuts for selecting the active scheme and device, and a compact popup menu in the window title bar that shows the currently selected run configuration.

Mini Xcode Github-Repository.

 

Lin

Xcode4 plugin showing completion for NSLocalizedString andlocalizedStringForKey:value:table:.

Lin Github-Repository.

 

XVim

XVim is a Vim plugin for Xcode. The plugin intends to offer a compelling Vim experience without the need to give up any Xcode features..

XVim Github-Repository.

 

Fuzzy Autocomplete for Xcode

A Xcode 5 plugin that adds more flexible autocompletion rather than just prefix-matching.

Please read also this very interesting article of the developer of this plugin about the way of reverse engineering Xcode with dtrace.

Fuzzy Autocomplete Github-Repository.

 

XToDo

A plugin to collect and list the TODO, FIXME, ???, !!!

XToDo Github-Repository.

 

ClangFormat

An Xcode plug-in to to use clang-format from in Xcode. With clang-format you can use Clang to format your code to styles such as LLVM, Google, Chromium, Mozilla, WebKit, or your own configuration.

ClangFormat Github-Repository.

 

VVDocumenter

Xcode plug-in which helps you write Javadoc style documents easier.

I use this plugin constantly!

VVDocumenter Github-Repository.

 

KFCocoaPodsPlugin

Xcode plug-in for CocoaPods with pod commands/console output, user notifications & code completion.

KFCocoaPodsPlugin Github-Repository.

 

Alcatraz

Alcatraz is an open-source package manager for Xcode 5. It lets you discover and install plugins, templates and color schemes without the need for manually cloning or copying files. It installs itself as a part of Xcode and it feels like home.

Alcatraz Github-Repository.

 

SCXcodeMiniMap

SCXcodeMiniMap is a plugin that adds a source editor MiniMap to Xcode.

SCXcodeMiniMap Github-Repository.

 

Rultech Blog – WordPress

Rultech Blog – Blogspot

Rultech Knowledge Base – Knowledge Base

Pro!deaClub Blog – Blog

Pro!deaClub – Blogspot

 

 

%d bloggers like this: