Wednesday, 2 September 2009

Questions from a recruiter

I've been asked to answer some questions before applying for a job. I'm not sure if my answer to the first one is correct, but here's the essence of what I'm going to send back.

Q. Ensuring web applications work effectively across different browsers is hard. Explain how you would go about ensuring a web application functions correctly with Yahoo's list of Agrade browsers, covering both development and testing approaches.

Effective implementation of design and function across browsers is tricky to get right. The A-Grade browsers from Yahoo’s list are fairly varied and sit on multiple operating systems.

My view on this would be to work on one browser that is on the list of A-grades (e.g. Firefox 3.0 using Selenium to record any tests, more info on Selenium below), and as functionality is complete, I would expect it to be tested across the other browsers in the A-grade category. When an issue is spotted I would expect any specific browser fixes for layout to be quarantined in a browser specific file (for example ie6.css). I would also try to avoid using hacks to fix layout.

I would augment the previous tests using Hudson with the Selenium testing, a great blog entry on this subject can be found here: This Blog post outlines how to use Hudson and Selenium Remote (using our pre-recorded tests) so that results can be captured and failures reported back.

The previous test scenario can be hard to set up, but you will save time running automated tests. I have experience with Hudson for Java automated unit testing using Ant, JUnit and Emma, and it was great to know that every 30 minutes if there was something new to check out of the source repository (in this case CVS) it would run tests against it and report any failures back by email.

I also don’t believe in avoiding the C-grade browsers – there is no reason a site cannot be tested to make sure it’s at the very least available to this audience.

1 comment:

gullibollocks said...

All makes sense - I'd add that as opposed to 'supporting' C-grade browsers I'd implement the technologies in such a way that they gracefully degrade. AJAX-like technologies are great but I'd have proper content rather than 'Please Wait, Loading...' in the place-holders, in the same way as I might implement CSS3 goodies like rounded corners but know that browsers that don't support it are still getting the general style, if not the final polish.