You want a Web site that renders mobile friendly content that is viewable, accessible, and interactive for the user. Native device developers have a bit of convenience when it comes to this as they target a specific device OS and browser. It is impossible for Mobile Web developers to test for every device browser he or she needs to target, since there are so many variations and combinations of operating systems + browsers. This is where emulators help. Emulators are software that behave the same way the physical device itself would behave. For example, a WP7 emulator looks and acts just like a real WP7 phone. It loads pages, displays content, and allows you to fill in HTML forms, and interact with HTML pages.
Device testing is a lot like cross browser testing for desktop browsers such as IE, Chrome, FireFox, Safari, etc... (which you still have to do). While you will be unlikely to be able to test for every single type of device and browser on the market, this post will cover some the more popular platforms.
Windows Phone 7 Emulator
The Windows Phone 7 emulator ships as part of the Windows Phone SDK 7.1 and integrates with Visual Studio 2010 automatically for WP7 project templates. When working with Web development projects like ASP.NET MVC or Web Forms, the emulator is run from the Start menu, desktop shortcut, or Visual Studio Tools menu; however, before using it in Visual Studio you must add it as an external tool first.
The WP7 emulator executable name is XdeLauncher.exe and it lives in the C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\XDE Launcher\ folder, so it's easily added to the Visual Studio Tools menu. Choose Tools->External Tools, and when the External Tools dialog appears, add a new command by entering the following information:
Title: Phone Emulator
Command: C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\XDE Launcher\XdeLauncher.exe
Arguments (with double quotes): "Windows Phone 7" "Windows Phone Emulator"
Initial directory: C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\XDE Launcher
Prompt for arguments: Uncheck the checkbox
Your dialog should look similar to the image below:
You can then access the phone emulator from the Tools menu in Visual Studio 2010.
If you prefer, you can run the Windows Phone Emulator solo instead by pressing the Windows key, then typing in Phone Emulator (not case sensitive), to run the program. Of course, you can always use the command line. The WP7 emulator also has some very cool extras like the accelerometer, geolocation/mapping tools, and more. You can even run multiple WP7 emulators simultaneously. For those looking for the master WP7 emulator reference, see everything you need to know about the WP7 emulator.
There are many iOS emulators out there, both online, and as desktop versions of software, so you have quite a bit of choice. Here are some iOS simulators that work well:
Electric Plum's ibbdemo iOS simulator runs both iPhone and iPad emulators in the simulator software. The nice thing about desktop software is that you can integrate it with Visual Studio. Online emulators have the advantage of no software installations, and therefore are sysadmin friendly. Below are a few online emulators:
KendoUI also has an awesome online multi-device simulator; however, it runs only in Webkit browsers, so you'll need Chrome to use it.
Fun tip: Run online emulators inside of desktop emulator, or on the physical device for 1000 nerd points!
Android & Others
Android | You'll need to do some legwork in the Android space to get setup. The Android emulator is part of the Android SDK, with complete instructions. There is also a nice tutorial about installing, configuring and using the Andoid browser emulator for Windows.
Opera Mini/Multi Device | http://www.opera.com/developer/tools/mobile/
Blackberry/Multi Blackberry OS: | http://us.blackberry.com/developers/resources/simulators.jsp
Of course there's still plenty of devices out in the public, and other emulators on the market if you need them. Check out this comprehensive list of mobile device emulators.
You can start cross browser development immediately with the emulators shown in this post, and some integrate directly with Visual Studio tools. If you didn't download the Windows Phone SDK 7.1 yet, now is the time!
Note: All emulators listed in this post are free.
What's your favorite emulator (free/paid)? What's your favorite device? What devices do you want to develop for and what devices must you develop for?