Wednesday, December 1, 2010

Mobile Application Testing Important Links

  1. Automated testing of Windows Mobile applications
  2. Testing Checklist for Mobile Applications
  3. Nokia Test Criteria for J2ME Applications
  4. Symbian Signed Test Criteria and Test cases
  5. Complete Guide to Hoffman Box Testing in BREW
  6. Test Plan for a mobile applications
  7. Mobile Operating System
  8. How to run J2ME applications on devices
  9. Testing Mobile Applications with HP QTP
  10. Mobile Application Testing With TestComplete – Overview
  11. Mobile Web application testing
  12. Mobile application testing challenges
  13. List of companies developing mobile games and apps
  14. Introduction to J2ME Emulators
  15. 10 Things You Need to Know About Mobile Apps
  16. How to install a Windows Mobile emulator
  17. How to use Windows Mobile Emulator
  18. Nokia N-95 8GB
  19. Mobile Application Testing or Mobile Testing,Confused????
  20. 5 Things to keep in mind before starting Mobile Application Testing
  21. Nokia N-900
  22. Samsung Corby S3650
  23. Lessons for Testing Mobile Services and Applications
  24. While testing data calls in J2ME mobile application
  25. Automation Testing Tools for Mobile Applications
  26. How to conduct Application Stability test in BREW Mobile Application
  27. National Software Testing Laboratories (NSTL)
  28. How to Install Symbian Application in Device ?
  29. What is IMEI Number ?
  30. Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial
  31. How to Submit your BREW Mobile Application To NSTL
  32. List of Mobile Network Operators In India and World
  33. Performance testing mobile web applications using IBM Rational Performance Tester
  34. Seesmic for Android
  35. Google Mobile Application:Google Voice
  36. FoneMonkey:Free Mobile Application Testing tool for iphone apps
  37. How the mobile service providers know whether the mobile is switched off or out of coverage?
  38. Quick Testing Tip:Blackberry Mobile Application Testing
  39. Security Testing for Mobile Applications
  40. Automated testing of Blackberry applications with QTP
  41. Be a Guest Blogger on www.mobileappstesting.com
  42. What is Handset Bluetooth testing?
  43. Symbian Signed Tests Cases v 4.0.14
  44. Smart Phone OPERATING SYSTEMS
  45. AUTOMATED GUI TESTING OF MOBILE JAVA APPLICATIONS
  46. How to use hopper-A stress testing tool for windows mobile!
  47. List of Sites for All BREW Handsets and Specs
  48. Mobile Application Platform most used by mobile developers in early 2010
  49. Automated testing of Android applications
  50. Test your Mobile Application on Nokia RDA
  51. Performance Testing: Getting Your Ecommerce and Mobile Web Ready for Peak Holiday Traffic
  52. TestiPhone-A web browser based simulator for testing iPhone web apps
  53. MITE (Mobile Interactive Testing Enviornment)
  54. Testing iPhone Applications with eggPlant
  55. Join “Mobile QA Zone” a nextGen Mobile Software Testing Comminity
  56. Interview Question on Mobile Application Testing
  57. Testing a Mobile Application with “Test Maker”
  58. Test your mobile application for unnecessary excessive data calls
MOBILE QA ZONE
  1. Join Mobile Software Testing Community Mobile QA Zone
  2. Join Android Testing Group in Mobile QA Zone
  3. Join Iphone Testing Group on Mobile QA Zone
  4. Join Blackberry Testing Group on Mobile QA Zone
  5. Join Future in Mobile Technology Group on Mobile QA Zone
  6. Watch Videos on Mobile Application Testing on Mobile QA Zone
  7. Meet and Interact with More than 300 Mobile Application Testers all over the world on Mobile QA Zone
  8. Meet and interact with Anurag Khode on Mobile QA Zone :)

Tuesday, October 27, 2009

Testing Checklist for Mobile Applications

By:Anurag Khode

While testing Mobile Applications most important thing is your testing checklist.You may find your Testing checklist here

Automated testing of Windows Mobile applications

By — Anurag Khode

Windows Mobile:

Windows mobile is a wide-spread operating system for mobile devices developed by Microsoft. The system is used in end-user smart phones and in business mobile devices for management of data on the work floor.

CRM (Custom Relation Management) related applications, stock management, fleet management are examples of business applications that are used on Windows Mobile devices

Windows Mobile extends the familiarity of the Windows desktop to Windows Mobile devices. Windows Mobile...read more

Friday, September 25, 2009

10 Things You Need to Know About Mobile Apps

By:Anurag Khode



10 Things You Need to Know About  Mobile Apps



The Internet Advertising Bureau (IAB) has put together a list of 10 things everyone should know about mobile applications, or at least, it’s got 10 of its members to think of one each. We’re happy to share their advice with you…

1. Only do apps when you need more
Compared to browsing, mobile apps offer a richer level of user interaction, allowing more complex graphics, media and information to be presented. They also provide a more robust and secure environment for user engagement. But, if you can deliver what you are trying to achieve through a browser, you will be able to reach far more consumers. Jeremy Copp, CEO, Rapid Mobile Media Ltd

2. Tell people about your app

Don’t just rely on app stores; you can distribute apps via mobile sites, operators and through multiple ad placements and formats for maximum impact and reach. Theo Theodorou, EMEA Sales Manager, Mobile Advertising, Microsoft Advertising

3. Think further than the iPhone
The iPhone offers fantastic functionality for developers and users alike, and apps developed for the platform are eminently PR-able, and are often shared virally. It has a fast growing user base, and reaches relatively wealthy 25-44 year olds, who actively use mobile media very well. But also developing a java version, optimised to work over a wide range of handsets, including BlackBerrys, will give you a far greater potential reach.
Mark Angell, Business Development Director, Marvellous

4. Get the balance right
There are two fundamental balances to achieve. Firstly, business objectives versus user needs: for the application to be effective, the business needs must carefully consider the user, as well as commercial objectives. Secondly, the three E’s (Engagement, Entertainment and Effectiveness): functional apps often outlast the usage of entertainment-based apps.
Paul Taylor, Strategist & Planner, COI

5. Consider the average app user

There are 8.7 million people who have used a downloaded app in the UK, which is 18% of mobile users. 60% of these users are playing games that they have downloaded. The median age of an app user is 32 years old, and 43% are female. 36% of app users own Smartphones, compared to 15% of the total market.
Alistair Hill, Analyst and Mobile Products, Europe, comScore

6. Brand-building versus sales
Free applications get the most downloads, whereas paid-for applications generate revenue. Knowing whether you are branding or selling is a key point when launching your first application.
Ross Butler, Creative, Parrott and Miller

7. Product longevity is essential
Every service needs a roadmap, no matter how basic. Customers will quickly get bored with a uni-functional app which has no new features or capability added over time. By adding functionality as time goes on, you can create brand advocacy.
Christian Harris, CEO, Gorillabox

8. Send them in the right direction
Ads in existing applications are a great place to advertise, but make sure that the destination site is optimised for mobile. If it isn’t, then you risk low conversion and a poor perception of your brand.
Jonathan Abraham, Brand Sales Director, AdMob

9. Test, test and test again
If a customer can access it on their handset it needs to work. If it doesn’t, it will do more damage than good to your brand. Invite feedback, and always read customer reviews, to ensure you are meeting the needs of your consumer.
Oliver Newton, Head of Emerging Platforms, i-level

10. Be on brand
Just as with any form of communication, ensure that your app is ‘on brand’. Tone of voice, brand values, message, production values and brand fit are essential in making a great brand application.

Wednesday, September 9, 2009

Testing Mobile Applications Different from Testing Traditional Applications

By:Anurag Khode

Testing Mobile Applications Different from Testing Traditional Applications


This Article is By Lion Bridge

Just giving here to share his knowledge with us:


Due to the evolution of technology, mobile devices and their networks are becoming more complex and  require a great deal of testing to enhance their security and performance.

Executive Summary:

Pat leaves the house early to meet a friend for breakfast before work, but not early enough. On the way to the coffee shop, Pat sends a quick email message to his friend to say he's running 10 minutes late. When he arrives, his friend mentions that the car dealership next door has broadcast a special deal on the model Pat is looking for to his PDA via a Bluetooth advertising service. The coffee house provides an 802.11 WLAN access, so after breakfast, Pat takes a minute to check webmail before heading next door to check out the car sale.After checking out the car sale, Pat heads off on his office commute, but he has barely driven three blocks when the car's "low fuel" indicator begins to blink. Not being familiar with the area, Pat speaks into the hands free PC-phone to ask, "Where is the cheapest gas station?", and pulls to the side of the road while the device generates a local map with various options. Pat picks a station, gets directions, and is on track again.
Just as Pat drives up to the pump, an alert pops up on the Pocket PC and a synthesized voice provides a reminder that Mom's birthday is next week! While the gas flows, Pat uses a mobile browser to surf an array of merchants near Mom's hometown. After quickly browsing the stores, Pat looks up Mom's online gift registry service profile, chooses the right gift and purchases it using a digital wallet. Having quickly polished off these chores, Pat gets back on the road to work.The number and type of wireless applications envisioned for enterprise and mass market users grows daily. With each of these types of applications, there are a number of factors that must be considered when testing for conformance to functional, user and performance requirements.

Any good tester knows to pay attention to the basics, which can include:

  • verifying the baseline functionality and features
  • checking the design and proof-of-concept solutions against user requirements early in the development cycle
  • testing under tightly controlled conditions to validate executable code against design during later stages of the development lifecycle
  • compatibility testing all known, planned variations in the software and hardwareconfigurations where the application will run
  • exposing the entire system or application to unexpected events, faults in dependentdatabases, networks or applications, or unpredictable user behavior
  • subjecting the software to volume, load and stress conditions to gauge performance at the boundaries of its designed capacity and measure actual limitations of that performance
  • determining if the application or system not only meets formal design requirements, but also whether it will be usable and meet the (perhaps undocumented) needs of its users.

Not all of these factors are within the scope of all testing engagements, but a good test plan will at
least address them so as to make all assumptions about test scope visible.When it comes to wireless enabled applications, however, there are factors that require the testing strategy to be modified significantly in order to ensure that hardware and software elements of the solution under test are suitable for its target environment and users.
A strategic approach to testing mobile solutions takes into account a number of characteristics
unique to the mobile paradigm:


  • the increased complexity of emerging handheld devices
  • the greater sensitivity to security and load related problems in wireless infrastructure
  • increased complexities of scale

Increased Complexity in Handheld Devices
Perhaps no other area within the realm of mobile computing has changed quite as fast as the presentation device. The first handheld computing device to achieve any real market presence was the Apple Newton, introduced in 1993 and much beloved - but only by 200,000 people. Since then, this space has evolved to the point where there are literally thousands of different combination of hardware devices, software capabilities and wireless networking features. In fact, the handheld computing platform has now become a far more complex element of the overall mobile services technology chain on its own, than the entire networked-applications architecture of a generation ago.

Specific characteristics of the handheld device that make wireless computing
a challenge include:

  • Device and firmware diversity: today's devices have not just firmware, but an operating system, browser and even an applications runtime layer (in the case of Java or BREW enabled phones). Recently, some very expensive and customer impacting quality problems for wireless users have been traced to firmware or operating system bugs in cell phones. Testing for compatibility between these layers, as well as with the wireless network interface, is paramount to deploying a trouble-free mobile service
  • Support for multiple interface and rendering standards: device manufacturers are moving away from network specific handsets toward dual- or tri-mode phones capable of supporting multiple networks. And, despite the recently announced M-Services metastandard, applications rendered in HDML, WML, WAP 1.2, WAP2.0 and cHTML and xHTML will continue to require focused testing at the presentation device.
  • Support for the embedded base: imagine desktop applications which were forced to be compatible with Windows 3.1, Win95, Win98, Win2K, Windows Me and Windows XP -plus the Macintosh. A similar challenge confronts developers and testers of applications targeted for handsets and PDAs with multiple, older versions of software.
  • New paradigms in the client applications platform: the client software on a networkconnected PDA or cell phone was once relatively simple; most processing was performed in the network on WAP or custom mobile server platforms then rendered on the client over low speed, text- based interfaces to the device. With the advent of highly functional PDAs and handsets that have rich client execution environments and persistent data store, testing becomes much more complex.
  • New security concerns: with the ability to download applications and execute code on the device comes the corresponding risk associated with user authentication, enterprise data and transactional security as well as viruses and other malicious code. The newfound power of the mobile desktop increases the need for testing and verification of security mechanisms, both in the devices themselves and in the network infrastructure.

Increased Complexity in Mobile Networks

Paging was once defined as a one-way service for short text messages, and cellular phones provided analog voice services only. Today, paging can be two-way, utilize many different network types (digital cellular, PCS, packet radio, etc) and offer the types of messaging services once reserved for enterprise private networks. Likewise, cellular isn't cellular anymore, with changes to the signaling, data transport and switching techniques that bring added complexity. Over the next five years, every major region of the world will undergo a network evolution that moves it through a series of technology upgrades on the way from second generation (2G) networks to third generation (3G). Along the way, we will see networks which now offer low speed (9.6 Kbps), circuit-switched services using dedicated cellular channels and wireless modems transformed into high speed (up to 2Mbps), packet-switched systems with direct digital interfaces. We will witness modifications of radio base station equipment, implementation of overlay networks and entirely new architectures and communications protocols (including IPv6, mandated by 3G standards), and deployment of signaling, protocol and applications gateways to move data between operator networks and public/private internet-based infrastructures. Changes in handheld devices will be required to accommodate this unsynchronized global shift, and verification of end to end services will be a challenge even for those with the proper access to in-country test facilities. Mobile applications will also need to survive cell or network handover problems which are bound to arise and the inevitable mid-session drop back to slower, second
generation networks lacking the signaling features of 3G. Lastly, the development of piconet technologies such as Bluetooth and Wi-Fi (802.11b) will soon lead to deployment of networks and access points for these unlicensed radio bands and inclusion of their protocol stacks into devices. For wireless applications, verification of interoperability alone will be a challenge. It is easy to see that both functional and performance testing of mobile applications prior to deployment will be a necessity for firms whose customers have come to
expect a seamless user experience, even while mobile.

Security, Performance and Scale
Although enterprise networks and applications have invested both time and money in recent years to beef up their infrastructure so they can handle security and performance challenges, many of the same issues have yet to be overcome in the mobile services world. Until now, the lower processing and datastore functionality of handhelds along with the network operators' unwillingness to open up more control of the wireless infrastructure have kept security concerns in check, for better or worse. However, concern over the robustness of WAP security mechanisms (Wireless Transport Layer Security, or WTLS), for example, has impacted enterprise user adoption. Small devices without the processing power to handle strong security methods such as RSA 1024 and SSL and the risk of loss and theft mean the challenge of deploying and testing for security in mobile devices is inherently different from that of other client devices. The move toward more robust operating systems, like Java, will bring both greater support for enhanced security such as SSL and IPSec and increased security risk of device-based processing and data store. Security concerns will only
increase with the availability of enterprise data extended to the device. Similar concerns relate to the expected increase in scale of mobile applications deployment, which will be much larger in the future than anything seen to date in the cellular data arena. Internet ready handhelds are becoming pervasive worldwide as content providers or enterprises can be reached from many parts of the globe. Therefore, it will be ever more critical for enterprises and mobile service providers alike to thoroughly test to ensure that performance levels both in the mobile network and the applications infrastructure remain acceptable.

Lessons for Testing Mobile Devices


If anyone doubts whether the deployment of next generation mobile services will require the support of knowledgeable test and quality assurance partners, the evidence is there to examine:

  • Users of Nokia, Samsung, Sony and Matsushita handsets have encountered software bugs that have significantly impacted the quality of mobile voice and data services.
  • An industry analyst covering Nokia reported that in a demonstration of GPRS network equipment, Nokia had to use Motorola handsets in the demo after discovering problems with the software in its own handsets
  • 3G compatible handsets now reaching testbeds in the Tokyo area are buggy. According to Japanese daily newspapers, even when signals are reaching the phones, complex i-mode pages and not-so-complex Java applications are as reliable.Of course, bugs are expected during a testing period for new mobile networks and devices. But manufacturers and service providers must find and fix them early and cost effectively if they hope to retain user loyalty and market share.

Testing wireless services must address the following important considerations relative to
handheld presentation devices:


  • Testers must pay more attention to usability and form factors than with traditional desktop applications. Smaller screens, slower processors, lack of persistent data store and lower bandwidth datalinks all require different testing methods. Testers must be aware of specific methods developers use to compensate for these factors and develop strategies to test those methods as well.
  • Testers need to develop expertise in testing multiple layers of the mobile application's software model. The diversity of device hardware platforms, operating systems, microbrowsers and applications middleware require test experts to be aware of the compatibility issues impacting functionality and performance of mobile applications.
  • Testers should prepare to modify test strategies to treat the handheld as a computing system itself, not as a simple client as has been the case with mobile services historically.
  • Mobile applications require testers to increase the focus on end-to-end testing as interaction between handheld applications and enterprise data stores increases data processing complexity.



Lessons for Testing Enterprise Wireless Infrastructure


It's fair to say that to this point, the challenges of mobile applications testing have been largely in
the realm of device-specific hardware and software and the interfaces of those devices to wireless
networks. However, the greatest challenges are likely to be found in the deployment of next
generation networks and the accompanying services, protocols and wireless applications
middleware that will support them. Mobile subscribers have made it clear that behind coverage
and price, quality of service ranks as the third most important factor influencing customer
satisfaction and adoption.

The lessons here are:
  • Testers should develop expertise with the unique network configurations in use.
  • Thoroughly understand the network interfaces, protocols, gateways and firewalls in use and the technical issues that put their interoperability at risk. Without the ability to discern root defect causes in multiple levels of the wireless infrastructure, finger-pointing between carriers, service providers and developers abounds, and deployment costs soar.
  • Utilize established testbeds within your target deployment area. This is particularly important for complex applications, as it allows testing under known network service quality conditions, testing application survivability during cell or network handovers and dropback to slower, second generation without needed signaling features. The technology and network implementations are simply not yet mature enough to rely solely on lab testing of mobile applications. Testing on a target instance, rather than a prototype or proof of concept, will enable proper testing ofs ecurity schemes (40-bit vs. 128-bit, network authentication & roaming, WTLS/SSL translations), and performance under realistic loads (web, client/server background loads, incremental wireless traffic, variations in message size/type).
  •  Choose tools carefully. Few tools provide good support for wireless applications and infrastructure. Even where tools do exist, the level of test effort and success can vary widely with the type of gateway, complexity of the application and tool support for scripting, coding standards (WML, HDML, xHTML) and devices.
  • Focus on key features of wireless middleware platforms. If your application allows commerce transactions and depends on automated billing, then placing a test emphasis on the real-time wireless billing features of your middleware platform and interfaces to corporate systems is critical. Likewise, solutions that rely on location-based technology should get special test attention to both the device side (e.g., a GPS chip) and network side components. Similar concerns should accompany test strategies for data synchronization (between mobile devices and enterprise datastores), mobile to nonmobile user collaboration, enterprise messaging, and content formatting/transcoding.

Lessons for Testing Mobile Services and Applications

The number and type of wireless applications cited at the beginning of this article indicate the
diversity of usage mobile networks will support in the future. In terms of functional verification of
these applications, testers need to keep in mind:

  • Verification of end-to-end services will require access to in-country test facilities.
  • Testing conducted through emulators or simulators in lab testbeds cannot accomplish the same level of quality verification of the user experience as field-based testing will.
  • Emulators and simulators are useful for validating functionality and compatibility under controlled conditions, particularly during the development cycle and for white-box testing. However, field verification is necessary to ensure proper validation of services in a real world environment. Each unique configuration instance of a wireless application should be field tested as a separate solution (device, browser, data, network, carrier, gateway and enterprise components).
  • Wireless WAN/PAN interoperability will require extra focused testing. Most wireless applications and services will be delivered through a combination of wide-area wireless networks (licensed spectrum) and personal area networks (PAN), such as Bluetooth and 802.11b, which operate on unlicensed spectrums. Ensuring service and application continuity across these networks is important.
  • Test mobile applications in the same manner they are designed, but with tailored approaches. Despite attempts to the contrary, applications are still designed for a particular mobile device, and customized for the job function of each user. The same data residing within an inventory database, for example, might be accessible and displayed via separate applications:

o one for a non-mobile inventory clerk showing all inventory information
o one for a mobile sales representative showing just product availability
o one for a locally mobile stock picker showing warehouse location for product to
ship


As OracleMobile CTO Jacob Christfort asserts, "There's no free lunch." He proclaims it folly to
assume that "...you can take complicated business applications and simply transcode them." A
test strategy that takes into account the user experience of each unique mobile application and its
requirements is no less necessary than a design strategy for i-mode services that recognize the
attraction of downloadable cartoon characters and customizable ring tones. The key is to know
your audience, your user base, your application requirements and your infrastructure. Or risk a
repetition of the same mistakes that have stumped developers and integrators in the web and
client server domains.”

Monday, September 7, 2009

This article is
Giving it here just to share his knowledge and experience with everyone-

Testing Wireless Java Applications



Wireless applications written in the Java programming language (wireless Java applications), like all other types of software, must be tested to ensure functionality and usability under all working conditions. Testing is even more important in the wireless world because working conditions vary a lot more than they do for most software. For example, wireless Java applications are developed on high-end desktop machines but deployed on handheld wireless devices with very different characteristics.

The aim of this article is to help you test your wireless applications. The article:

  • Provides an overview of software testing
  • Describes the challenges in testing wireless applications
  • Presents a tutorial on testing wireless applications
  • Furnishes testing checklists for user interface, networking, and other areas
  • Discusses certification programs for applications targeted at the Java 2 Platform, Micro Edition (J2ME applications)

Overview of Software Testing

Software testing is a systemic process to find differences between the expected behavior of the system specified in the software requirements document and its observed behavior. In other words, it is an activity for finding errors in the software system. There is no one agreed-upon goal of software testing. One school of thought describes the goal of testing as demonstrating that errors are not present. Dijkstra (1930 - 2002) describes the goal of testing as showing the presence of faults but not their absence. The ultimate goal, however, is to find errors and fix them so users can be confident that they can depend on the software.

Errors (also known as bugs or glitches) in software are generally introduced by people involved in software development (including analysts, architects, designers, programmers, and the testers themselves). Examples of errors include:

  • Interface specification: Mismatch between requirements and implementation.
  • Algorithmic faults: Missing initialization, branching errors, or missing tests for null.
  • Mechanical faults: The user manual doesn't match actual conditions or operating procedures.
  • Omissions: Some of the features described in the requirements documents are not implemented.

Many developers view the subject of software testing as "not fashionable," and as a result too few of them really understand the job software testers do. Testing is an iterative process and should start from the beginning of the project. Software developers need to get used to the idea of designing software with testing in mind. Some of the new software development methodologies such as eXtreme Programming stress incremental development and testing. eXtreme Programming is ideally suited for some types of applications, depending on their size, scope, and nature. User interface design, for example, benefits highly from rapid prototyping and testing usability with actual users.

One way to make testing simple is to design applications with testing in mind. Organizing the system in a certain way can make it much easier to test. Another implication is that the system must have enough functionality and enough output information to distinguish among the system's different functional features. It is now common to describe a system's functional requirements (features that the system must provide) by using the Unified Modeling Language (UML) to create a use case diagram, then detailing the use cases in a consistent written form. Documenting the various uses of the system in this way simplifies the task of testing the system by allowing the tester to generate test scenarios from the use cases. The scenarios represent all expected paths users will traverse when they use the features that the system must provide. Developers distinguish these functional requirements from system requirements not related to particular functionality, constraints related to performance, configuration, and usability.

Testing Activities

The testing that needs to be performed can be split into two classes: functional (black-box) testing and structural (white-box) testing. In black-box testing, each of the components -- and ultimately the system as a whole -- is treated as a black box, and testers verify that it supports all the features identified (often as use cases) in the requirements documents. Black-box testing activities include:

  • Unit (or Class) Testing: In this testing activity, components are tested separately. Because some objects may depend on other objects that are not yet available, you may need to develop test drivers and test stubs. A test driver simulates the part of the system that calls the component under test. A test stub simulates a component called by the tested component.
  • Integration Testing: In this activity, objects are integrated in increasingly large and complex subsystems. This is an incremental testing process.
  • System Testing: In this activity, the system is tested as a whole. Testers employ various techniques at this stage, including functional testing (testing actual behavior against documented requirements), performance testing (testing nonfunctional requirements), and acceptance and installation testing (testing against the project agreement).

Black-box testing concerns itself with externally visible behavior, and ignores the source code. In white-box testing, the focus is on the code that produces the behavior. One common white-box testing activity is path testing, also known as code coverage. Its goal is to identify faults in the implementation by exercising all possible paths through the code at least once. Testers check that every branch in the code has a test that exercises that branch.

.
. . .
. Note: The starting point of path testing is a flow graph consisting of nodes representing executable blocks, and associations (or edges) representing flow of control. The minimum number of tests necessary to cover all edges is equal to the number of independent paths through the flow graph. This is known as the cyclomatic complexity (CC) of the flow graph, which has the formula:
CC = number of edges - number of nodes + 2
.
.
.

Fortunately, you don't have to draw flow graphs for your code by hand, as several code coverage tools are readily available.

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.

Figure 1: Screen 1 Figure 1: Screen 2 Figure 1: Screen 3

Figure 1: Messaging Application

In this example, start the test at the Login window. Enter a user name and a password and press the soft button labeled Login. Enter a valid user name and password. The application should display the main menu. Does it? The main menu should display a SignOut button. Does it? Press the SignOut button. Does the application return to the Login screen? Write yourself a note to raise the question, "Why does the user 'log' in but 'sign' out?" Now enter an invalid user name or incorrect password. The program should display a meaningful message box with an OK button. Does it? Press the OK button. Does the application return to the Login screen?

You need to test the GUI navigation of the entire system, making notes about usability along the way. If, for example, the user must traverse several screens to perform a function that's likely to be very popular, you may wish to consider moving that particular function up the screen layers.

Some of the questions you should ask during usability testing include:

  • Is the navigation depth (the number of screens the user must go through) appropriate for each particular function?
  • Does the application minimize text entry -- painful on a wireless phone -- or should it provide more selection menus?
  • Can screens of all supported devices display the content without truncating it?
  • If you expect to deploy the application on foreign devices, does it support international character sets?

The MIDP Style Guide provides helpful hints about user interface design.

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).

Automating Unit Testing

One of the unit-testing tools most widely used by Java developers is the JUnit framework. A similar framework for J2ME unit testing is J2MEUnit. Here is a sample test:

import j2meunit.framework.*;
public class TestLoginWindow extends TestCase {
public TestLoginWindow() {
super("null");
}
public TestLoginWindow(String s) {
super(s);
}
protected void runTest() throws java.lang.Throwable {
if(getTestMethodName().equals("testLoginWindow"))
testLogindWindow();
}
public Test suite() {
return new TestSuite(new TestLoginWindow().getClass(),
new String[] {"testLoginWindow"});
}
public void testLoginWindow(){
// test it
// use assert(String, boolean)
}
}
}

When using J2MEUnit in your testing, you need to:

  • Create a subclass of TestCase, like TestLoginWindow in the example.
  • Override the method runTest() as in the example. Because J2MEUnit doesn't use reflection, when you override runTest() you must call getTestMethodName() to check the name of the test method (testLoginWindow() in the example above).
  • Override the method suite() so that it returns a TestSuite object containing the name of the class for the test case and the names of the test methods.
  • To check a value, call the assert() method and pass a boolean that is true if the test succeeds.

J2MEUnit provides two test runners that allow you to run your tests, collect results, and display them:

  1. Text-based: This test runner provides simple-text based output of the results. To use it, add the following main method to any subclass of TestCase:
    public static void main(String argv[]) {
    String[] {"j2meunit.examples.TestOne"};
    j2meunit.textui.TestRunner.main(runnerArgs);
    }

  2. GUI-based: As the name implies, this test runner provides GUI output. To use it, you must compile and preverify the J2MEUnit framework, then:
    • Create a subclass of j2meunit.midp.ui.TestRunner.
    • Override the startApp() method.

Debugging Information

Adding debugging information in your code is very important. You can display trace points, values of variables, and other information during testing and debugging. One way to minimize the tedium of writing System.out.println() calls is to write a utility method such as the following:

public void debug(String s) {
System.out.println("DEBUG: "+s);
}

You can easily use the debug() method to display debugging information, then later remove the calls from production code.

The J2ME Wireless Toolkit provides a debugger that's easy to use. If you use the Sun ONE Studio 4, Mobile Edition, see the article Debugging Wireless Applications with Mobile Edition for useful guidance.

Testing Checklists

This section provides checklists you will find useful when testing your application, in both emulation and live environments. These checklists include tests that are usually performed in the Motorola Application Certification Program, described a little later in the article.

Navigation Checklist

  • Application name: Make sure your application displays a name in the title bar.
  • Keep the user informed: If your application doesn't start up within a few seconds, it should alert the user. For large applications, it is a good idea to have a progress bar.
  • Readable text: Ensure that all kinds of content are readable on both grayscale and color devices. Also make sure the text doesn't contain any misspelled words.
  • Repainting screens: Verify that screens are properly painted and that the application doesn't cause unnecessary screen repaints.
  • Soft buttons: Verify that the functionality of soft buttons is consistent throughout the application. Verify that the whole layout of screens and buttons is consistent.
  • Screen Navigation: Verify that the most commonly used screens are easily accessible.
  • Portability: Verify that the application will have the same friendly user interface on all devices it is likely to be deployed on.

Network Checklist

  • Sending/Receiving data: For network-aware applications, verify that the application sends and receives data properly.
  • Name resolution: Ensure that the application resolves IP addresses correctly, and sends and receives data properly.
  • Sensitive Data: When transmitting sensitive data over the network, verify that the data is being masked or encrypted. Use the SSL protocol.
  • Error handling: Make sure that error messages concerning network error conditions (such as no network coverage) are displayed properly, and that when an error message box is dismissed the application regains control.
  • Interruptions: Verify that, when the device receives system alerts, SMS messages, and so on while the application is running, messages are properly displayed. Also make sure that when the message box is dismissed the application continues to function properly.

Other Important Issues

  • Successful startup and exit: Verify that your application starts up properly and its entry point is consistent. Also make sure that the application exits properly.
  • Classes outside the MIDP and CLDC specifications: Unless you are willing to sacrifice portability and, in some environments, certification, ensure that the application does not use classes not included in the MIDP and CLDC specifications.
  • User manual: Verify that all product documentation is accurate, and consistent with the software's actual behavior.

Certification Programs

Several certification programs for J2ME applications are available. The two most widely known at this writing are those sponsored by Motorola and Nokia.

Motorola

The Motorola Application Certification Program is designed to promote consistent user interface and high standards of operation in J2ME wireless applications.

The benefits of the certification program cited by Motorola are:

  • Valuable testing and feedback results to the developer
  • Higher application quality
  • Improved customer experience
  • Access to marketing and promotion programs

Note that this certification program is not free (check the pricing information); but it is a good way to form a partnership with an important vendor.

To get Motorola to certify your J2ME application, you must schedule a test by submitting a package -- a MIDlet suite or a single MIDlet -- online at http://www.qpqa.com/motorola/iden. To do so:

  1. Fill out an online submission form
  2. FTP or email a pre-tested candidate of your application
  3. Supply a copy of your documentation in either .pdf or .html

For more detailed information on the certification process and the fees involved, check out the Motorola Certification Application Program.

If your J2ME application meets all the certification requirements, Motorola will provide you with the "Motorola Compatible" logo, and will place your application and user manual on Motorola's application distribution server. If your J2ME application does not achieve certification the first time you submit it, you can fix the problems and resubmit (for an extra charge).

Nokia

The Nokia OK Program is a testing and evaluation process for third-party applications that run on Nokia mobile devices. Once an application completes the process, it is granted the Nokia OK designation, meaning that the application has met the Nokia standards and can be used on Nokia products with confidence.

The benefits of the program according to Nokia include:

  • Allows end users to identify third-party applications available for Nokia mobile devices
  • Raises your application's profile with the Nokia OK logo
  • Provides easy access to Nokia sales channels
  • Makes your application visible on Nokia Mobile City, a source of information for operators and consumers that includes third-party solutions that Nokia sees as adding value to its products

The certification process is similar to Motorola's. It is less expensive, but not free. For more detailed information, visit the Nokia OK Program.

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.

Thursday, August 13, 2009

Testing Mobile Application

Testing on the mobile is very different and sometimes a more involved process then
testing conducted on the desktop environment because of the following key differences
between the desktop and mobile :-

Constraints and difference in hardware capabilities

The screen size of a typical desktop nowadays is around 19-23 inches as compared to the

mobile which could be around 1-2 inches, with limited color display options, the input

mechanisms of a desktop with a full QWERTY keypad with mouse as compared to a limited

keypad, both virtual and actual along with the absence of a mouse, the processor

capabilities are some of the key hardware differences between a mobile and a desktop.

These constraints do limit the amount of processing/input/output which the application

can possibly do in a satisfactory time line from a user perspective. It then becomes

imperative for the development team to take these factors into consideration while

developing and testing any application for the mobile environment.

Varying environments of usage

A mobile by its very definition is a device always ready to use and generally on the go,

compared to a desktop which pretty often sits on the desk meant for sedentary usage, even

in the case of laptops to a large degree. A mobile could be used while shopping,

traveling, driving and many other divergent activities, so it’s very important that the

applications developed for a mobile subscribe to the basic idea of a mobile and should

not place any demands on the user from a usability perspective. More often then not while

using applications on the mobile; the user wants faster response and quicker access to

services and features with the least possible input/decision making process. This should

be kept in mind while developing the look and feel, functionality and usage patterns for

the application.

Divergent demands/expectations of the end user

Compared to a desktop a user has different demands and expectations from a mobile. For

instance a typical user would expect to use different applications like

phone/camera/music players at the same time, and expect all of them to work reliably

together. The developer thus has to ensure that their application is not making too many

demands or using up too many resources off the hardware of other inbuilt applications up

to a point where they might end up hampering the performance of other applications.

It is against this backdrop that a mobile application has to be designed, developed and

then tested.

I found an article about mobile and handheld usability testing written by Tim Fidgeon. He

pointed out that mobile and handheld testing could actually be more important than

computer-based usability testing. Could he be right??

He has three main arguments for his statement.

A growing number of users are accessing the internet from mobile devices:

This is true. The awareness of the opportunity to get online anywhere you are is

spreading. More often then not the websites/content have been developed keeping in mind

the IO capabilities of a desktop and it doesn’t get rendered properly on the mobile. It

is thus imperative to ensure that the website development is done keeping in mind the

mobile, and should also ensure lesser inputs required in the case of mobile. Generally on

a desktop lot of times in case of IO errors, the developer notifies and expects response

from the user, but in the case of mobile the interaction between the user and the system

should be minimized because of the constraints discussed earlier.

Going online with your mobile is fairly new way of using the internet:

Computers have been in use “for ages”. Even if someone makes a rather unique design for a

web site, users are somewhat expert users and can navigate in almost all conditions.

Accessing the internet with mobile devices hasn’t been possible for that long. It’s a new

thing and the users may still be a bit confused about this opportunity, they may find the

navigation, layout and other things very different from the desktop environment. The

typical user could as well be a complete novice at this mode of accessing the internet

and this poses a challenge for the developers to ensure that they make the user at ease

while using the content, otherwise chances are that the user might end up abandoning the

idea of using the services through a mobile once and for all.

There is much more varying with different mobile and handheld device platforms than with computers:


The sizes of the screens differ. The platforms differ. With computers it doesn’t really

make much of a difference whether you use IE or Firefox. But it might make a big

difference whether you use NOKIA E90 communicator or iPhone, for example. Thus it is

imperative to ensure that the look and feel remain pretty much consistent on different

platforms/form factors and devices, as too much changing might end up confusing the user

even more.

The tester needs to ensure that the applications developed for the mobile are able to

perform reliably, with both speed and accuracy. They also need to ensure that the

usability aspect has been taken in to consideration.