Logo

iOS Testing Strategy

2 months ago | Rohan Daxini: void TechFuels()

Recently our team at Kiprosh started using FoneMonkey for Automation testing of iOS apps. FoneMonkey is free and has strong support for both iPad and iPhone devices.


Here are the various tools that we evaluated and shortlisted for iOS testing and then finalized our testing strategy for iOS apps (tools marked in color green are recommended)

Unit Testing
  • Built in XCode based unit testing using OCUnit - (little complicated and requires too many steps to create the unit test, process isn't automated)
  • GTM - Google Toolbox for Mac - (suitable) http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting
  • GHUnit - (most suitable, easy to setup, has GUI, but documentation and other build issues)
  • Mocking - OCMock and OCHamrest

Automation Testing tools and framework

Integration / Automated Builds
  • Hudson with xcodebuild
  • Code coverage (gcovr) with Cobertura XML

Testing Strategy
Finally we formulated following testing strategy for iOS apps
1) GHUnit for unit testing
2) With memory management, we must verify that when allocation fails we get expected return value as nil rather than garbage
3) Automation test suite (using FoneMonkey mostly or Sikuli or DeviceAnywhere)
4) Finally plug all the unit tests and automation test suite with CI using Hudson
5) Integrate often

JRuby + BIRT Reporting + TorqueBox = Enterprise Reporting Solution with Seamless Integration

7 months ago | Rohan Daxini: void TechFuels()

Recently I got an opportunity to work on a rails application to implement an enterprise solution using JRuby + BIRT reporting + Torquebox and Trinidad. All an all a great learning experience in integrating all these latest technologies to build an enterprise and reporting solution. We are still improving performance for BIRT reporting. Torquebox provides lots of flexibility and high performance in deployments. JRuby is a year older now and came up with various bug fixes so it again helps. We used Trinidad too that became our default application server to use with JRuby.

This kind of solution is ideal for the Rails app containing blend of Java and Ruby as architectural stack that heavily wants to reuse, consume stable reporting platform such as BIRT (offers rich variety of reports to an application). Rails stack lacks heavy reporting and readily available solution that delivers rich set of features in all the available formats. Thus BIRT is a good fit for solution that wants to implement reporting in Rails app with the help of Java ecosystem. BIRT offers charting engine too along with features for Lists, Crosstabs, Compound reports etc. Easy integration, rich documentation, lots of active forums for help adds good points in favor of BIRT and thus we tried it in our application.

Give others and yourself an 'A' today !

12 months ago | Rohan Daxini: void TechFuels()

Came across this nice article with stories on rewarding others and yourself an 'A' in advance.
Article - Give yourself an 'A' today! It makes a difference.

This makes sense and I must admit that directly or indirectly I was using this before too without any thought or doubt of weighing this as a good or bad practice despite having fairly above average results in both professional and personal life. Well quite debatable as it gets sometimes, but worth a try to experience first hand.

Websites as Graph

about 1 year ago | Rohan Daxini: void TechFuels()

Recently came across this cool online tool that enables to view websites as graph
http://aharef.info/2006/05/websites_as_graphs.htm
http://www.aharef.info/static/htmlgraph/

Tried this on portal / web app we implemented and here is how their DOM elements look like

1) Saralsociety.com



2) Oncocure.com

API - Face recognition across the Web

over 1 year ago | Rohan Daxini: void TechFuels()

A very interesting yet useful API launched by Face.com is making rounds and expanding across the web quickly. "CelebrityFindr, Tagger Widget and Poster Yourself" already uses Face.com technology.

Developers can now tap into Face.com’s technology to add facial recognition to all kinds of web apps for free via the open API.

Well i m trying it out in one of our web app so will post review. Face.com claims that its technology can identify faces even in poor lighting or poor focus; or when subjects are wearing glasses, facial hair, and supposedly even Halloween costumes.

The company’s technology was recently used in an impressive social Augmented Reality app.

I couldn't find any other free API for facial recognition which is so powerful.

Allan Jardine accepted my jQuery code for his next version of the plugin

almost 2 years ago | Rohan Daxini: void TechFuels()

Famous jquery plugins "DataTable" and "KeyTable" developer Allan Jardine has accepted my code (reusable function) to be included in his next version of KeyTable jQuery plugin.

He posted it here http://tlc2.hg.sourceforge.net/hgweb/tlc2/tlc2/rev/131b0899cc67


Here is the mail transcript with him

________________________________

On 10 May 2010, at 1:15, Allan Jardine wrote:

Hi Rohan,

Very nice idea for an API function. I've just updated KeyTable to 1.1.5 and including a function which basically provides exactly the same functionality, but with the name fnSetPosition and it will take either x,y coordinates or a TD node to focus on.

Thanks for sending me this.

Regards,
Allan




On 8 May 2010, at 12:16, Rohan Daxini wrote:

Hi Alan,

For your information and just to keep you posted, I added this new function in KeyTable plugin to resolve multiple issues I was facing while attaching KeyTable to my DataTable. Now I just call this function as keys.fnSetPositionAndFocus(0, 0) in my javacript code to refocus on cell[0,0]. This can be used to reset and refocus on any cell of DataTable as the selection and focus were lost.

All the issues like reattachment, refocus, reselection, repeated cell selection and lost blue rectangle is resolved now due to the inclusion of this api function

this.fnSetPositionAndFocus = function(x, y) {
_iOldX = x;
_iOldY = y;
_fnRemoveFocus(_nOldFocus);
_fnSetFocus(_fnCellFromCoords(x, y));

var str = 'table tbody ' + 'tr:eq(' + y + ')>td:eq(' + x + ')';
$(str).addClass('focus');
}

Thanks,
Rohan

Yo Ti Fy

almost 2 years ago | Rohan Daxini: void TechFuels()

Sat down to wander if I can have a new way to use internet. Instead of 'google'ing and 'bing'ing information I need, let someone deliver it to me based on my defined sets and preferences.
(I just wanted to negate my thought that most of us see search engines as the hub for our internet experiences, though its true uptill great extent.)

I started writting a small service for this task. Meanwhile I came across Yotify - a site which caters to specific task of tracking updates and information that pertains to our topic of interest such as an event, an item for sale on ebay, cragslist, an RSS feed, headlines etc etc.. (like a flavor of Google Alerts and Yahoo Alerts but broader in scope)

On Yotify.com, users track anything they deem worth tracking by sending out ’scouts’ that send back regular reports on a particular sports headline, job listing, real estate posting, etc. The frequency of updates can be set to a daily or hourly amount, and different preferences can be selected so that when users send a scout out to monitor an item on Craigslist, for example, they can find out when the price drops to the amount they’re willing to pay. Searches are also area-specific, and users can specify the state and area where they want relevant results from.

Transcript of a chat with Rob Bouganim, Yotify's CEO
http://arstechnica.com/old/content/2008/09/hands-on-and-invites-yotify-your-personal-web-secretary.ars

"Game" it up

almost 2 years ago | Rohan Daxini: void TechFuels()

In the hunt to break the "monotonous" routine of sprinting and activities for my team, I thought to experiment with a "Gaming" contest at Kiprosh. I picked up couple of strategy games from http://freeonlinegames.com.

We had 1 hr gameful of fun and laughter with interesting "quick" meetings to invent and come up with new strategies for improving scores (as I gave certain scoring target to be a winner). At the end it become very addictive to leave but team quickly became more charged up and rejuvenated.

It also helped us as team to keep on changing couple of strategies and not to repeat mistakes to achieve higher scores & goals.

Being KIS'ed

almost 2 years ago | Rohan Daxini: void TechFuels()

I started my journey this March'2010 towards building Kiprosh with foundation, goals and strong inclination towards

  • Innovation
  • KIS (keep it simple)
  • Write Less Do More
  • "wow" factor (my favorite and very close to my heart) in whatever we develop or deliver
Though its very early to comment but "KIS (keep it simple) yet effective" way of doing things in whatever we do is helping us achieve other important goals too.

I will appreciate thoughts / comments about your experience and experiments on the subject.

N2 vs. Umbraco - CMS made easy

almost 2 years ago | Rohan Daxini: void TechFuels()

Few days back I was evaluating open source ASP.NET based Content Management System (CMS). I shortlisted 2 of them for my purpose i.e N2 and Umbraco. Competition was not even close as N2 was a clear winner. Though both are categorically advised to be consumed based on web content management requirements i.e. Umbraco is preferable for heavy (or large) and N2 for light (or medium to small) contents.

Umbraco is well positioned in developer community as N2 is pretty new. Umbraco's user base is huge comparatively but still N2 delivers due to its sheer simplicity. I like KIS (Keep It Simple) philosophy while development and N2 enables me to deliver keeping KIS into consideration.

Thanks to Shivani for helping me finalize one of the CMS for our purpose.

Expect the Unexpected - Project Natal

about 2 years ago | Rohan Daxini: void TechFuels()

Watch these videos to experience amazing stuff created by Microsoft. A whole new gaming experience. I am awaiting now to have it available soon :-)




Productivity ?

over 2 years ago | Rohan Daxini: void TechFuels()

How would you define "Productivity" in a Software Development especially for Agile SCRUM ?


My thoughts, analysis and definitions:
Productivity can be defined as the rate at which the end users enjoy new features. Its like delivering business values continuously at a faster rate which sees higher RoI. Engineering practices should be applied to deliver these business values at higher rate.

A measurable unit of Productivity can be defined by individual Product owner or Scrum master for their respective teams depending upon the needs of the product / project. For example, I would like to define Productivity gain for a sprint as "P" where
P = (V + Q + F) / N

V - velocity gain over previous sprint
Q - no of quality, UI, automation and security related improvements adopted / implemented (eg. TDD, CI, AAT, improved product scores, automation, security, UI benefits etc.) Teams can come up with various scales for their improvements. Lets say having 10 points for improving unit test code coverage every sprint, 10 points for adopting CI and implementing smooth process, 20 points for improved security, 20 points for better UI and so on......
F - no of working features added over previous product or sprints. Again point system can be devised to quantify features added
N - team size excluding Scrum Master, BA and Product Owner

Teams should be challenged often to improve the value of P in every sprint.

I am doing more research on Productivity so will keep on improving this formula and adding more quantifiable units.

I Come to Bury Agile, Not to Praise It

over 2 years ago | Rohan Daxini: void TechFuels()

Interesting video on "Software Development" and new methodology's. Recommended for all and not just for those who are working on SCRUM Agile :-)
(Length: 1 hr 10 min)

Check it out --> http://www.infoq.com/presentations/cockburn-bury-not-praise-agile

Ghost - My free virtual computer

over 2 years ago | Rohan Daxini: void TechFuels()

Have you ever tried or used Ghost ?

G.ho.st offers every person in the world a free Virtual Computer (VC). G.ho.st is simply pronounced "ghost", an acronym of Global hosted operating system. The G.ho.st Virtual Computer includes almost everything you would have in a physical computer - a desktop, file storage (like a disk drive) and applications.

G.ho.st frees you from being tied to any one physical device - and frees you from the worries of installing software, backing up, and other administration.

"G.ho.st Lite" is a lightweight user interface to access VC using Mobile phones, an embedded widget in another web site like iGoogle and from a very old computer or dial-up connection.

Visit their home page to check out list of key features and services.

I would say good use of cloud computing powered by Amazon Web Services (AWS) and solutions from RightScale Technologies.


20 minutes to 4 seconds - Excel your excel's

over 2 years ago | Rohan Daxini: void TechFuels()

SpreadsheetGear 2009 for .NET reduced the time to generate a critical Excel Report "from 20 minutes to 4 seconds" making his team "look like miracle workers" according to Luke Melia at Oxygen Media in New York. Microsoft chose "SpreadsheetGear"


With SpreadsheetGear controls, a 6,000 KB Excel workbook is loaded into the WorkbookView control in less than a second. This is over 100 times faster than other controls being tested so far.

Robbe Morris (Microsoft MVP - C# Co-founder of EggHeadCafe.com and former Gartner Sr. Software Engineer) says "ASP.NET and Microsoft Excel is a dangerous combination. ASP.NET and SpreadsheetGear is a match made in heaven. When you need your web or Windows app to interact with Excel files with lightening speed and no COM crashes, SpreadsheetGear for .NET is what you use. This product truly separates the men from the boys in the spreadsheet control marketplace."

With one safe managed assembly, SpreadsheetGear 2009 enables developers to easily add scalable ASP.NET Excel Reporting, dynamic Dashboards from Excel Charts and Ranges, powerfulWindows Forms Spreadsheet Controls, comprehensive Excel Compatible Charting, the fastest and most complete Excel Compatible Calculations and much more.

Simon Black (Software Architect, Nokia) says "SpreadsheetGear for .NET is a fantastically powerful spreadsheet component which is very easy to use and expand. We delivered our mandatory customer requirements well before time so we had plenty of time to implement the nice-to-have requirements nobody ever manages to deliver."

I will be evaluating SpreadsheetGear control this weekend so will post more details soon but initial feedback from top architects sounds very impressive.

INDIA INSPIRED

over 2 years ago | Rohan Daxini: void TechFuels()

My List of indespensable developer tools

over 2 years ago | Rohan Daxini: void TechFuels()

Everyone collects dev tools, utilities and most folks have a list of a few that they feel are indispensable. Here's mine (of course all these on my home PC).


Amazing Paper Craft Castle on the Ocean

over 2 years ago | Rohan Daxini: void TechFuels()

See this wonderful paper craft art installation by a genius of the name of Wataru Itou, a young student of a major art university in Tokyo. The installation is hand made over four years of hard work (yeah "four years of hard work") complete with electrical lights and a moving train, all made of paper! Clearly, this man must have created one of the most stunning examples of Paper Craft in the world.


It is exhibited at Uminohotaru, a place which in itself is a major attraction: a service area in the middle of the ocean, right between Tokyo City and Chiba Prefecture. If you haven’t checked it out yet, use Google Earth for a close up of what is probably the weirdest parking lot in the world. (it’s more than a parking lot actually) Enjoy this wonderful work of art!


Do you treat usability as an important aspect ?

over 2 years ago | Rohan Daxini: void TechFuels()

While working on usability aspects of menu (and other controls) for my news reader application "whiz", I read important aspects of usability posted by Jacob Nielsen who is considered "Guru of Usability".


Usability is defined by five quality components:
  • Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the design?
  • Efficiency: Once users have learned the design, how quickly can they perform tasks?
  • Memorability: When users return to the design after a period of not using it, how easily can they reestablish proficiency?
  • Errors: How many errors do users make, how severe are these errors, and how easily can they recover from the errors?
  • Satisfaction: How pleasant is it to use the design?
Follow this link to read on basic usability principles and more.....
http://www.useit.com/alertbox/20030825.html

I think usability should be one of the most important aspect for any developer, designer, manager, BA etc and one should give usability the topmost priority. Designing systems that make sense to code warriors will often lead to a site that is not usable by the average person.

Jacob Nielsen correctly points out "For intranets, usability is a matter of employee productivity. Time users waste being lost on your intranet or pondering difficult instructions is money you waste by paying them to be at work without getting work done."

According to Jacob Nielsen, sites that spent 10% of their budget on usability reaped a 100% increase in sales/conversion rates.

Fight continues: Round 2 - Google vs. Microsoft

over 2 years ago | Rohan Daxini: void TechFuels()

Recently there has been a lot of buzz on Google launching new OS. This news is making rounds on almost all news sites and blogs. I am wondering whether this move by Google is a strong response to Microsoft for launching Bing which is trying to give tough competition to Google's core business. I was waiting for Google's response but didnt thought it would be in the form of new OS :)

Well its too early to comment on this but seems the fight continues and Round 2 was distinctly impressive.

Happy to announce version 1.2 of my news reader application

over 2 years ago | Rohan Daxini: void TechFuels()

After much of a delay and managing time to code during weekends, I am glad to announce version 1.2 of my news aggregator application. Check out http://whiz.kiprosh.com

Current Features

  • drag and drop widgets
  • simple accordion driven ui for conveniently reading news
  • cross browser compatibility - tested on widely used 9 different browsers
  • ajax driven functionality
  • tried to made it one of the fastest rss reader
To keep it simple at this point of time, I just have very limited set of rss feed sources in the app.

Oh btw thanks to Nilesh, Alex, Matt, Biju and Sachin for feedback and appreciating the application :)


Upcoming Features (for v1.3 and higher)
  • navigation menu to have list of various feeds categorized appropriately
  • feeds source with aditional info like ranks, no of hits etc.
  • user personalized start pages and improved UI
  • ability to search particular news / information from the list of rss feeds or user selected feeds

Bing Search Tricks (even Google and Yahoo doesn't have these features)

over 2 years ago | Rohan Daxini: void TechFuels()

Use these cool and interesting tricks with Microsoft's new search engine Bing.com

1) Get Bing search results as RSS feeds
Neither Google nor Yahoo provide RSS feeds of their search results. We can subscribe to search pages from Bing as RSS feeds.
- Open Bing Search
- type your query, say for example "Ajax" and
- then on the results page, append “&format=rss” to the URL
in my case where i tried search query as "Ajax", the rss URL got created is http://www.bing.com/search?q=ajax&form=QBLH&format=rss
(This is one of my favorite feature as I am trying few feeds in my aggregator app :) )

2) Find Web Pages That Link to Documents, MP3s, Videos, ZIPs or other file types
The "contains:" operator in Bing search helps us find web pages that link to other online documents and multimedia files like music and video. This is different from Google’s filetype: search operator that looks for content inside PDF and Office documents.
For example, if we wish to find all pages on Wikipedia that link to MP3 files, type “site:wikipedia.org contains:mp3″

3) Limit Your Search to Websites that offer RSS Feeds
Another search operator in Bing Search is “hasfeed” - it lets you find only those web pages that link to RSS feeds. For example, you could write “ASP.NET MVC hasfeed:” to find web pages that are about “ASP.NET MVC” and also syndicate content as RSS feeds.

We can also group hasfeed: with other search operatorsLets say if we want to know about all pages related to ASP.NET MVC on MSDN.COM that have feeds, then we should just type “asp.net mvc site:msdn.com hasfeed:

4) Track Companies from the IE Favorites Bar
If we search for a company stock (e.g. GOOG or MSFT), Bing will automatically create a web slice for that company which we may then add to IE 8 and track the performance directly from the favorites bar. We need Internet Explorer 8 to try this feature.

Chrome - My favourite browser these days

over 2 years ago | Rohan Daxini: void TechFuels()

I am using Google Chrome a lot these days (apart from using Firefox & IE) for my browsing and testing needs. Chrome is amazingly fast and quick. Features that make Chrome distinguish itself from other browsers like Opera, Safari, IE, Firefox etc. are simple but truly amazing.

First, every tab is an independed process. Each tab is on its own - if one tab crashes there will be no impact on other tabs. This is very useful feature. Chrome has revolutionary JavaScript engine, which is made to work even faster than in the fastest browsers. Here are the speed test results http://news.cnet.com/8301-1001_3-10030888-92.html

Another feature I like about Chrome is its built-in task manager where you can see what tab eats more memory or CPU time than others, and effectively manage your tabs to reduce unneeded memory or CPU usage.

Here are few links casting comparison between Chrome and other browsers


Oh did i forgot to mention a very cool feature - visual sampling of most visited sites, search engines, recently bookmarked pages and closed tabs on its home page.

Wanna test your website (and webpages) on 60 different browser in one shot ?

over 2 years ago | Rohan Daxini: void TechFuels()

Today I just thought to test my website (Aggregator app) across different browsers to have preliminary results. I came across this cool website http://browsershots.org/ which tests webpages on roughly 60 browser (including browsers running on Linux, Mac, Windows, BSD etc) in one shot. It took around 27 mins to test my simple site on all 60 browsers and the results were astounding and really helpful. It provides first hand impression of UI issues (i.e. various formatting, colors, tables, tabs, button spacing etc etc.) for your web pages. I found it really useful. I was testing my app only on fewer versions of Firefox, IE, Chrome etc. but thanks to Nilesh for pointing me out to try and test my app on other version of various browsers as well. We together sat down to explore few open source tools and while exploring we came across this useful site.

Here is a link to 10 useful resources for Cross Browser Testing http://designm.ag/resources/cross-browser-testing/


I do recommend to use other open souce tools and websites to perform Cross Browser Testing, but these kind of resources are really handy.


Will you Bing it, or Google it ?

over 2 years ago | Rohan Daxini: void TechFuels()

Recently I read an article on new search engine "Bing" by Microsoft and was quite impressed by its search capabilities (thanks to Nilesh for sharing this info on bing with me). Unlike Google who invented advertising-based search model which produces most popular items for each query, Microsoft is aiming to change the game by calling Bing - a decision engine which will offer more insights to users for helping them take decisions, and not necessarily throw the most popular and relevant items. Bing in Chinese language means a certain answer, or response to a query.

I tried few searches on www.bing.com and liked "Related Searches" section as well as opinion index (which rates the search results based on an algorithm developed by Microsoft.) Its quick and clean. Yeah its pretty early to say anything about its success, that the time will tell. But I think I would definitely be using bing along with google for my search and not just google alone :)

Back to blogging. My journey on jQuery and "Fire Eagle"

almost 3 years ago | Rohan Daxini: void TechFuels()

I m back to blogging, huh ! and after a gap of 2 months :( Feeling bad about it as I couldn't write since past couple of months. I was going crazy buzy in projects and operational activities within organisation. I need to learn a lot on "Time Management" :)

Nevertheless, was atleast able to resume my quest on learning jQuery and writting advance aggregator which I left in middle (for version 1.2) during Feb'09. Made lot of mistakes today while working on my code but learnt quite a few aspects on widgets, events customization, minified code, costomizing plugins etc. I hope to release v.1.2 beta by mid May'09 as I am still struggling towards time management :)

BTW did you use "Fire Eagle" ? Today I logged on my Fire Eagle account and explored few apps. Fire Eagle is a Yahoo! owned service that acts as a store for user location information. The genius of Fire Eagle is its sheer simplicity. It does absolutely nothing beyond storing your current location, and disseminating it to your choice of sites and applications.
Read more -> http://www.pointbeing.net/weblog/2008/04/fire-eagle.html
Fire Eagle have already implemented many of the items discussed in the link above. Fire Eagle now have tons of applications including DBpedia Mobile, Bloggy, Tweets, Feeds, findme, Geoupdater and many more.