Saturday, 19 July 2014

Google I/O 2014

Just in-case you missed the keynote from Google I/O, we summarise some of the key announcements in Google and android world, before we start Google, presented some interesting statistics on mobile momentum, lets go through these.

Android currently has 1 billion 30 day active users, which is double than last year. These users send 20 billion text messages on a given day and take 1.5 trillion steps and take 93 million selfies each day.

androidone

Google is working on set of hardware reference platforms to bring android to low cost mobile device in emerging markets. This android version is same OS which is used for high end smartphones. All software updates will be published from Google via play. Google is starting this journey in India and would be launching with 3 OEMs in fall this year.

Platform Evolution

Android L release

This is the biggest release in history of android since its launch of open SDK. The L release has over 5K new APIs, with bold new look and radical new approach to design.

Google introduces material design for android, chrome, android wear and all of Google. With material design, developers can now specify a depth and framework will render it in correct perspective. Material design provides focus to content, developers can now color all framework elements in app to match the brand.

Here are few other new key features introduced

  1. New material theme, with new color icons, feedback ripples, new widgets, Recycler view (List View 2.0), card view.
  2. New graphics, animations and Iconography
    1. Real time soft shadows
    2. Activity transition, animation curves, animations reveal
    3. Touch feedback ripples
  3. Notifications - Notifications are now incorporate on lock-screen and developers have all access to these,  another new feature is heads up notification.
  4. Web-view updates and new support for open standards like web-audio, webGL and webRTC.
  1. Google has also made significant improvement in performance with new ART run-time, ART introduces Ahead-of-time (AOT) compilation and new Improved garbage collection.


androidwear

Android wear supports both circular and square screens. Developers can read and control data from sensors on these devices and provide contextual information to users. Android wear SDK support development of custom UI based on material design, voice actions and send data to mobile.
Android wear SDK is now available for developers

androidauto

Android platform redesigned for automotive, to use the connected apps and services in car. People use navigation, communication and music extensively  in car and android auto puts them on top. Android auto will contextually provide right information when users need it. Android auto SDK will be available starting with audio and messaging APIs.

androidtv

Android Google TV is now back as android TV, super simple lean back experience, provides content recommendations and comes with new voice search capabilities that goes beyond searching for movie titles and TV shows. Android TV comes with full Google cast support to send content from mobile to TV
Android TV platform is coming this fall and has leading television manufacturers already on board like, Sony, Philips and Sharp, 2015 models of these brands will run on android TV. ADT1 is available for developers right away for development.

Google fit

Open platform designed to help users keep better track of their fitness. Google fit platform provides single set of APIs to manage fitness data from apps, devices and wearable's and provide users complete picture of their fitness. Fit SDK will be available for developers in few weeks from now.

Testing Tools

Appurify is cloud based mobile device testing platform. Appurify provides  global support testing, connectivity simulation and cross platform support. Appurify provides detailed info on log data, network issue and power consumption by a device.
Appurify will continue to be cross platform on both Android and iOS.

Reference

Friday, 13 June 2014

Using Facebook’s Custom story and Open Graph story with iOS

With the increasing popularity of various social networking sites the important aspect that apps need to cover is that they must have the ability to connect to the user’s profile and post a status update using the app.


Sharing to Facebook from your iOS app can include a variety of operations like posting a link, sharing an update and posting a story. Now-a-days, you can see a lot of Facebook user’s updating their status that is structured in the form of a story, these posts allows you to tag your friends and check-in into places. This kind of post can be structured from your app as well. A story is more appealing in a way that, it is structured well than just posting a plain sentence status updates.

A Facebook story contains two major aspects
  • A noun (Object)
  • A verb (Action)
Configuring a story involves the integration of the noun and the verb meaningfully.

Facebook has provided some default objects and actions called common action, these actions are used in common stories. Common stories are nothing but actions that are applicable to a large chunk of population, they may be as simple as cooking a recipe or going for a walk.  You can find the list of common objects and actions at https://developers.facebook.com/docs/reference/opengraph.

If your story tells something other than the common stories, you need to customize using the custom stories. By using Custom stories the user is given more flexibility to create his story according to his needs. You can add your own action that may be specific to your app. As Facebook has recently launched the second version of the graph API there is not much online resource that can be found.

Open graph story Using the Facebook common objects and actions:

     Ask for publish_actions permission to post anything to Facebook on behalf of the user.
This is demonstrated in the Facebook login given in the link below.
https://developers.facebook.com/docs/facebook-login/ios/v2.0

  Creating an object: Create a mutable dictionary of FBGraphObjectForPost (because we post the object) and set the object properties by specifying the property as a key for the graph object. The og:title and og:type properties are the only 2 required fields for creating an object.

NSMutableDictionary<FBGraphObject> *object = [FBGraphObject openGraphObjectForPost];
object[@"og:title"] = @”Run”;
object[@"og:type"] = @"fitness.course";


   Create an action:  Create a mutable dictionary of FBGraphObject and set the object properties by specifying the property as a key for the graph object.

NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject];


    Linking the action to the object: This is as simple as setting the <object> property of the action to the FBGraphObjectForPost that you have previously created.

action[@”object”] = object;

Posting the story: Call Open graph API to post the story!!

[FBRequestConnection startForPostWithGraphPath:@"me/fitness.runs"
 graphObject:action completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            //handle the result and error here
}];


Custom story:

     Ask for publish_actions permission to post anything to Facebook on behalf of the user.
This is demonstrated in the Facebook login given in the link below.
https://developers.facebook.com/docs/facebook-login/ios/v2.0

   Go to the open graph page in your Facebook app and click on create a custom story. Add the story title and the actions and objects relation to your story.

     Follow steps 2 and 3 from the open graph.

     An important difference in posting a custom story is in the specification of the path in the API call to post the story. In posting open graph story, the path will be the me/<object type>.<action type> but in custom story, it is me/<fb app namespace>:<action type>.

[FBRequestConnection startForPostWithGraphPath:@"me/x_fitnessapp:run"
 graphObject:action completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            //handle the result and error here
}];

The Facebook open graph post looks like the image shown below.





You can even link an existing object with a custom action. For example, in my application, the requirement was that an athlete will be able to run, swim and bike a course object. Facebook has provided common actions of only run and bike but not swim. So, I created a custom action of swim for the same course object associated with run and bike actions.

While creating a custom action, its not enough if you just create the action alone. You also need to create the respective custom story too. If that is not done, posting custom action throws an error.




Author

Hridya B R and Tejasvini Vasudev

We sincerely hope that the above tutorial was helpful. If you would like any clarification on the above post, write to us at TalkToUS@hummingwave.com

Tuesday, 10 June 2014

Mobile App Testing: Strategies and Best Practices

Overview

It’s an era of mobile savvy users where thousands of mobile apps are booming with wide-ranging flavors of technologies. Today building app is not just about writing a good code, the success of app is largely driven by user experience. A successful app should have an aesthetically pleasing UI and should deliver best user experience on all devices and various form factors, of course there are other important factors to be taken into consideration as well.


Fig: Mobile apps testing challenges

Outstanding testing strategy is the only way to make your mobile app ready for business. To add to complexity there are thousands of different devices each delivering multiple form factors. To ensure app performs to its best it, it’s a mammoth challenge for quality assurance team to test in all above scenarios and certify the product keeping in mind budget and time constraints, QA team need to have right strategy, tools and processes in place.
While mobile applications are rapidly becoming core and critical part for profits for corporate software world, new and complicated challenges to the software delivery model are also taking centre stage.

Key Challenges

This set of challenges are exclusive to the mobile testing world. This blog intends to highlight the same. 

Emulators Plethora of mobile devices with huge varaiations
Current market offers wide range of mobiles with different screen sizes and resolutions, hardware capabilities, varied operating systems etc. In order to launch an efficient mobile app, it is must to perform strategic testing so that user can have wonderful experience with any sort of mobile device he holds. This blog will present best testing strategies and tactics for mobile applications.


Platform standards
Each platform has laid out its UI design and navigation guidelines and mobile apps developed for the sespecific platforms much confirm to these guidelines to get successfully published.



Testing tools
Testing of mobile applications needs special tools emulating the near actual device behavior. Test coverage with these tools can only reach 70%. Using actual devices for testing can provide actual results but using actual devices is costly, time consuming and impossible to cover all variations.

Other important aspects are the app should utilize the device resource optimally like CPU, power etc. Poorly build apps can drain the phone battery and users are likely to uninstall these apps even if the app is functionally great.


Mobile application testing types




Functional
This type of testing mainly covers functional, business requirements and app workflow. The other aspects covered are error handling and error message to user, language and validations.

User interface
This should cover the UI aspects of the application 
  • Check all UI element alignments, font color, size, margins from screens.
  • Check the UI design guidelines laid out by specific platforms are adhered.
  • Check application compatibility with various screen form factors.
Usability
This covers the ease with which the application can be used by user. The application should be checked for responsiveness, accuracy, screen navigation etc. 

Compatibility
Test the application for compatibility for various platforms, platform versions and devices as per the requirements. The application is also tested for browser compatibility, network compatibility and compatibility with other apps on the device. 

Performance
Check the app for memory, CPU and battery usage. Other aspects covered under this test are test for server connections, network switch over from WIFI to 2G/3G and vice versa, test for device resource like camera, GPS, etc.  

Security
This testing covers the security aspects like, authentication, authorization, data protection, encryption/decryption of data while communicating with servers.

Interruption
Interruption testing is used to check app behavior during interruption from notification or other apps like, phone calls, messages, calendar events, camera, alarm, battery notification, other app notifications, voice messages.

Automation
Mobile testing automations important to improve the testing Using above techniques to achieve maximum test coverage, it is extremely important for QA teams to automate the testing. Automation will also reduce time, cost and help achieve better quality. Automation can be achieved using various tools available in market and on cloud.

Test strategies for mobile application
We have seen the challenges in testing mobile application, it is important that right testing technique and strategy is used. The blog will touch upon few important techniques used for testing.
   


Emulators
Emulators are most commonly used for mobile testing, these are mostly available with all platforms and any app can be tested on these. These are cost effective solutions and can be used by testing teams to perform most of the testing. However test coverage using emulators is limited.

Actual Devices
Actual devices can be used for testing the apps, these provide the real testing environment and best functional and NFR coverage. However it is not practical to test the app in multiple devices due to cost involved.

Crowdsource Testing
This is an emerging trend in software testing, which leverages the benefits of crowdsourcing and cloud platforms. To briefly touch upon crowdsourcing, the testing is carried out by different testers from different places unlike hired professions within an organization. Crowdsource testing offers the large variety of choices for testing in various devices, platforms and form factors and various networks.

Cloud testing
This application can be deployed and tested on a cloud, it can be assessed by testers from various locations using web. Cloud testing is used helpful when using Crowdsource testing.


Author
Sandeep Koul
If you would like to discuss on the above post, do write to us at TalkToUS@hummingwave.com