Group Photo at Google Mentor Summit 2013
Another Google Season of Code Season Ends!! Had lot of fun co-mentoring elastic-search (nodejs) & Reporting projects for GSoC 2013 :)
In case you have upgraded your Ubuntu (or similar distros) and are facing problem while opening previously installed app esp LibreOffice with following error:
The application cannot be started. Extension Manager: exception in synchronize
The problem is mainly because of lack of permission for the app. To solve cd /usr/share/applications and grant permission like this:
chmod +x <name_of_app>
If you are using nautilus (or similar file browser), go to Permissions and check: “Allow executing file as program”
In recent past, we have experienced a flood of Mobile apps in various App Stores. As most of the apps are either made by individual developers or startups, there is money and developer / manpower crunch. Because of this, first thing which suffers is testing of the product.
User Experience is given much more importance than what was given few years back. Having as less bugs as possible is another key requirement to provide good UX and to have that App Developers are moving from tradition testing platforms (which includes lot of coding by devs, which worked well for enterprise softwares) to different approaches like behaviour driven testing, simulations and many times crowd source testing.
At Raxa we plan to have a robust integration / behaviour driven testing platform. Currently, we have our unit tests running on jasmine. Managing cross-platform testing is one of our key requirements as we build some of our modules on Sencha Touch which can be packaged natively for seven different mobile OS using phone gap. In my personal experience, many things behave differently on different platform. As different platforms, use different JS Engine and other modules in Browser, many times different type events are generated by different browsers and not respecting standards much. Most of the browsers / platforms are not able to cope up with latest changes in w3c standards as well. And obsiously, there is wall b/w webkit v/s non-webkit browsers.
I found some time to google various options to test the Mobile app in the way which helps us to make my customer happier. I learnt about few options, many of which are mentioned below. Before jumping into picking up options, one must figure out whether you need your testing framework to be cloud based (it may cost you money, but will support you to test on real devices (mainly on SaaS) and save cost of acquiring and maintaining devices.
1. Testing on Cloud
- Perfecto Mobile: You can easily write your test script. Test on real devices available at various geographical locations. Not “very” costly. Very impressive way to do testing.
- Device Anywhere: For webapp, it is FREE. People who build on phonegap, can check on native browser of different platform. Easy to create Automation Scripts (by just drag and drop). Pass/Fail Screenshots / Videos are added to report. You must try this out. This also runs automation test across various platforms. Automation tests use image & text recognition to perform test (most the other frameworks do the same)
- Test Droid: Works on similar lines as above, but seems less impressive than others. Supports only iOS and Android.
2. Behaviour Driven Testing tools :
- FoneMonkey (iOS): Traces mouse movement. Seems very easy to use. Train monkey (and not your QA) once and let him test it for you on simulator / usb connected real device :)
- Calabash (iOS + Android): Cucumber based testing framework, which lets you write easy steps for new features to develop. These steps can be understood by end user, business analyst, tester and developer. Idea becomes very clear at start of user story. Doing it for already developed s/w is a big pain. Testing steps are like this (test case from README ofcalabash-android):
Feature: Login feature Scenario: As a valid user I can log into my app Given I am a valid user And I enter my username And I enter my password And I press "Login" Then I see "Welcome to coolest app ever"
- Robotium: OpenSource, works fine. but only for Android :(
- Appium.io: Again, OpenSource. Impressive. Needs some coding time :)
3. Performance Based Testing:
- WebpageTest: Mainly UI test to validate cross platform compatibility and time to load at various geographical locations (on various browsers). Choose Mobile Tab for testing your Mobile webapp
- Sunspider: To benchmark results
- MobiTest: Mainly UI test to validate cross platform compatibility and time to load at various geographical locations (on various browsers). Choose Mobile Tab for testing your Mobile webapp MobiTest allows you to load page on real device and returns rich detail about loading time of app, waterfall charts and even video recording of the page load.
- Memory leaks, ARC and similar issues can be debugged using xcode (for iOS)
4. Popular Crowd Source Testing Options:
5. Some testing frameworks which work only for a particular platform
- Test Framework just for Android:
Robotium , Bot-Bot, Monkey Runner, Droid Pilot
- Test Framework just for iOS:
Frank, KIF, Zucchini
Choosing right option can help us
- Save lot of cost to acquire and maintain test devices or spend time testing at to one of Open Device Labs
- Optimize resources including human resource spent on testing app
- Find Bugs
- Provide richer User Experience
- Make our customers happy :)
Feel free to mail your suggestions / comments either on this site or to madanpiyush [at] gmail.com
Many of the nodejs packages require nodejs version to be higher than what gets installed using package manager of ubuntu / other distros. So, you can either update your nodejs by compiling and installing after fetching code from nodejs repo OR simply use “n” (nodejs package) to upgrade your nodejs version. Use following commands:
#i hope npm is already installed ;), if not use:
sudo apt-get install npm
#cleans npm for any cached data
sudo npm cache clean -f
#installs package: n (-g for installing globally)
sudo npm install -g n
#mention version to be installed (or just stable)
sudo n 1.0.0
#check version number for node
We, at Raxa had a nice outing to Qutub Golf Course on Friday evening. It was the first time for many of us. We spent time at driving range getting used to techniques of the game (Mind you, it is not as easy as it appears). Some of the pics:
Pic #1: Believe me, I was not posing for it :o
Pic #2: (L to R) Shuro (with cricket hat), Bhagirath, Melodie (others are clueless what z see doing), Sidhi (missing paparazzi moment), Me (with protruding stomach), John (smart ass of our office), Sharon (with her naughty smile), Sathyan (Design Team: out of frame) and probably Rishi (Drupal guy) too.
Pic #3: Another badly taken photo ;)
With the advent of so many online-course portals like Coursera, NPTEL, OnlineCourses, etc, I do feel online courses with strict schedules are way better than other online resources as the former one test you for whatever they teach with a strict deadline to submit the assignment.
I enrolled in 7 week course: M101P MongoDB for Developers (using Python) by 10gen which was a comprehensive course touching all aspects of Mongodb for developers including CRUD in mongodb, Performance, Schema Design, Aggregation, Cases studies,etc. I really appreciate Andrew Erlichson and his team for making a very nice learning resource.
BTW, they provide you a nice certificate too. :)