<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7841673277992289884</id><updated>2026-04-06T00:42:31.591-07:00</updated><category term="Android"/><category term="Fire Event on other app"/><category term="INJECT_EVENTS"/><category term="Mobile testing"/><category term="Robotium"/><category term="emulator"/><category term="simulator"/><category term="testing"/><title type='text'>Tester&#39;s Opine</title><subtitle type='html'>A complete view of the product from user&#39;s prospective</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-6120738514581555591</id><published>2013-11-25T05:05:00.002-08:00</published><updated>2013-12-14T18:15:29.725-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="emulator"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile testing"/><category scheme="http://www.blogger.com/atom/ns#" term="simulator"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>How risky is the testing of mobile application only on simulator / emulator</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Launching the application based on the testing on emulators / simulators could be very risky for companies / developers and may affect the brand value of the application and company. Developing a mobile application is very easy and quick these days and requires very minimum investment. Now a days with the existence of so many application stores, it is very easy to launch the application and reach to wide user base but if application has issues then it&#39;ll get negative feedback even if concept of the application is very good and has the potential of becoming top rated app. This happens mostly because of absence of proper testing of the application from the technical as well as user&#39;s point. &lt;br /&gt;
&lt;br /&gt;
Many companies especially start-ups, do not invest much on testing of their mobile application that affects them adversely. Some companies do perform some testing but only on emulators / simulators instead of actual mobile handsets. It is very difficult to test the application on each and every available mobile handset but app should be tested on some candidate handsets. First few iterations of testing should be done on emulators / simulators but final testing should be done on a set of actual handsets. Following are some cons of testing application only on emulators / simulators:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Network issue: Emulators emulate the network speed but emulation is not 100% correct and most of the emulators use the network speed of the PC so performance of AUT on emulator / simulator may not be very reliable.&lt;/li&gt;
&lt;li&gt;Resolution issue: Screen size and resolution of a PC also affects the app UI especially in case of gaming apps e.g. user experience on 4 inch screen having 1136x640 resolution is different from that on 4 inch screen having 800x480 resolution i.e user experience changes based on pixel density. Emulating exact screen size and screen resolution is very difficult on emulators as emulators use resolution of the PC.&lt;/li&gt;
&lt;li&gt;PC resources: Emulator uses PC resources because of which actual user experience may be very different from that on emulators.&lt;/li&gt;
&lt;li&gt;Apps using device camera or GPS cannot be tested properly on emulators.&lt;/li&gt;
&lt;li&gt;Carrier specific testing cannot be done on emulators.&lt;/li&gt;
&lt;li&gt;It is difficult to do interrupt testing (e.g. Call / SMS etc.) on emulators.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/6120738514581555591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2013/11/how-risky-is-testing-of-mobile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/6120738514581555591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/6120738514581555591'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2013/11/how-risky-is-testing-of-mobile.html' title='How risky is the testing of mobile application only on simulator / emulator'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-902850013983870648</id><published>2013-04-04T04:46:00.004-07:00</published><updated>2013-04-04T04:46:56.989-07:00</updated><title type='text'>Testers are no more road blocker</title><content type='html'>Few days back I attended a conference on &quot;Verification Futures&quot;. It was primarily for hardware verification engineers. There were speakers from major EDA vendors like Synopsys, Mentor and Cadence. They talked about current challenges faced by verification engineers and innovations happening in the industry.&lt;br /&gt;
&lt;br /&gt;
A key trend which is observed, is change of focus from design oriented VIPs to verification oriented VIPs which means if anything cannot be tested and then it should not be designed which is very true in software industry also.&lt;br /&gt;
&lt;br /&gt;
As in software industry, focus is moving from first develop and then test to first write test and then develop code for it i.e. TDD (Test Driven Development). As complexity of the softwares is increasing day by day so proper testing of the software is becoming very-very important and now both clients and senior management have realized the importance of testing and hence are more concerned about proper and thorough testing and testing artifacts. Now a days, testers are not just black box tester they dig into code to find probable issues and suggest solutions. Instead of performing only random testing, they are now more systematic and focused, they use both scientific methods as well as their experience. They are expected to have more technical as well as domain knowledge.&lt;br /&gt;
&lt;br /&gt;
In essence now a tester is no more considered as someone who blocks the release of the product but as one who is integral part of the team and who provides confidence in the product.</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/902850013983870648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2013/04/testers-are-no-more-road-blocker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/902850013983870648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/902850013983870648'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2013/04/testers-are-no-more-road-blocker.html' title='Testers are no more road blocker'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-8302797235724000082</id><published>2012-12-25T04:30:00.001-08:00</published><updated>2012-12-25T04:30:37.824-08:00</updated><title type='text'>Tester surprises everyone</title><content type='html'>&lt;br /&gt;
&quot;Oh this is also the functionality, I didn&#39;t know&quot;, have you ever heard this line from developers, probably yes. Many times we find a scenario which even developers are not aware of. This happens because each developer works on his/her module and may not be aware of the big picture of the product. Many times even product owner gets surprised with the issues which testers find in testing, because even he/she might not have thought from that point.&lt;br /&gt;
&lt;br /&gt;
Product owner usually defines high level requirements so, it is the responsibility of the requirement gathering team to ask correct questions to get details. Many requirements are very obvious for PO since he/she is very familiar with the product domain, but those small and obvious requirements might play very important role in development and testing of the product.&lt;br /&gt;
&lt;br /&gt;
PO looks at the product from user&#39;s point of view and a developer looks at the product from technical point of view. But a tester actually looks at the product from both user&#39;s point of view as well as technical point of view, so it is very important for him to be part of requirement gathering. Moreover everyone (developer / TL / PM / PO) look at the tester as a domain expert. So it is very important for tester to get some domain knowledge before actually starting testing. He has to think out of the box to find out some very important and severe issues in the product.</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/8302797235724000082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/12/tester-surprises-everyone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/8302797235724000082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/8302797235724000082'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/12/tester-surprises-everyone.html' title='Tester surprises everyone'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-4235244640493578398</id><published>2012-11-22T02:07:00.000-08:00</published><updated>2012-11-22T02:07:10.638-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Fire Event on other app"/><category scheme="http://www.blogger.com/atom/ns#" term="INJECT_EVENTS"/><category scheme="http://www.blogger.com/atom/ns#" term="Robotium"/><title type='text'>How to fire event from AUT to other app using robotium / instrumentation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;b&gt;IMPORTANT:&lt;/b&gt; Code will work only on rooted device or emulator.
&lt;br /&gt;
&lt;br /&gt;
Many times we are required to test an andorid app which talks to any other app like (messaging, web browser etc.) As robotium or android intrumention does not allow us to access other apps from within test code we end up testing that feature manually which is a big obstacle in automating AUT.
&lt;br /&gt;
&lt;br /&gt;
While trying to automate one of the android app which uses messaging, email and other features of device, we also got stuck with this problem. We googled a lot and thankfully we found some solution to our problem which we think of worth sharing with all.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;First approach:&lt;/b&gt;&lt;br /&gt;
The first and simplest approach is using &lt;b&gt;adb shell&lt;/b&gt; command to perform required operation on device/emulator. Here is the sample command where running adb command to come back from third party app.
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Runtime.getRuntime().exec(&quot;adb shell input keyevent 4&quot;);&lt;br /&gt;
&lt;br /&gt;
Here 4 is the keycode for Back key.
&lt;br /&gt;
This approach is very useful when you have only apk file and you are not able to modify manifest file of AUT.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Second approach:&lt;/b&gt;
&lt;br /&gt;
Second approach is using INJECT_EVENTS permission in the manifest file of AUT. But problem with this approach is you need to put your AUT in sys app folder of emulator/device and for which you need system certificate. If you do not have system certificate then you need to root your device or run this test on emulator. Steps are mentioned below:&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&amp;nbsp;Add &lt;b&gt;INJECT_EVENTS&lt;/b&gt; permission tag in the manifest file of AUT.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;uses-permission android:name=&quot;android.permission.INJECT_EVENTS&quot;&gt;Build AUT with android debug certificate and get apk file.&amp;nbsp;&lt;/uses-permission&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Download RootExplorer.apk or similar app from internet and install it on desired emulator/device.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Copy apk file of AUT to the emulator/device (DO NOT install yet), preferrably on sdcard.
  e.g. adb push AUT.apk /sdcard/&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Open RootExplorer and go to /sdcard and copy apk file of AUT.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;uses-permission android:name=&quot;android.permission.INJECT_EVENTS&quot;&gt;Make sure current mode is R/W. To switch to R/W mode there is a button provided at the top left corner on RootExplorer screen.&amp;nbsp;&lt;/uses-permission&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Navigate to /system/apps folder and paste apk file of AUT.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Install AUT by tapping on it&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Now from your code you can fire any event when AUT interacts with other external activity e.g. If AUT has a button and  clicking on it launches web browser then to navigate back from web browser to AUT you can use&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
&lt;uses-permission android:name=&quot;android.permission.INJECT_EVENTS&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Instrumentation inst = getInstrumentation();&lt;/uses-permission&gt;&lt;br /&gt;
&lt;uses-permission android:name=&quot;android.permission.INJECT_EVENTS&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);&amp;nbsp;&lt;/uses-permission&gt;&lt;br /&gt;
&lt;uses-permission android:name=&quot;android.permission.INJECT_EVENTS&quot;&gt;&lt;br /&gt;&lt;/uses-permission&gt;
&lt;uses-permission android:name=&quot;android.permission.INJECT_EVENTS&quot;&gt;&amp;nbsp;This approach gives us more flexibility and control over other app and is very useful if we have code of AUT.&lt;/uses-permission&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/4235244640493578398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/11/how-to-fire-event-from-aut-to-other-app.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/4235244640493578398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/4235244640493578398'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/11/how-to-fire-event-from-aut-to-other-app.html' title='How to fire event from AUT to other app using robotium / instrumentation'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-2980200799070520795</id><published>2012-10-25T02:38:00.000-07:00</published><updated>2012-10-25T02:38:12.022-07:00</updated><title type='text'>Testing checklist for Android app</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;
1. Core functionality of the app is working as expected.&lt;p /&gt;
2. UI of the app is as expected like all elements are aligned properly; there is no truncation of element or text etc. UI should be consistent across all screens of AUT&lt;p /&gt;
3. Touch area of all touchable elements is big enough so
that normal user does not feel any problem in touching them.&lt;p /&gt;
4. Font size of all the text should be optimum i.e. neither
too small nor too big so that normal user is able to read it with ease.&lt;p /&gt;
5. UI remains consistent on rotating the device. If user is
reading some text then on rotating device text/list should not scroll to top
i.e. it should maintain current position.&lt;p /&gt;
6. If on rotating device there is some extra space then
elements should be automatically adjusted accordingly i.e. either size of the
elements should be increased or other elements (for which user was required to
scroll earlier) should be displayed on the screen.&lt;p /&gt;
7. Smart phones automatically handle most of the suspend
resume functionality automatically but testers should also test it especially
in case of audio &amp;amp; video play.&lt;p /&gt;
8. If AUT is accessing any third party / inbuilt app like
contacts, messaging, email, facebook etc. then it should transfer required data
properly and on coming back to AUT should be smooth and should come back to the
same screen from where user left.&lt;p /&gt;
9. If AUT needs to download very large data then it is
recommended to be downloaded asynchronously i.e. initial chunks of data should
be downloaded first and user should be able to read text or scroll list while
rest of the data is being downloaded.&lt;p /&gt;
10. If AUT has some authentication screen like login screen
then keep an eye on network log to make sure that AUT does not pass username
&amp;amp; password in plain text. Also after logout such authentication tokens /
session id should be deleted.&lt;p /&gt;
11. If AUT is storing some personal information like
authentication token, password, credit card then it should be saved in
encrypted form.&lt;p /&gt;
12. DDMS should be used to check memory leaks and memory
consumed by AUT during run.&lt;p /&gt;
13.&amp;nbsp; App should support
all the orientation of the device. If not, then both variations of the
orientation (in case of portrait mode - upside-down).&lt;p /&gt;
14. On uninstallation, all the files related to the AUT
should get deleted and other apps should remain unaffected.&lt;p /&gt;
15. All navigation should be self-explanatory like Back
button should take user to logically previous page, Cancel button should cancel
current operation etc.&lt;p /&gt;
16. If AUT has scrollable form like screen then currently
focused text field should be visible to user i.e. keyboard should not hide it.
And on hiding keyboard screen should be adjusted accordingly.&lt;p /&gt;
17. Navigation from one screen to another or screen rotation
should not be abrupt. AUT should animate components smoothly.&lt;p /&gt;
18. It is recommended that AUT should save all large data
files on sd card not in phone memory. &lt;p /&gt;
19. If app is storing data on SD card then scenarios like SD
not available, SD card removed in the middle of data transfer etc. should be
tested properly.&lt;p /&gt;
20. All the required permissions should be defined in
manifest file and it should not have permissions which are not required by AUT.&lt;p /&gt;
21. If AUT is a service which gets activated on certain
events then those firing of those events should be tested properly. Also if AUT
is required to be running in background continuously then scenarios like device
reboot, user stops service explicitly should be tested.&lt;p /&gt;
22. Switching between Wi-Fi and mobile network should not
affect functionality of AUT. Also if device’s Wi-Fi and network are disabled by
user and AUT tries to make any network call then AUT should be display
appropriate error message to user, asking him to enable Wi-Fi. In such scenario
AUT should not display loading bar before should error message.&lt;p /&gt;
23. AUT should handle network failure scenario gracefully
e.g. device loses network while AUT is downloading some content. In such
scenario a proper error message should be displayed after timeout i.e. AUT
should not keep displaying loading screen indefinitely.&lt;p /&gt;
24. Battery consumption should be under control when AUT is
running.&lt;p /&gt;
25. Testing AUT using different network connectivity like
Wi-Fi, 3G, 2G etc.&lt;p /&gt;
26. Special testing should be done to verify how AUT handles
foreign characters and special characters.&lt;p /&gt;
27. If new version of AUT is available then user should be
notified about the update and AUT should be updated smoothly without deleting
existing user’s data and preferences.&lt;p /&gt;
28. One of the most important aspects is performance of the
AUT. AUT should not be very slow otherwise user will move to other similar apps.
AUT should keep user engaged and should display results as quickly as possible.&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;&quot;&gt;A very good android testing tree could be found &lt;a href=&quot;http://www.ministryoftesting.com/2012/09/android-testing-mindmap/&quot;&gt;here&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/2980200799070520795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/10/testing-checklist-for-android-app.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/2980200799070520795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/2980200799070520795'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/10/testing-checklist-for-android-app.html' title='Testing checklist for Android app'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-7118990430589561258</id><published>2012-10-24T04:38:00.000-07:00</published><updated>2012-10-24T04:38:58.713-07:00</updated><title type='text'>Running android automation script using batch file</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;&quot;&gt;
Run android automation script and copy test result files on local machine (using batch file):&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
Here, I am taking example of retrieving screenshots taken by robotium. Robotium test script, in this example, runs on emulator/device and takes screenshots at regular intervals. Screenshots taken by robotium are stored in sdcard/Robotium-Screenshots/ folder. For demo purpose, I am running script on emulator but same script can be run on device also.
&lt;p /&gt;
&lt;b&gt;Note:&lt;/b&gt; You can retrieve any file like test results etc. in the same manner. You can even first push test data files on device/emulator and after execution pull the result files.
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
To run on actual device:&lt;/div&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;text-indent: 0.25in;&quot;&gt;Comment/Remove commands which launches emulator and other emulator related commands.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;text-indent: 0.25in;&quot;&gt;Make sure device is attached to system and adb devices show the device.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;!--[if !supportLists]--&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
Create a batch file and copy paste following code&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;font-family:Courier;font-size:1.2em;margin-bottom: 0.21pt;text-intent-bottom:2pt;background-color:#F5F5DC&quot;&gt;
@ echo OFF
&lt;br /&gt;
&lt;span style=&quot;color:#BBBBBB&quot;&gt;REM Path of android sdk&lt;/span&gt;
&lt;br /&gt;
SET SDK_DIR=c:\android-sdk
&lt;p /&gt;
&lt;span style=&quot;color:#BBBBBB&quot;&gt;REM Path of folder where screenshots will be copied&lt;/span&gt;
&lt;br /&gt;
SET SCREENSHOT_DIR=c:\temp\screenshot
&lt;br /&gt;
SET TIMESTAMP=%date:~-4,4%%date:~-10,2%%date:~-7,2%%time:~-11,2%%time:~-8,2%
&lt;br /&gt;
SET APK_PACKAGE=%1
&lt;br /&gt;
SET APK_FILE=%2
&lt;br /&gt;
SET EMULATOR=%3
&lt;br /&gt;
SET EMULATOR_PORT=%4
&lt;p /&gt;
IF [%1]==[] GOTO ErrLbl
&lt;br /&gt;
IF [%2]==[] SET APK_FILE=*.apk
&lt;br /&gt;
IF [%2]==[] SET EMULATOR=testEmu
&lt;br /&gt;
IF [%3]==[] SET EMULATOR_PORT=5554
&lt;p /&gt;
echo Setting path environment variable
&lt;br /&gt;
SET PATH=%PATH%;%SDK_DIR%\tools;%SDK_DIR%\platform-tools
&lt;p /&gt;
SET SCREENSHOT_DIR=%SCREENSHOT_DIR%\%EMULATOR%_%EMULATOR_PORT%_%TIMESTAMP%
&lt;br /&gt;
echo Creating the screenshot folder %SCREENSHOT_DIR%
&lt;br /&gt;
mkdir %SCREENSHOT_DIR%
&lt;p /&gt;
echo Launching emulator %EMULATOR%
&lt;br /&gt;
emulator @%EMULATOR% -port %EMULATOR_PORT% -scale 0.8 -no-boot-anim –no-window
&lt;br /&gt;
wait 120
&lt;p /&gt;
echo Waiting for device to come online
&lt;br /&gt;
adb wait-for-device
&lt;p /&gt;
echo Press any key only when emulator is completely online.
&lt;br /&gt;
pause
&lt;br /&gt;
adb shell input keyevent 82
&lt;p /&gt;
echo Installing apk file: %APK_FILE%
&lt;br /&gt;
adb install %APK_FILE%
&lt;p /&gt;
echo Deleting existing screenshots from device
&lt;br /&gt;
adb shell rm sdcard/Robotium-Screenshots/*
&lt;br /&gt;
pause
&lt;p /&gt;
echo Running test: %APK_PACKAGE%
&lt;br /&gt;
adb shell am instrument -w
&lt;br /&gt;
%APK_PACKAGE%/android.test.InstrumentationTestRunner
&lt;p /&gt;
echo Copying Screeshots from sdcard to local Dir - %SCREENSHOT_DIR%
&lt;br /&gt;
adb&amp;nbsp; pull
&lt;br /&gt;
sdcard/Robotium-Screenshots/ %SCREENSHOT_DIR%\
&lt;p /&gt;
echo Deleting screenshots from device
&lt;br /&gt;
adb shell&amp;nbsp; rm
&lt;br /&gt;
sdcard/Robotium-Screenshots/*
&lt;br /&gt;
pause
&lt;br /&gt;
echo Killing emulator
&lt;br /&gt;
&lt;span style=&quot;color:#BBBBBB&quot;&gt;REM This command does not work on Windows OS but should work on other OS&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#BBBBBB&quot;&gt;REM adb  -s emulator-%EMULATOR_PORT% emu kill&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#BBBBBB&quot;&gt;REM For Windows here is the workaround which is not good solution but does desired task&lt;/span&gt;
&lt;br /&gt;
taskkill /IM emulator-arm.exe
&lt;br /&gt;
&lt;span style=&quot;color:#BBBBBB&quot;&gt;REM Below command is required to avoid execution of ErrLbl content&lt;/span&gt;
&lt;br /&gt;
exit /B
&lt;p /&gt;
:ErrLbl
&lt;br /&gt;
echo Package name is MISSING.
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/7118990430589561258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/10/running-android-automation-script-using.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/7118990430589561258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/7118990430589561258'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/10/running-android-automation-script-using.html' title='Running android automation script using batch file'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-8865529751277980809</id><published>2012-10-24T02:14:00.000-07:00</published><updated>2012-10-24T02:14:48.257-07:00</updated><title type='text'>Testing checklist for iOS app</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
1. Core functionality of the app is working as expected.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
2. UI of the app is as expected like all elements are
aligned properly; there is no truncation of element or text etc. UI should be
consistent across all screens of AUT.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
3. Touch area of all touchable elements is big enough so
that normal user does not feel any problem in touching them.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
4. Font size of all the text should be optimum i.e. neither
too small nor too big so that normal user is able to read it with ease.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
5. UI remains consistent on rotating the device. If user is
reading some text then on rotating device text/list should not scroll to top
i.e. it should maintain current position.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
6. If on rotating device there is some extra space then
elements should be automatically adjusted accordingly i.e. either size of the
elements should be increased or other elements (for which user was required to
scroll earlier) should be displayed on the screen.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
7. Smart phones automatically handle most of the suspend
resume functionality automatically but testers should also test it especially
in case of audio &amp;amp; video play.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
8. If AUT is accessing any third party / inbuilt app like
contacts, messaging, email, facebook etc. then it should transfer required data
properly and on coming back to AUT should be smooth and should come back to the
same screen from where user left.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
9. If AUT needs to download very large data then it is
recommended to be downloaded asynchronously i.e. initial chunks of data should
be downloaded first and user should be able to read text or scroll list while
rest of the data is being downloaded.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
10. If AUT has some authentication screen like login screen
then keep an eye on network log to make sure that AUT does not pass username
&amp;amp; password in plain text. Also after logout such authentication tokens /
session id should be deleted.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
11. If AUT is saving some personal information like
authentication token, password, credit card then it should be saved in
encrypted form.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
12. Instrumentation should be used to check memory leaks and
memory consumed by AUT during run.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
13. &amp;nbsp;App should
support all the orientation of the device. If not, then both variations of the
orientation (in case of portrait mode - upside-down).&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
14. On uninstalling, all the files related to the AUT
should get deleted and other apps should remain unaffected.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
15. If AUT displays badge on the app icon then it should
display correct count and on every update it should be updated accordingly.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
16. If AUT has popover then popover should not have any
explicit close button. Instead it should disappear when user taps on any item
on it and corresponding action should take place or user tab anywhere else on
screen.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
17. All navigation should be self-explanatory like Back
button should take user to logically previous page, Cancel button should cancel
current operation etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
18. If AUT has&amp;nbsp;scroll-able&amp;nbsp;form like screen then currently
focused text field should be visible to user i.e. keyboard should not hide it.
And on hiding keyboard screen should be adjusted accordingly.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
19. Navigation from one screen to another or screen rotation
should not be abrupt. AUT should animate components smoothly.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
20. Switching between Wi-Fi and mobile network should not
affect functionality of AUT. Also if device’s Wi-Fi and network are disabled by
user (i.e. Airplane mode) and AUT tries to make any network call then AUT
should be display appropriate error message to user, asking him to enable
Wi-Fi. In such scenario AUT should not display loading bar before should error
message.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
21. Battery consumption should be under control when AUT is
running.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
22. One of the most important aspects is performance of the
AUT. AUT should not be very slow otherwise user will move to other similar
apps. AUT should keep user engaged and should display results as quickly as
possible.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
23. Testing AUT using different network connectivity like
Wi-Fi, 3G, 2G etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
24. AUT should handle network failure scenario gracefully
e.g. device loses network while AUT is downloading some content. In such
scenario a proper error message should be displayed after timeout i.e. AUT
should not keep displaying loading screen indefinitely.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
25. Special testing should be done to verify how AUT handles
foreign characters and special characters.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
26. If new version of AUT is available then user should be
notified about the update and AUT should be updated smoothly without deleting
existing user’s data and preferences.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
For more details refer to Apple’s &lt;a href=&quot;http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html&quot;&gt;Human Interface
Guidelines.&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
A very good iOS testing tree could be found &lt;a href=&quot;http://www.ministryoftesting.com/2012/09/ios-testing-mindmap-checklist/&quot;&gt;here&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/8865529751277980809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/10/testing-checklist-for-ios-app.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/8865529751277980809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/8865529751277980809'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/10/testing-checklist-for-ios-app.html' title='Testing checklist for iOS app'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-2383013849630408094</id><published>2012-10-22T05:19:00.001-07:00</published><updated>2012-10-22T05:19:14.339-07:00</updated><title type='text'>Test WebView used within android native app</title><content type='html'>Unfortunately currently robotium does not support testing of webview even if it is used with native app but there is a way to test webview using &lt;a href=&quot;http://code.google.com/p/selenium/downloads/list&quot; target=&quot;_blank&quot;&gt;Android WebDriver&lt;/a&gt;. So the solution is using combination of robotium + android webdriver. Here is the sample code to test contents of webview.
&lt;br /&gt;
Little background about AUT: Native app has a button (assume ‘Google’) clicking on which opens webview with google.com.
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt; Sample Code: &lt;/b&gt;
&lt;br /&gt;

Activity mActivity = getActivity();
&lt;br /&gt;
WebView web;&lt;br /&gt;
ArrayList&amp;lt;View&amp;gt; views = solo.getCurrentViews();&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;for(View view : views) {&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;if(view instanceof WebView) {&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;web = (WebView) view;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;break;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;}&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;}&lt;br /&gt;
WebDriver driver = new AndroidWebDriver(mActivity);&lt;br /&gt;
driver.get(web.getOriginalUrl());&lt;br /&gt;
WebElement element = driver.findElement(By.name(&quot;q&quot;));&lt;br /&gt;
element.sendKeys(&quot;Test&quot;);&lt;br /&gt;
element = driver.findElement(By.xpath(&quot;//span[text()=&#39;Google Search&#39;]&quot;));&lt;br /&gt;
element.click();
</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/2383013849630408094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/10/test-webview-used-within-android-native.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/2383013849630408094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/2383013849630408094'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/10/test-webview-used-within-android-native.html' title='Test WebView used within android native app'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-5069759257490974766</id><published>2012-10-20T11:25:00.001-07:00</published><updated>2012-10-20T11:25:48.892-07:00</updated><title type='text'>Testing strategy for mobile apps</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;
The biggest challenge most of the mobile app development companies face is maintaining huge
inventory of mobile devices which requires good amount of investment in
procurement of the devices and then maintenance cost and operational cost like
data usage etc. Also as new mobile devices are coming in the market every now
and then (especially in case of android) so it’s practically not feasible to
test app on each and every devices. Because of all these constraints mobile app
testers should take balanced approach in testing.
&lt;/span&gt;
&lt;/div&gt;
&lt;br/&gt;
&lt;div class=&quot;MsoListParagraphCxSpFirst&quot; style=&quot;mso-list: l0 level1 lfo1;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: Arial;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Testing on emulators:&lt;/span&gt;&lt;/b&gt;

&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt; Initial functional testing of the AUT
should be done on emulators. Today most of emulators and simulators are capable
of simulating the functionality of real device so first approach testers should
follow is test AUT on emulator with target OS version to uncover most of the
functional issues. AUT should be tested on each supported OS version.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;

&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Incase of android you can fully configure you emulator like SD card support,
keyboard support etc.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;

&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Testing on real device:&lt;/span&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt; Once you feel that build is stable enough
and most of the application specific functional and UI issues have been
uncovered and fixed then you should start testing of AUT on real devices to
uncover device specific issues. If you have all the devices available then you
should perform testing on each device otherwise you should select required
devices intelligently like one device of each target screen resolution and one
device of each manufacturer, one device of each OS version. You should talk to
developers to know if developers are using any OS version specific APIs etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;br /&gt;&lt;/div&gt;

&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Note:&lt;/span&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt; One important point to note here is
you should select devices based on targeted mobile operator like AUT might work
differently on two iPhones, one on Verizon and other on AT&amp;amp;T. This happens
because of different technologies on both. And also sometimes because of customization
done for mobile operator like one operator might block some APIs etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoListParagraphCxSpLast&quot; style=&quot;mso-list: l0 level1 lfo1; text-indent: -.25in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;

&lt;div class=&quot;MsoListParagraphCxSpMiddle&quot; style=&quot;mso-list: l0 level1 lfo1;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Testing on virtual devices:&lt;/span&gt;&lt;/b&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt; Today we have
virtual environments like DeviceAnyWhere, PerfectoMobile etc. They have very
good device inventory which you can use to test your AUT. They are very helpful
as you need not to maintain huge device inventory in your organization. But as
they charge on hourly basis, you need to make sure that you use them
intelligently. When you have tested on app on different combination of screen
resolution, os versions etc. then you could DAW etc. to sanity test your app on
other devices with same configuration just to verify AUT works perfectly on
them also. Before using them, make sure you have very good network connectivity
otherwise you might observe some issues which might not occur on real devices.&lt;/span&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/5069759257490974766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/10/testing-strategy-for-mobile-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/5069759257490974766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/5069759257490974766'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/10/testing-strategy-for-mobile-apps.html' title='Testing strategy for mobile apps'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7841673277992289884.post-7559749927083039782</id><published>2012-09-27T09:28:00.000-07:00</published><updated>2012-09-27T09:28:30.446-07:00</updated><title type='text'>Test case writing techniques:</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Most of the time we starting writing test cases based
on our experience and intuition and sometimes we end up writing some useless or
repetitive test cases (in the sense that specific scenario might have already
been covered in some other test case). I am not saying that we should not use
our past experience but experience should be used along with some scientific
techniques.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;There are many techniques which can be used (and
should be used) to write test cases (especially test data). These are mainly
test data generation techniques which should be used to write effective and
optimized test cases. Some of the techniques are like Boundary value analysis,
equivalence partitioning, orthogonal arrays etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;BVA and EP should be used to generate valid and
invalid data for each field. Orthogonal array is used when we have multiple
fields on the screen and we want test data with different combinations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Boundary Value Analysis&lt;/b&gt;:
In BVA, we generate test data at the boundary of the field i.e. if any field
accepts numeric value between 18 and 60 then test data for that field should be
17,18,60,61.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Equivalence Partitioning&lt;/b&gt;:
In EP, first we determine valid range of the field for example in our example
valid range is 18 to 60 so test data should be selected as:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Valid range: 18-60: any one value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Invalid range1: -ve no. to 17: any one value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Invalid range2: 61 to +ve no.: any one value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Invalid range3: any alphanumeric value&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Orthogonal Arrays&lt;/b&gt;: Above two techniques
are used only for single field. For different combination of multiple fields
orthogonal arrays are used. For example if there are 5 fields on a screen then
orthogonal arrays should be used to come up with minimal test data required to
cover maximum test functionality. There are various tools like AllPairs which
generate test data for combination of fields. AllPairs is a very simple and
free to use tool which reads data for each field from file and generate test
data file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Finally some test cases should be created based on
experience. Some of the examples are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;1. If field accepts alphanumeric values then some test
cases for:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
a. Special characters&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
b. Escape characters&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
c. Specific special characters combination like &#39;;-- (database comment)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
d. leading/ trailing blank spaces&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: .0001pt; margin: 0in;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
e. foreign characters&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: 11pt; line-height: 115%;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;and some other project specific special requirements.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://testeropine.blogspot.com/feeds/7559749927083039782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://testeropine.blogspot.com/2012/09/test-case-writing-techniques.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/7559749927083039782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7841673277992289884/posts/default/7559749927083039782'/><link rel='alternate' type='text/html' href='http://testeropine.blogspot.com/2012/09/test-case-writing-techniques.html' title='Test case writing techniques:'/><author><name>Tester Opine</name><uri>http://www.blogger.com/profile/01354138046348727179</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>