Saturday, July 10, 2010

Handset Bluetooth testing

“What is Handset Bluetooth testing?” This is a very common interview question for handset testing. First let us see what is “Bluetooth”.

Bluetooth:- It is an wireless protocol for exchanging data from fixed and mobile devices over a short distance.

Now that we are clear with the definition of Bluetooth, let’s move on to Bluetooth testing of mobile/handheld devices.

Today all mobiles have this feature and following pointers must be kept in mind while doing Bluetooth testing.

  1. Initially check the visibility of the device to others while trying to search your device (Master)
  2. Try to pair with device.
  3. Change the visibility time (Ex: On, 1min, 3 min etc)
  4. Rename the device (Slave)and try to pair with same (Master)device and check for the name update in Master
  5. Transfer of files from Master to slave and slave to master
  6. Connect the call via BT headset
  7. Try to pair with maximum devices allowed to pair.
  8. Try to share the files with all the maximum paired devices at a time
  9. Check that BT can be invoked from Multimedia applications while trying to send the media/files
  10. Try to send the contact via BT

I think this small information will help you all up to certain extent.

Test your Mobile Application on Nokia RDA

Getting any mobile application Tested on various devices when they are not available has always been a great problem for developers .Even after porting your application on various devices, it is very important to get it tested for overall success of that application.

But the real problem is How many devices you can buy since number of devices are too large.That’s why we use Emulators.However we can not completely rely on emulators also.We need to test our application on real devices or closest platform which will provide real device like capabilities.For this is it not a bad idea to test your application via Remote device access?Here you do not need to buy devices for getting your application tested on real devices.Nokia RDA is platform for the same.

What is Nokia RDA ?

  • Nokia RDA is a web based Remote device access service where you can add and test your application on several Symbian and Maemo™ devices.

What can be tested ?

  • Symbian C++, Java, and Adobe Flash Lite applications.
  • Qt, Python, and Open C (after installation of the required plug-ins).
  • Various types of content, such as themes.
  • Web widgets, web pages, and other types of web applications and content.

What’s the service cost for using this ?

  • Zero.Its free of cost.You just need to register for a fre account.

How does it work ?

  1. Register for Nokia forum here.
  2. Go to Nokia RDA here
  3. Check whether your desired device is available in “Available Now” devices.
  4. If yes move focus over that devices and select for how much time you want to reserve device.(Reserve a Device)
  5. Start.
  6. Save launchdevui.jnlp file.
  7. Double click on same file.
  8. You get Nokia RDA Device interface which you have selected.
  9. Now select Install Software button on TOP Left.
  10. Select file followed by option Install.
  11. Install Your application.
  12. Run your application from Application Manager.

Main features:

  • You can install and run following files: .SIS, .SISX, .JAR, and .WGZ files.
  • You can change screen orientation from portrait and landscape modes on devices that support this feature.
  • You can Change color depth and reduced resolution mode to improve response time.
  • Debug logs. View text files and capture Symbian OS panics.
  • Later Reservation: If any device is engage, you can reserve it for later use.
  • This service is free.

Drawbacks:-

  • Since you access devices remotely it takes time for any action or key event.
  • It do not support audio.
  • Some times the needed device is not available due to prior reservations.

Testing Wireless Java Applications

Challenges of Testing Wireless Applications

The wide variety of Java technology-enabled devices such as wireless phones and PDAs results in each device running a different implementation of the CLDC and MIDP. Varying display sizes add to the complexity of the testing process. In addition, some vendors provide proprietary API extensions. As an example, some J2ME vendors may support only the HTTP protocol, which the MIDP 1.0 specification requires, while others support TCP sockets and UDP datagrams, which are optional.

To make your application both portable and easy to test, design it using standardized APIs defined through the Java Community Process (JCP), so it will run as-is on devices with different J2ME implementations. If you feel you must use vendor-specific extensions, design your application in such a way that it defaults to the standard APIs if it's deployed on a device that doesn't support the extensions.

Testing Wireless Java Applications

The testing activities described above are applicable to testing wireless Java applications. In other words, you perform unit or class testing, then you integrate components and test them together, and eventually you test the whole system. In this section I provide guidelines for testing wireless applications.

Validating the Implementation

Ensuring that the application does what it's supposed to is an iterative process that you must go through during the implementation phase of the project. Part of the validation process can be done in an emulation environment such as the J2ME Wireless Toolkit, which provides several phone skins and standard input mechanisms. The toolkit's emulation environment does not support all devices and platform extensions, but it allows you to make sure that the application looks appealing and offers a user-friendly interface on a wide range of devices. Once the application has been tested on an emulator, you can move on to the next step and test it on a real device, and in a live network.

Usability Testing

In usability testing (or GUI navigation), focus on the external interface and the relationships among the screens of the application. As an example, consider an email application that supports entry and validation of a user name and password, enables the user to read, compose, and send messages, and allows maintenance of related settings, using the screens shown in Figure 1, among others.

Network Performance Testing

The goal of the next type of testing is to verify that the application performs well in the hardest of conditions (for example, when the battery is low or the phone is passing through a tunnel). Testing performance in an emulated wireless network is very important. The problem with testing in a live wireless network is that so many factors affect the performance of the network itself that you can't repeat the exact test scenarios. In an emulated network environment, it is easy to record the result of a test and repeat it later, after you have modified the application, to verify that the performance of the application has improved.

Server-Side Testing

It is very likely that your wireless Java applications will communicate with server-side applications. If your application communicates with servers you control, you have a free hand to test both ends of the application. If it communicates with servers beyond your control (such as quotes.yahoo.com), you just need to find the prerequisites of use and make the best of them. You can test server-side applications that communicate over HTTP connections using HttpUnit (a Java API for accessing web sites without a browser. It is ideally suited for automated unit testing of web sites when combined with a Java unit test framework such as JUnit, which I'll discuss in the next section. You can also measure a web site's performance using httperf, a tool designed for measuring the performance of web servers).

Conclusion

Testing is a systematic approach to finding errors in programs. It is a very challenging process in the wireless application market because an application is developed on one platform and deployed on ones that are vastly different. The process is complicated even further by the availability of a wide range of devices that implement different versions of the KVM, CLDC, and MIDP, and that provide extension APIs not available on all devices. To achieve the maximum portability, verify that your applications use the standard APIs.

Difference between smartphone Operating Systems

Comparative study – Major smartphone Operating Systems

1) iPhone OS –

Pocket size version of the Mac OS X, was shrunk and redesigned to power the iPhone 3G. Embracing a smart user interface, thousands of apps, millions of downloads from app store and a revolutionizing user-experience. Apple doesn’t permit the use of its OS on third-party hardware.

AppStore– Developers after registering on the website can upload their applications onto App store for millions of users to download at the designated price. Apple takes a share of that price and gives the other share to the developers. Over 185,000 applications reside on App store at this moment and have already been downloaded more than 4 billion times.

iPhone OS has four abstraction layers: the Core OS layer, the Core Services layer, the Media layer, and the Cocoa Touch layer. The operating system uses roughly 500 megabytes of the device’s storage.

Presently XCode 3.1 is the development environment and the applications are written in Objective C (a variant of language C).

2) Symbian

Made Open Source by contributions from Nokia, NTT DoCoMo, Sony Ericsson and Symbian Ltd

Symbian has a microkernel architecture, which means that the minimum necessary is within the kernel to maximize robustness, availability and responsiveness. It contains a scheduler, memory management and device drivers, but other services like networking, telephony and filesystem support are placed in the OS Services Layer or the Base Services Layer. The inclusion of device drivers means the kernel is not a true microkernel. The EKA2 real-time kernel, which has been termed a nanokernel, contains only the most basic primitives and requires an extended kernel to implement any other abstractions.

The operating system consists of the kernel and middleware components of the software stack. The upper layers are supplied by application platforms like S60, UIQ, and MOAP.

3) webOS

Runs on Linux kernel with proprietary components developed by Palm.

Underneath the graphical user interface sits a software stack that has much in common with mainstream Linux distributions for desktop computers. webOS uses, among other components, the Linux kernel, Upstart, GStreamer as multimedia framework, libpurple for instant messaging, Simple DirectMedia Layer (SDL) for game programming, PulseAudio for audio management, and WebKit.Applications for webOS are written in JavaScript, HTML, AJAX, and some other common ‘web’ technologies, which is handled by WebKit, as well as C and C++. It supports streaming video in RTSP, H.263, and H.264 formats.

Palm publishes a webOS software development kit called Mojo which can be accessed from the launcher screen

4) BlackBerry OS

Proprietary software platform, created by Research In Motion, for BlackBerry phones.

The operating system provides multitasking and supports specialized input devices that have been adopted by RIM for use in its handhelds, particularly the trackwheel, trackball, and most recently, the trackpad and touchscreen.

The BlackBerry platform is perhaps best known for its native support for corporate email, through MIDP 1.0 and, more recently, a subset of MIDP 2.0, which and allows complete wireless activation and synchronization with Microsoft Exchange, Lotus Domino, or Novell GroupWise email, calendar, tasks, notes, and contacts, when used in conjunction with BlackBerry Enterprise Server. The operating system also supports WAP 1.2.

5) Bada

Developed by Samsung Electronics.

The Bada operating system has a kernel configurable architecture, which allows the use of either the Linux kernel, or another Real-time operating system (RTOS) kernel. The Linux kernel is the preferred choice for smartphones, while RTOS is used for cheaper feature-phones, due to its smaller memory footprint.

It has a web browser based on the open-source WebKit, and also features Adobe Flash. Both WebKit and Flash can be embedded inside native Bada applications. Bada offers interactive mapping with Point of interest (POI) features, which can also be embedded inside native applications.

Bada supports various sensors, such as motion sensing, vibration control, face detection, accelerometer, magnetometer, tilt, and GPS, which can be incorporated into applications.

Native applications are developed in C++ with the Bada SDK, and the Eclipse based IDE. Bada can also run Java ME applications (MIDP profile).

6) Windows Mobile

The current version is called “Windows Mobile 6.5″. It is based on the Windows CE 5.2 kernel, and features a suite of basic applications developed using the Microsoft Windows API. It is designed to be somewhat similar to desktop versions of Windows, feature-wise and aesthetically. Additionally, third-party software development is available for Windows Mobile, and software can be purchased via the Windows Marketplace for Mobile.

Third-party software development is available for the Windows Phone operating system. There are several options for developers to use when deploying a mobile application. This includes writing native code with Visual C++, writing Managed code that works with the .NET Compact Framework, or Server-side code that can be deployed using Internet Explorer Mobile or a mobile client on the user’s device. The .NET Compact Framework is actually a subset of the .NET Framework and hence shares many components with software development on desktop clients, application servers, and web servers which have the .NET Framework installed, thus integrating networked computing space (a.k.a. “The Cloud”)

  • Windows Mobile Professional runs on ‘Windows Phones’ with touchscreens
  • Windows Mobile Standard runs on ‘Windows Phones’ with regular screens
  • Windows Mobile Classic which runs on ‘Windows Mobile Classic devices’

7) Android

Backed by Google, presently owned by Open Handset Alliance, Android is more than just an operating system. It is a software stack encompassing middleware and key applications and is based on a modified version of Linux Kernel.

The Android SDK includes debugger, libraries, a handset emulator, documentation, sample code, and tutorials.

Google promotes application development for Android based phones by having a dedicated team at their own end and also organizing developer competitions from time to time.

Google’s own participation in app development for Android platform – These applications include Google Voice, Sky Map, Finance, Maps Editor, Places Directory for their Local Search, Google Goggles that searches by image, Google Translate, Listen for podcasts and My Tracks.

Apart from these major OSs,there are many others that share smaller markets, viz., Ubuntu, Maemo etc.