Tuesday 19 November 2013

Testing APPs - Mobile handset Vs. Simulator



Mobile phone communication standards have advanced from the basic analog communication channel to high-speed fourth generation (4G) today. Today a smartphone / tablet user enjoys a ubiquitous status, thanks to advancements in wireless network technology. Figure depicts the evolution of wireless networks over the years and the impact it has on the phones we use:



 How important is mobile testing?
The adoption of smartphones and other mobile devices is rapidly increasing. In the short term, mobile Internet usage will take over desktop Internet usage and the world’s population will be outnumbered by the quantity of active mobile devices. Traditional websites started to have an optimized version for mobile devices, as a complement. However, nowadays the focus is on the apps that are downloaded and installed on the device. In some cases they are not a complement to a main product, but are the main product themselves. Unlike mobile websites, apps can take advantage of all the features of the mobile device and increase customer loyalty. Bearing in mind that devices and operating systems (OS) are evolving continuously and the app market is highly competitive, we notice that time to market tends to be reduced in order to deliver before the competition. In this context, an effective testing strategy becomes a critical success factor.


The testing scope
The mobile world is highly diverse. Are you aware of all the variables that should be considered when designing a test plan for mobile testing? The following is a list of most of them:

▪ One app per operating system. There will be a different app per supported platform and each one should be tested. We have Android and iOS, Symbian, BlackBerry OS and Windows Mobile. You will also need devices for each platform.

▪ Operating system version – different versions of the same OS may have different supported features. The app should have both implementations in order to work properly on all OS versions. That is something that should be checked. It will be important to have a device with the last OS and one or two more with previous versions.

▪ Support for previous versions of the app – when a new version of the app is released you should make sure that previous versions, where users have not updated it yet, will not face bugs because of the changes introduced.

▪ Device capabilities – smartphones can make calls, but iPod Touch and some tablets cannot. The iPad version 1 has no camera. How well does your app adapt to the available features?

▪ User settings – the user may have no email account set up on the device. Some features like geolocation, push notification alerts, and sound can be disabled by the user. How well can the App cope up with such user settings?

▪ Interruptions – mobiles are all about multitasking. How does your app do if the device receives an incoming call, SMS, application alert, low battery alert, or application switch? There can be numerous scenarios like this to be tested for an app.

▪ Features of your app – if your app adapts the interface to the orientation (landscape or portrait), or supports multilingual or other local configuration, these should be considered in the testing scope. The languages with the longest words or special characters are the more error prone in the visual presentation.

▪ Real connection – if the app is supposed to be used through a slow connection (like 2G, 3G, Edge, GPRS, etc.) it should be tested with that connection speed.

▪ Policies and guidelines – your app must comply with the policies and guidelines of the distributor (Android Play Market, Apple AppStore, etc.). It is worth checking them. If the app gets rejected, you may lose valuable time in the process.

Finally, you may have one version for each device generation – WAP for non-smartphones, HTML 4 for most smartphones, HTML5 Webapps for the new ones and tablet versions. If you want to see an example of all this diversity, try accessing Twitter and Facebook with a desktop computer, a tablet, a smartphone, a WAP-capable mobile phone, and also download their apps for Android, iOS, Symbian, BlackBerry OS and Windows Phone. You will find different products for each platform.


Mobile Devices or simulators
The eternal question. The pros and cons of each of these approaches must be carefully considered by enterprises when formulating a mobile testing strategy. Here are some of the advantages and disadvantages of each approach:

Handset Simulators
A handset simulator is a software application which mimics all of the typical hardware and software features of a typical mobile device in its real environment. Put simply, simulation is a representation of a real system. Simulator gives us some feature to help us to perform testing activities.


 ADVANTAGES:

Lead time and cost
The big advantage is money. Designing, building, testing, redesigning, rebuilding and retesting, is part of an project life cycle and it certainly time consuming.

Simulations take the building/rebuilding phase out of the loop by using the model already created in the design phase. Most of the time, simulation testing is cheaper and faster than performing multiple tests on the design each time.
Moreover, simulation systems are easier. Most of the current simulators are free and mobile phone manufacturers have made enormous efforts to ensure their platforms are easy to test and that there is a wide range of solutions available.

Hardware connections
Simulation systems are sometimes used with specialized hardware. But emulators are simply client software that runs locally on your PC, they have less latency than real devices connected to the local network or in the cloud. Depends on the application, this latency should be carefully considered when the application runs on a real devices to avoid negatives effects in our application. Simulators are great friends for development and QA teams. They saves a lot of time and money.
 

DISADVANTAGES

Simulation errors
The first of these disadvantages is simulation errors. Any incorrect key stroke has the potential to alter the results of the simulation and give us wrong results. To get your simulation to give us accurate results we must first run a base line to prove that it works

If simulations need to be acceptable in the general community, there needs to be a lot of test scenario results to simulate them.

Hardware-Software differences
Another aspect of testing on a simulator is the differences between software and hardware. Simulators do not reflect the specific hardware and software features of each supported device.

Performance
The last important aspect of simulators is where the PC is running. Depending on the processing power of the PC running the emulator and the type of handset or smartphone, with limited CPU and memory, being used for testing, performance on the emulator may be unrealistically good or bad.


Real Handsets
By definition, handsets are physical resources which need to be managed. Unlike simulators, where additional “handsets” can be either additional software installed or simple configuration, real handsets are something physical to own.
For one, it is important to note that testing on real handsets is not an optional task, it is always a given task. As the simulators, there are some advantages with testing on real handsets.

ADVANTAGES:

User Experience
Mainly, the application will be run by different kind of users and on different devices, and testing on real handsets always gives us a true user experience, because is the only way to truly understand the user experience. In addition, working with real handsets always gives us accurate results and we will find actual application issues.

Performance Testing
Performance testing is always an important task when testing. This task is difficult to perform with a simulator, but, when using real handsets, it is easier to expose performance defects, as well as defects which are the result of the handset itself or its environment. In addition, we will find crashes, and memory leak issues which can not found on an emulator

Interoperability Testing
Some of our mobile applications will work through mobile communications networks. It is important to perform Interoperability testing in a live network with real device, because if we perform this kind of testing running on simulator, the network connection will be different. With testing on real handsets we can find jitters, due to interference and crosstalk with other signals which can affect the performance of processors in our application, introduce clicks or other undesired effects in audio signals, and loss of transmitted data between network devices. It is important to note that the amount of tolerable jitter depends on the affected application.

Security
A common concern amongst mobile users is security. People are sensitive to data, such as bank account numbers that remain on handsets, or if passwords are displayed on the screen. Testing for these types of security concerns in a simulated environment are not a good use of time because is the behavior of the actual handset that needs to be tested. Adding to the challenge, not all handsets have the same security designs, so each device must be individually tested. Real handsets have not been designed with testing in mind. It means there are some disadvantages to consider when the testing activities are performed with real handset.

Interoperability Testing
As commented above, interoperability testing is performed in a real handset. But sometimes advantages become disadvantages. Interoperability testing requires, not only handset costs, personal costs and time; this kind of testing is hard (although there are some expensive simulators for telecommunications networks) and takes too long.



Conclusion
We have seen both advantages and disadvantages between testing on simulator and testing on real handsets. Taking a look, simulators are great, but we should not assume that just because our software works perfectly on an simulator, it will work in the same way on the real device. However, sometimes there is just no substitute for the real thing. For this reason, simulators are a very useful step in any testing program, but should never be used to replace real handset testing, because it gives you always a real
state of your application. A good approach is to use simulator in the early stages of testing, when the maturity level of the application is low and simulators accelerates the resolution of problems, and the use of real handsets in the late stages. However, the decision at what stage should be use a simulator or a real handset depends on the organization. A lot of factors should be carefully considered, as deadlines, costs, personal involved in QA activities and customer demands. Using the combination a simulator and real handset, along with a solid test plan, brings us to the point where our software is stable and appears to be working correctly on a large number of devices.

Monday 5 August 2013

Smart Mobile Apps – Smart phones and beyond



Mobile Environment Growth
To say that the use of mobile applications is booming would be an obvious understatement. In 2010, mobile application stores recorded an estimated $6.2 billion in overall sales, including $4.5 billion in  application downloads. By 2013, some analysts expect mobile application revenues to exceed $21 billion. As Figure 1 indicates, mobile devices are already the most commonly owned technological devices in the world. There are 3.3 billion mobile subscribers in the world, as opposed to 1.5 billion  televisions, 1.4 billion credit cards, 1.3 billion land line telephones, 0.9 billion personal computers, and 0.8 billion cars.

There are currently 3.75 billion unique mobile subscriptions worldwide, and 1.45 billion mobile subscribers have a second or third mobile subscription. This makes for a total of 5.2 billion mobile subscriptions worldwide. In 2010, mobile voice calls grew by about 2% (to $625 billion), while mobile data accounts grew by about 17% (to $295 billion).

For everybody who uses a Smartphone or tablet apps are indispensible. An app is an application that is developed for a specific environment. Within the mobile context, the commonly used name is mobile app. App technology has been well known since the commercial launch of the iPhone in 2007. With the release of the Apple App Store, a new sales channel for software applications was opened. Comparable app stores for other operating systems, such as Android Market, Nokia Store, BlackBerry App
World, Mac App Store, Samsung Apps, and Windows Phone Marketplace were launched soon afterwards. For a long time, only apps for personal use were in the spotlight, but now this has changed. The usage of apps for business purposes is increasing
significantly. Companies are using apps for banking, sales, marketing, or internal communication. In addition, B2B or enterprise apps, which facilitate interaction with back end tools and mobile devices by means of web services or cloud platforms, are capturing market share. In the course of this development, the demand for methodical quality management is increasing.

Where are we today?
It is estimated that six billion people are already using mobile phones. A graphical analysis given below on this growth trend actually shows us the alarming speed at which mobile users grew over the last five years. The world is moving faster than ever towards minimized gadgets. Smartphone user statistics are rewritten almost every week. No one is able to effectively predict the total number of Smartphones flooding into the market. All expectations and predictions are broken when it comes to Smartphone users and Smartphone applications. Every day, millions of users depend on their mobile browser to update themselves with current happenings, mail services, social networks, etc. This major turn of events, in which people are slowly stepping away from their laptops or computers and getting more addicted to their handheld devices, leaves us with a large window of opportunity to explore. Everyone is exploring the option to drive their world from their fingertips. Applications are being loaded into the app stores of leading mobile operating providers at a speed which is beyond our imagination. Every day, each user wakes up to the war between the Smartphone companies trying to deliver the best to the end user.

Mobile Apps – An Evolution driven by end users
Will the way in which developers build mobile apps today remain the same a few years, months or even weeks from now? Probably not.
Countless new apps are being launched daily, and the features and technicalities of these new applications are what analysts tend to work on. However, what most of them fail to recognize is that end user behaviors drive this evolution. In fact, the user experience will be the driving force of change in the way mobile apps are developed in the coming years. 

“The report, written by analysts Jeffrey Hammond and Julie Ask, explains how modern mobile applications will evolve over the next few years and what development teams should prepare for now.

If you’re a developer looking to build modern applications that will deliver contextual customer experiences, there are UI changes coming that you will need to understand.
But think about what’s going to happen when they have to be able to see the road or make sure that they don’t trip and fall while they’re getting cues from these applications.

The possible UI changes developers should be aware of:
Peripheral interaction
Currently, app developers and mobile advertisers thrive off the ability to fully engage users in an app. This will make the change from a fully engrossed app experience, to a more peripheral interaction, difficult for developers to adjust to

Multiple Modes of Input
“UIs are going to change focus from touch to voice, according to the report. ‘When you strap that device onto your arm (before a run, for example), you’re not going to look at it anymore until you’re done with your run. Voice takes over,’ Hammond said. ‘Also, when you’ve got applications that are in the car, the natural mode also shifts to voice. But you don’t only want to have voice because, if you’ve got an application and you’re in a crowded restaurant, you’re going to want to shift back to touch. So developers have got to be able to essentially support multiple modes of input.’
Hammond said that developers need to even understand which mode is going to be the preferred mode. He said there’s no reason for developers to not take advantage of the microphone that detects ambient sound and say, ‘Oh, well, with the decibels here, I can’t really understand voice input so I’m going to automatically shift to text input or touch input instead.’”

Wearable and Connectable
“Wearable and connectable are definitely coming in the near future, the report said. ‘I don’t know if you’ve seen some of the prototypes that have been shown around on batteries that are flexible,’ Hammond said. ‘So you can conceivably have a battery woven into your jacket and be charging your cell phone all day long with a 10-ounce, flexible battery that’s in the back panel of your jacket. Or imagine shoes that can generate power while you’re walking around. If you’ve got that battery panel hooked up to little power generators in your shoes and you go for a 40-minute run, you’ve just generated enough power to power your cell phone for the rest of the day."

Form Factor
“There’s also no reason we can’t see these mobile devices change pretty radically in form factor, Hammond said. ‘Why do you have to have the 4-inch device up by the side of your face?’ he asked. ‘If you have a pair of glasses on, who’s to say you can’t have a brick sitting in your briefcase or your attaché that’s doing most of the processing and the glasses are essentially the local dumb terminal, if you will. It’s kind of like the fifth generation down from a 3270 terminal.’ Hammond said that by 2014, those types of glasses will definitely be available.”
If your thinking “sure… this won’t happen for years”, think again, or rather do some research. There are prototypes of devices encompassing these features out being tested  at this very moment. It won’t be long till developers are changing their app dev processes to fit a vastly different interface. Luckily, there are great mobile app quality and testing tools out there to test for inconsistencies, which tend much more prevalent when you’re developing for an new interface or device for the first time.

Thursday 25 July 2013

SOFTWARE TESTING


Software applications are today’s integral part of human life and plays a vital role in our daily life. We humans are addicted to the use of software all through the day 24X7. No matter where we are and what we are doing. The cell phones we use, the car we drive, the home appliances we use at home for our daily needs are in some form or the other driven by software inbuilt with in the device.
Software used involves the user’s emotions and experience highlights the, affective, meaningful and valuable aspects of human-computer interaction. Additionally, it includes a person’s perceptions of the practical aspects such as utility, ease of use and efficiency of the system.

Software – its prominence:

Users don’t have to buy what is tested.  Instead, they get forced to use it the way it works.

The important aspects of software are
  1. Accomplishments – When using the software, people need to feel a sense of accomplishment without disrupting the momentum of their lives.  They need to feel like they are getting something done that was otherwise difficult.  They need to do this without giving up any part of their life.  Example: Can they accomplish something while waiting in line?
  2. Connection – When using your software, they should be motivated to connect with people they actually care about (e.g., not Facebook friends).  These connections should be enriched in some manner.  Example: Were they able to share it with Mom?  Did they talk about it over Thanksgiving dinner?
  3. Identity - When using the software, they should feel like they’re not alone.  They should be asking themselves, “Who am I?”, “Do I fit in with these other people?”.  They should be able to share their identity with joy.
  4. Sensation – When using the software, they should experience a core sensory pleasure.  Examples: Can they interact with it in a fresh way via some new interface?  Can they see or hear something delightful?
The User expectations in short:       
  • Modern users have no tolerance for anything but the most amazing experience.
  • The app should help them get from thought to action, nothing in between.
  • Users expect software to gather all the data they need and think for them.
Why software Testing
Software testing is a process used to help identify the correctness, completeness and quality of developed computer software. With that in mind, testing can never completely establish the correctness of computer software.

The definition of testing is "the process of questioning a product in order to evaluate it", where the "questions" are things the tester tries to do with the product, and the product answers with its behavior in reaction to the probing of the tester.

Testing helps is Verifying and Validating if the Software is working as it is intended to be working. This involves using Static and Dynamic methodologies to Test the application.

Because of the fallibility of its human designers and its own abstract, complex nature, software development must be accompanied by quality assurance activities. It is not unusual for developers to spend 40% of the total project time on testing.

Testing objectives include

1. Testing is a process of executing a program with the intent of finding an error.
2. A good test case is one that has a high probability of finding an as yet undiscovered error.
3. A successful test is one that uncovers an as yet undiscovered error.
Taxonomy
There is a plethora of testing methods and testing techniques, serving multiple purposes in different life cycle phases. Classified by purpose, software testing can be divided into: correctness testing, performance testing, reliability testing and security testing. Classified by life-cycle phase, software testing can be classified into the following categories: requirements phase testing, design phase testing, program phase testing, evaluating test results, installation phase testing, acceptance testing and maintenance testing. By scope, software testing can be categorized as follows: unit testing, component testing, integration testing, and system testing.
Software testers – The thought process
  • If you want to be excellent at testing, you need to use System 2 Thinking.  Testing is not a straight forward technical problem because we are creating stuff that is largely invisible.
  • Don’t plan or execute tests until you obtain context about the test mission.
  • Leaping to assumptions carries risk.  Don’t build a network of assumptions.
  • A tester’s job is to preserve uncertainty when everyone around us is certain.
  • Avoid assumptions when:
o    critical things depend on it
o    when the assumption is unlikely to be true
o    the assumption is dangerous when not declared
                        Huh?  Really?  So?   (James Bach’s critical thinking heuristic)
o    Huh? – Do I really understand?
o    Really? – How do I know what you say is true?
o    So? – Is that the only solution?


The art of being happy at work
I came across an article  to make  ways to make my day funnier and more adventurous. Came across an explanation on the word F.L.O.W
FLOW in psychology is the mental state, where a person loose sense of time by doing something very interesting. So when you feel that way, that’s a full happiness at work.
People who experience flow describe it as “a state of effortless concentration so deep that they lose their sense of time, of themselves, of their problems,“ and their descriptions of the joy of that state are so compelling that Csikszentmihalyi has called it an “optional experience” 
everybody experienced that state in some kind of activity. Kids like to play video games a lot losing sense of time.



F
Focus
Focus on something  in particular task, goals achievements
L
Learning
Learn Something New
O
Optimize
Keep Balance between Boredom and anxiety areas
W
Wow
Enjoy Every Single Moment
F.L.O.W
A state of effortless concentration by doing something interesting