Skip to main content

UiAutomator and Watchers: Adding Async Robustness to UI Automation

"I'm looking over your shoulder... only because I've got your back." ~ Stephen Colbert

After my recent UiAutomator review a user brought up an important question about the use of UiWatcher. The watchers serve as async guardians of the test flow, making sure the odd dialog window doesn't completely frustrate your tests. Having a tool that automatically watches your back when you're focused on the functional flow of your tests is awesome. 100% pure awesomesauce. Since the API documentation on watchers is scant and the UI Testing tutorial on the Android dev guide doesn't cover their use in depth, I figured I should add a post here that goes over a simple scenario demonstrating how to use this fundamentally important UI automation tool.

In my example code below, I'm using uiautomator to launch the API Demo app (meaning run this against an Emulator built in API level 17 - I used the Galaxy Nexus image included in the latest ADT and platform tools). The test clicks down to the Alert Dialogs demo and automatically handles one of the dialogs popping up. It isn't a very legit test scenario but admittedly that's less the point than simply demonstrating the application of UiWatchers.

If I were testing the dialog itself, this could be a simple specification in BDD style:

  • Given the API Demo app on an emulator at API level 17
  • When I click on the first two OK Cancel dialog demo buttons
  • It Should display an OK Cancel dialog
However, if I were testing some other function in the UI and there were a random chance of the dialog to appear, I wouldn't assert the dialog in my test flow because it could happen at any time. UiWatchers function by registering undesired but potential conditions and the uiautomator runner checks the registered watchers with its checkForCondition() method. This happens whenever you create UiObjects or UiCollections or update or evaluate them. This means that anytime you're trying to capture the UI and create/update/evaluate elements of the UI, the UiWatchers will have your back if something in your flow goes sideways.

Your watchers are managed by the UiDevice class The typical logic flow for implementing watchers follows this pattern:
  1. Define new watcher
  2. Register your watcher
  3. Run your watcher
The UiDevice class allows for much more watcher management than those three steps but those are the minimum necessary to get you there. 

So on to the demo. 

I've tried to be verbose in my comments to help walk you through what I'm doing but if you want to see it yourself, simply follow the setup steps in the UI Testing demo on the dev guide and paste this code in (adjusting as needed to adapt it to your environment). Secondly you'll need to launch an emulator set up with API level 17 to get the full chewy goodness of the latest accessibility and uiautomator APIs. Finally, you should follow the build and deploy steps in the dev guide and run it. If you want extra insight into how the UiWatcher is being called, add logging at line 67 just before creating the okCancelDialog UiObject. This will show you how often the runner is checking conditions with this watcher. It is pretty fascinating (and reassuring).


Comments

  1. Ah, I see! Thank you for that example!

    ReplyDelete
  2. Do you know how to use constants, variables, methods from the other Class(.java) which extends UiAutomatorTestCase?

    ex)
    - HomeScreenTest.java (to be run)
    - Device.java (to be used, has screen width, height constants and unlock() method, etc.)

    ReplyDelete
  3. How can I check launch of an activity (which needs password to proceed) when that activity may or may not be launched depending upon the time the password was entered. For ex: if I entered password then that activity will not be launched till 10 minutes.. So If I have to automate checking of launch of that activity to enter password, how can I do that ?

    ReplyDelete
  4. That depends entirely on how long-running you want your test to be but for any asynchronous behavior the appropriate method in the new UIAutomator tools is to set up a UiWatcher. These are extremely useful and I highly recommend following the steps in the Tutorial I linked above to try out using watchers yourself. In your case you should create a watcher that is triggered by something unique to the activity you're checking for.

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. Can i run the uiautomator command "adb shell uiautomator runtest LaunchSettings.jar -c com.uia.example.my.LaunchSettings" from an android application (for example on a button click) when I have already pushed the jar at /data/local/tmp/ location ?

    ReplyDelete
    Replies
    1. Just a quick trip to Google found the following:
      http://stackoverflow.com/questions/3054973/android-how-to-run-a-shell-command-from-within-code

      That should get you started and you won't even need to bother with the steps to manage sys directory access since your JAR lives in a more accessible space.

      Delete
  7. Hi Russell,

    Have you happened to run UIAutomator tests as a suite. For instance I want to test only log in related scenarios. In the example on developer.androdid the show how to deploy and run only one test.

    Thank you,
    Denis

    ReplyDelete
    Replies
    1. Holy wow, sorry for the late reply.

      The way to run only log-in related scenarios is to collect them into classes and pass -e class flags to uiautomator. If you really want to hate life, you can drill all the way down to the method level and pass a space-separated list.

      the uiautomator help content reads as follows under usage:

      shell@android:/ $ uiautomator -help
      Usage: uiautomator [options]

      Available subcommands:

      help: displays help message

      runtest: executes UI automation tests
      runtest [options]
      : < -c | -e class >
      : a list of jar files containing test classes and dependencies. If
      the path is relative, it's assumed to be under /data/local/tmp. Use
      absolute path if the file is elsewhere. Multiple files can be
      specified, separated by space.
      : a list of test class names to run, separated by comma. To
      a single method, use TestClass#testMethod format. The -e or -c option
      may be repeated. This option is not required and if not provided then
      all the tests in provided jars will be run automatically.
      options:
      --nohup: trap SIG_HUP, so test won't terminate even if parent process
      is terminated, e.g. USB is disconnected.
      -e debug [true|false]: wait for debugger to connect before starting.
      -e runner [CLASS]: use specified test runner class instead. If
      unspecified, framework default runner will be used.
      -e : other name-value pairs to be passed to test classes.
      May be repeated.
      -e outputFormat simple | -s: enabled less verbose JUnit style output.

      dump: creates an XML dump of current UI hierarchy
      dump [file]
      [file]: the location where the dumped XML should be stored, default is
      /storage/emulated/legacy/window_dump.xml

      events: prints out accessibility events until terminated

      Delete
  8. Hi Russel,

    How to achieve long press in UiAutomator?

    Thanks,
    Goku

    ReplyDelete
    Replies
    1. Goku,

      For a given UiObject with a criteria set, such as .textContains(), e.g. something like:

      "UiObject fooBar = UiObjectnew UiObject(new UiSelector().FooCriteria)"

      You can try to do fooBar.longClick() to simulate a long click, or one of its variants. This method often fails for whatever reason, however. You might achieve greater success using the swipe() method. This is discussed on stackoverflow: http://stackoverflow.com/questions/16061478/android-uiautomator-long-click-on-device

      Delete
  9. Hi Russel,

    Request you to let me know the way to capture the logs simultaneously in an automated way while the uiautomator test case is running. I want to capture all the device logs for each of my test case seperately. As of now I am doing this manually. Initially I thought of using "adb logcat -d" after the execution of each test case. But this will loose some logs due to limited buffer size on the device.

    Thanks,
    Udish.

    ReplyDelete
    Replies
    1. Hi Udish,

      I have recently published a tool UIautomator-bot which does exactly what you need. Please check out the project here at http://sourceforge.net/projects/uiautomator/
      http://uiautomator-bot.blogspot.in/

      Hope this will help you.

      Delete
    2. Hi Syed,

      I have missed your response and so unfortunately have missed to use an awesome tool. I just started using it and my first comment on your tool is
      "AWESOME". Thanks for pointing me to it.

      Delete
  10. Hi Udish,
    If you're willing to do a little more digging, I'd suggest looking up how to execute shell commands from within JUnit on Android and use the logcat commands directly from within your setup() and tearDown() methods for your tests (e.g. clear the log, save the current log using the test method name and a timestamp, etc). I'm using shell commands from within my own app to do things like clear app data, stop all services, relaunch using specific parameters. I'll publish an article soon describing all of this too.

    ReplyDelete
    Replies
    1. Actually, I realized that the relevant commands for Logcat are blocking commands so it isn't entirely that simple. I wound up solving this in a different way in my test job on my CI server. I'm working on a post describing how I did this and the value of really good logging soon.

      Delete
  11. Is there a way to use watchers to avoid using wait() statements?

    ReplyDelete
    Replies
    1. I'm sure it is possible but that's really not what they're supposed to be for in the first place. Watchers are still matchers but they're only triggered when an element your test case is expecting isn't found. The test runner will then cascade through all registered UiWatchers to see if any of them evaluate positively.If none of them do, the test case fails with a UiElementNotFound exception.

      If you really want to get speed-optimized UI test automation going, I'd recommend a couple things:
      1) disable animations in your developer settings on your device (unless those are specifically required by your test scenarios)
      2) use Espresso instead of UiAutomator as your test framework. It was specifically built to handle asynchronous behavior and eliminate wait() calls slowing down test execution.

      https://code.google.com/p/android-test-kit/wiki/Espresso

      Delete
  12. Good one, Thanks for your valuable information and views.. it is very useful for me to learn and understand...
    Software Testing Training in chennai | Software Testing Training in velachery

    ReplyDelete
  13. The Blog shared are very much useful My sincere thanks for sharing this post Please Continue to share this post
    Software Testing Training in Chennai

    ReplyDelete
  14. nice blog has been shared by you. before i read this blog i didn't have any knowledge about this but now i got some knowledge. so keep on sharing such kind of an interesting blogs.
    software testing training in chennai

    ReplyDelete
  15. We are provide a TOP Level IT companies with high end package. besant Offers the Authorized Test center of Pearson Vue with placement assurance.
    Pearson Vue Exam Center in Bangalore |
    Pearson Vue Exam Centers in Bangalore |

    ReplyDelete
  16. Practical assessment is built into our system. In our initial paperwork, we ask people to think about and express why they are doing this and then use our experience to read between the lines.
    Franchise Opportunities | Franchise Opportunities India

    ReplyDelete
  17. Your post has everything that is obtained complete and really useful. It's a beautiful..
    MCA Project Center in Chennai | MCA Project Center in Velachery

    ReplyDelete
  18. Good Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one, keep blogging…
    Best Java Training Institute in Chennai | Java Training in Velachery

    ReplyDelete
  19. Nice Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge as updated one,keep updating..

    Best AWS Training Institute in Taramani | No.1 AWS Training Center in Taramani

    ReplyDelete
  20. Your article is really amazing with informative information,you are shared.Thanks a lot for sharing this wonderful blog.keep updating such a excellent post with us.
    Embedded System Training in Tambaram | Embedded Training in Tambaram

    ReplyDelete
  21. Very informative blog. Helps to gain knowledge about new concepts and techniques. Thanks a lot for sharing this wonderful blog.keep updating such a excellent post with us.
    Best MatLab Training Institute in OMR | No.1 MatLab Training Center in OMR

    ReplyDelete
  22. I feel really happy to have seen your webpage and look forward to so many more entertaining times reading here. Thanks once more for all the details.
    Best CCNA Training Institute in Guindy | No.1 CCNA Training Institute in Guindy

    ReplyDelete
  23. Very informative blog. Helps to gain knowledge about new concepts and techniques. Thanks a lot for sharing this wonderful blog.keep updating such a excellent post with us.
    AWS Exam Center in Chennai | AWS Certification Exams in Chennai | AWS Exams in Velachery

    ReplyDelete
  24. Thank you for your post. This was really an appreciating one. You done a good job. Keep on blogging like this unique information with us.
    Best Embedded Training Institute in Thiruvanmiyur | No.1 Embedded Training Institute in Thiruvanmiyur

    ReplyDelete
  25. Great post and informative blog.it was awesome to read, thanks for sharing this great content to my vision. This is a great inspiring article.I am pretty much pleased with your good work. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post..
    AWS Exam Center in Chennai | AWS Certification Exams in Chennai | AWS Exams in Velachery

    ReplyDelete
  26. I have read your blog. Your information is really useful for beginner. informations provided here are unique and easy to understand.Thanks for this useful infromation.This is a great inspiring article.I am pretty much pleased with your good work.
    Linux Training Institute in Chennai | Linux Training in Velachery | RedHat Linux Training in Chennai

    ReplyDelete
  27. This is a great inspiring article.I am pretty much pleased with your good work. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post..
    AWS Training Institute in Chennai | AWS Training in Velachery

    ReplyDelete
  28. I am pretty much pleased with your good work. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post.
    Best Linux Training Institute in Chennai | Linux Training Center in Velachery

    ReplyDelete
  29. Very informative blog. Helps to gain knowledge about new concepts and techniques. Thanks a lot for sharing this wonderful blog.keep updating such a excellent post with us.
    Best AWS Training Center in Chennai | AWS Courses in Velachery

    ReplyDelete
  30. Good Post.Helps to gain knowledge about new concepts and techniques.Thank you so much for sharing with us.
    Best Java Training Institute in Chennai | Java Training in Velachery | J2EE Training in Chennai

    ReplyDelete
  31. Very informative blog. Helps to gain knowledge about new concepts and techniques. Thanks a lot for sharing this wonderful blog.keep updating such a excellent post with us.
    Best CCNA Training Institute in Chennai | CCNA Training in Velachery | CCNA Training in Chennai

    ReplyDelete

  32. Thank you for your information. I have got some important suggestions from it. Keep on sharing. Very informative blog. Helps to gain knowledge about new concepts and techniques.
    Best CCNA Training Institute in Chennai | CCNA Training in Velachery | CCNA Training in Chennai

    ReplyDelete
  33. This comment has been removed by the author.

    ReplyDelete
  34. I see your blog regularly. Your blog is very useful for us.
    If you are screaming out “home security system Bangalore” you’ve come to the most elite essay home security system Bangalore....Click here

    ReplyDelete
  35. This comment has been removed by the author.

    ReplyDelete
  36. I am pretty much pleased with your good work. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post.
    Python Training Institute in Chennai | Python Exam Center in Chennai | Python Certification in Taramani | Python Training in OMR | Python Exams in Velachery

    ReplyDelete
  37. This is a great inspiring article.I am pretty much pleased with your good work. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post..

    Linux Training in Velachery | Linux Training Institute in Chennai | Linux Training in Kanchipuram

    ReplyDelete
  38. You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post..
    AWS Training Institute in Chennai | AWS Training Center in Velachery | AWS Exams Center in Chennai | AWS Online Exams in Chennai

    ReplyDelete
  39. Very informative blog. Helps to gain knowledge about new concepts and techniques. Thanks for posting information in this blog..

    Python Training Institute in Chennai | Python Exam Center in Chennai | Python Certification in Taramani | Python Training in OMR | Python Exams in Velachery

    ReplyDelete
  40. I feel happy to say this I will deeply learn your blog and it’s really useful for me, keep sharing like this type valuable information regularly, I like to thanks for sharing this superb blog I hope I see you soon again time, thank you so much.
    honor mobile service center
    honor mobile service centre in Chennai
    honor service center near me

    ReplyDelete
  41. Nice Post! It is really interesting to read from the beginning and Keep up the good work and continue sharing like this.

    Python Training Institute in Chennai | Python Certification Training in Chennai | Python Exam Center in Chennai

    ReplyDelete
  42. Your Blog is really awesome with useful and helpful content for us.Thanks for sharing ..keep updating more information.

    AWS Training Institute in Chennai | AWS Certification Training in Velachery | AWS Exam Center in Chennai | AWS Online Exams in Chennai

    ReplyDelete
  43. Very impressive and interesting blog, it was so good to read and useful to improve my knowledge as updated one,keep updating..This Concepts is very nice Thanks for sharing.

    AWS Training Institute in Chennai | AWS Certification Training in Velachery | AWS Exam Center in Chennai | AWS Online Exams in Chennai

    ReplyDelete
  44. Very impressive and interesting blog, this is the best place to get wonderful information thanks much for sharing here...
    Linux Training Institute in Chennai | Linux Training Center in Chennai | Online Training in Chennai | Linux Certification in Chennai

    ReplyDelete
  45. Your blog is really useful for me. Thanks for sharing this useful blog..thanks for your knwoledge share ... superb article ... searching for this content.for so long.
    AWS Training Institute in Chennai | AWS Certification Training in Velachery | AWS Exam Center in Chennai | AWS Online Exams in Chennai

    ReplyDelete
  46. This comment has been removed by the author.

    ReplyDelete
  47. This blog is full of innovative ideas and i really like your informations.please add more details in future.
    SEO training in chennai
    Python Training in Chennai
    Python Training in Tambaram

    ReplyDelete
  48. Looking for best TNPSC study materials to prepare for the examination? Make use of our samacheer kalvi books and other study guide to learn from experts. TNPSC One Time Registration

    ReplyDelete
  49. Impressive blog with lovely information. really very useful article for us thanks for sharing such a wonderful blog...
    AWS Training Institute in Chennai | AWS Certification Training in Chennai | AWS Training in Medavakkam

    ReplyDelete
  50. If you have Natural Curls or Curly Hair, you are just blessed. You can experiment with many Hairstyles which will Look Stylish here we tell about top best and easy Curly Hairstyles and Curly Hair Tips of 2019

    ReplyDelete
  51. Good and more informative post... thanks for sharing your ideas and views... keep rocks and updating.........

    PCB Designing Training in Chennai | PCB Training Institute in Chennai | PCB Training in Velachery

    ReplyDelete
  52. I am so happy after read your blog. It’s very useful blog for us.

    Python training course in Nigeria

    ReplyDelete
  53. I am so happy after reading your blog. It’s very useful blog for us.

    Python training and certification in Uganda

    ReplyDelete
  54. I am so happy after reading your blog. It’s very useful blog for us.

    Python training and certification in Tanzania

    ReplyDelete
  55. Usually I never comment on blogs but your article is so convincing that I never stop myself to say something about it. You’re doing a great job Man, Keep it up.

    Oracle Training in Medavakkam / Best Oracle Training in Medavakkam
    Oracle Training Course in Chennai / Best Oracle Training Institute in Chennai


    ReplyDelete
  56. Really very nice blog information for this one and more technical skills are improve,i like that kind of post.
    salesforce Training in Bangalore
    uipath Training in Bangalore
    blueprism Training in Bangalore


    ReplyDelete
  57. Thank You For Sharing The Articles. Visit Best Indian Memes

    ReplyDelete
  58. Amazing article, very informative . Infact cleared several questions and doubts.
    home automation bangalore

    ReplyDelete
  59. Nice article
    Thanks for sharing the information
    Please visit leadmirror to know your blog rank.

    ReplyDelete
  60. The author clearly explains the full view of this topic and it made me more knowledgable in this domain.
    salesforce Training in Bangalore
    uipath Training in Bangalore
    blueprism Training in Bangalore

    ReplyDelete
  61. I thank you for this; really your efforts are appreciable. Keep on do this.
    Data science with python training in Bangalore

    ReplyDelete
  62. Nice Blog, When I was read this blog I learnt new things. Thanks for sharing.
    Data science with python training in Bangalore

    ReplyDelete
  63. amazing post written ... It shows your effort and dedication. Thanks for share such a nice post. Please check whatsapp status in hindi

    ReplyDelete
  64. Superb Post. Your simple and impressive way of writing this make this post magical. Thanks for sharing this and please checkout this best wifi names

    ReplyDelete
  65. This comment has been removed by the author.

    ReplyDelete
  66. I appreciate your blog writing about that specific topics.I am following your blog post regularly to get more updates

    salesforce Training in Bangalore
    uipath Training in Bangalore
    blueprism Training in Bangalore

    ReplyDelete
  67. Hi, it was an awesome article…and Nice Information…just keep posting…
    Are you looking for an easy and simple understanding DIGITAL MARKETING TUTORIALS ONLINE FREE Then you are in to the right place… visit our DIY. Blog to learn complete Digital Marketing [SEO,SMO] strategies and tactics from Basic to Advance level which is in simple and consistent practice.

    DIGITAL MARKETING TUTORIAL | DIGITAL MARKETING TRAINING | SEO TUTORIAL FREE | READ A FREE SEO BOOK | FREE BEST ONLINE DIGITAL MARKETING COURSES | DIGITAL MARKETING TUTORIALS ONLINE FREE | ON PAGE SEO | SEO TUTORIAL | SEO TRAINING ONLINE | DIGITAL MARKETING COURSE

    ReplyDelete
  68. Excellent Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge.
    Java Training Institute in Chennai | Java Certification Training in Velachery

    ReplyDelete
  69. Excellent Post! Thank you so much for sharing this pretty post, it was so good to read and useful to improve my knowledge.
    Embedded System Training in Chennai | Embedded Training in Velachery | Embedded Courses in Pallikaranai

    ReplyDelete
  70. This is useful post for me. I learn lot of new information from your article. keep sharing. thank you for share us.
    MCSE Training Institute in Chennai | MCSE Training in Velachery | MCSE Training Center in Chrompet

    ReplyDelete
  71. Thanks for your informative article. Your post helped me to understand the future and career prospects. Keep on updating your blog with such awesome article.
    PCB Designing Training Institute in Chennai | PCB Training in Velachery

    ReplyDelete
  72. This is really too useful and have more ideas from yours. keep sharing many techniques and thanks for sharing the amazing article.
    MatLab Training Institute in Chennai | MatLab Training Center in Velachery

    ReplyDelete
  73. Training HIPAA Privacy Officer will help to understand safeguards for keeping protected health information safe from a people, administrative, and contractual standpoint

    ReplyDelete
  74. Really nice post. Thank you for sharing your amazing information and informative article,its really useful for us.keep updating such a wonderful blog..
    Embedded Training Institute in Chennai | Embedded Training Center in Velachery

    ReplyDelete
  75. Thanks for sharing your great information..Its really very impressive and informative content.keep updating...
    Linux Certification Training Institute in Chennai | Linux Training in Velachery | Online Linux Training in Madipakkam

    ReplyDelete
  76. Amazing blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it..
    Blue Prism Training Institute in Chennai | Blue prism Certification Training in Velachery | Blue Prism Training Center in Adyar

    ReplyDelete
  77. Pretty article! I found some useful information in your blog, it was amazing to read, thanks for sharing this great content to my vision...
    Embedded Training Institute in Chennai | Embedded Training in Velachery | Embedded Certification Training in Velachery

    ReplyDelete
  78. Excellent blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it..
    MatLab Training Institute in Chennai | MatLab Training in Velachery | MatLab Training in Taramani

    ReplyDelete
  79. Thanks for sharing this great article! That is very interesting I love reading and I am always searching for informative articles like this..
    Cisco Certification Training in Chennai | Cisco Certification Courses in OMR | Cisco Certification Exams in Velachery

    ReplyDelete
  80. Wow!!..What an excellent informative post, its really useful.Thank you so much for sharing such a awesome article with us.keep updating..
    VMware Certification Training in Chennai | VMware Training Institute in Velachery | VMware Certification Courses in Medavakkam

    ReplyDelete
  81. Thanks for sharing this valuable information and we collected some information from this post.

    In house Management training

    ReplyDelete
  82. Amazing blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it..
    Embedded System Training Institute in Chennai | Embedded Training in Velachery | Embedded Courses in T.nagar

    ReplyDelete
  83. Amazing blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it..
    Embedded System Training Institute in Chennai | Embedded Training in Velachery | Embedded Courses in T.nagar

    ReplyDelete
  84. Great post.Thanks for one marvelous posting! I enjoyed reading it;The information was very useful.Keep the good work going on!!
    Tally Training Institute in Chennai | Tally Training in Velachery | Best Tally Courses in Guindy | Tally Training Center in Pallikaranai

    ReplyDelete
  85. Great post.Thanks for one marvelous posting! I enjoyed reading it;The information was very useful.Keep the good work going on!!
    Tally Training Institute in Chennai | Tally Training in Velachery | Best Tally Courses in Guindy | Tally Training Center in Pallikaranai

    ReplyDelete
  86. I am reading your post from the beginning,it was so interesting to read & I feel thanks to you for posting such a good blog,keep updates regularly..
    Web Designing and Development Training in Chennai | Web Designing Training Center in Velachery | Web Design Courses in Pallikaranai

    ReplyDelete
  87. Awesome post.. Really you are done a wonderful job.thank for sharing such a wonderful information with us..please keep on updating..
    PCB Designing Training Institute in Chennai | PCB Training Center in Velachery | PCB Design Courses in Thiruvanmiyur

    ReplyDelete
  88. Awesome post.. Really you are done a wonderful job.thank for sharing such a wonderful information with us..please keep on updating..
    PCB Designing Training Institute in Chennai | PCB Training Center in Velachery | PCB Design Courses in Thiruvanmiyur

    ReplyDelete
  89. Thanks for making me this Blog. You have done a great job by sharing this content here.Keep writing blog this like.
    MatLab Training Institute in Chennai | MatLab Training Center in Velachery | MatLab Courses in Tambaram

    ReplyDelete
  90. Your article is really an wonderful with useful content, thank you so much for sharing such an informative information. keep updating.
    MultiMedia Training Center in Chennai | MultiMedia Training Courses in Velachery | MultiMedia Training Institutes in OMR

    ReplyDelete
  91. Your article is really an wonderful with useful content, thank you so much for sharing such an informative information. keep updating.
    MultiMedia Training Center in Chennai | MultiMedia Training Courses in Velachery | MultiMedia Training Institutes in OMR

    ReplyDelete
  92. Pretty blog, so many ideas in a single site, thanks for the informative article, keep updating more article.
    Software Testing Training Institute in Chennai | Software Testing Training Institutes in Velachery

    ReplyDelete
  93. Data Science has understood the necessity of every scholar and ensure that every scholar gets an unmatched studying experience for the lifetime.

    ReplyDelete
  94. 360DigiTMG offers various modules of Data Science course that will help you in understanding the fundamentals of the concept. Start your course today to become the most wanted Data Scientist in the hiring market.

    Data Science Course in Bangalore

    ReplyDelete

Post a Comment

Popular posts from this blog

UiAutomator.jar: What happened when Android's JUnit and MonkeyRunner got drunk and hooked up

"Drunkenness does not create vice; it merely brings it into view" ~Seneca So Jelly Bean 4.2 landed with much fanfare and tucked in amongst the neat new OS and SDK features (hello, multi-user tablets!) was this little gem for testers: UiAutomator.jar. I have it on good authority that it snuck in amongst the updates in the preview tools and OS updates sometime around 4.1 with r3 of the platform. As a code-monkey of a tester, I was intrigued. One of the best ways Google can support developers struggling with platform fragmentation is to make their OS more testable so I hold high hopes with every release to see effort spent in that area. I have spent a couple days testing out the new UiAutomator API  and the best way I can think of describing it is that Android's JUnit and MonkeyRunner got drunk and had a code baby. Let me explain what I mean before that phrase sinks down into "mental image" territory. JUnit, for all its power and access to every interface, e

Run-As Like the Wind: Getting private app data off non-rooted devices using adb run-as and a debuggable app

"You're some kind of big, fat, smart-bug aren't you?" ~Johnny Rico, Starship Troopers (1997) One of the most important things about writing bugs is making them descriptive but concise. Screenshots, video, debug logging, and hardware snapshots are all fairly standard or available to Android testers these days and can save you enormously on text when communicating what constitutes the bug. Sometimes though, the app gets into a weird state due to some transient data issue where you may not own the API or the complexity with forcing the app data into a certain state is prohibitively high. In those cases it is very handy to directly inspect the data the app has in its own directories. Getting at this data is trivial on emulators and rooted devices but due to file system permissions, this data is otherwise completely private to the app itself. If you're like me, you tend to test using devices rather than emulators and you probably prefer not to root your devices sin