21
Feb 2012Testdroid Recorder 1.1.13 is out with great new features
By Testdroid
Hi all,
A new and significantly improved version of Testdroid Recorder is out and this time our development team has really really delivered good stuff – and plenty of it! Here are the new features and improvements in Testdroid Recorder:
ScaleClicks
First and maybe the most important new feature in Testdroid Recorder is ScaleClicks. With ScaleClicks your xy clicks (clicks on certain coordinates on the screen instead of clicks on certain button or text field etc) become truly scalable across all resolutions! That’s right – even if you have xy scrolls and clicks in your recording, the new Testdroid Recorder stores them in a way that they can be re-scaled when the tests are run. This means that even if you make your recording on one resolution, you can run your tests on a totally different resolution and all clicks that are using coordinates work – this is ground breaking! You can check out the power of ScaleClicks just by recording your tests and then running them on all devices at Testdroid Cloud, it is just amazing
Resolving R.ids when recording tests from APK
Testdroid Recorder can now resolve the resource id’s for UI elements even when you are recording your tests without having the application source code available. When you record your tests from APK you now get the same robust Robotium code using refences to r.ids whenever they are resolvable. This together with oher improvements in this release will take your Robotium tests to a higher level in terms of robustness and scalability across different Android devices.
Clicks on hardware keys are now recognized
The new version of Testdroid Recorder recognizes also all clicks to hardware keys as well as to all soft keys.
Improvements on recording text field inputs
Now the text input to any text field is identified right after the focus moves away from the text field. This enables much more accurate capturing of entered texts. Also text inputs are now recorded with correct indexes.
Recognizing all inherited UI widgets
Testdroid Recorder can now recognize even all custom UI widgets as long as they are inherited from some standard Android UI widget – again a huge improvent that allows very versatile use of Testdroid Recorder.
Faster recording
We have optimized the recording event so that the Recorder and the application under recording are more responsive and the whole Recording is much smoother.
Bug fixes
On this release we fixed a good amount of clear bugs, some of which were reported by our loyal users – Thank you very much for those ‘improvement suggestions’! The highlights of fixed bugs include:
16
Feb 2012Bitbar sponsoring HTC developer event @ HTC Mountain View, CA on February 17, 6pm – 9pm
Bitbar is sponsoring an HTC hands on developer session at HTC’s Mountain View Office, 800 W El Camino Real, Suite 200, Mountain View, CA 94040. Robert Biczek from Bitbar will be introducing Testdroid automated Android application test tools and giving free access to Testdroid Cloud (http://cloud.testdroid.com) to all participants. Please talk to Robert for more info.
Testdroid Cloud is a fully automated online service for testing Android appications on real Android devices. It is the best way for anyone to ensure that their application runs on as many Android devices as possible and it is open for all Android developers. Please sign up at http://cloud.testdroid.com for a test drive.
12
Jan 2012Android Design
Google announced new project to help developers. They called it “Android Design”. This is a website where Google present how to create good application with actual GUI patterns. In Android 4.0 Google presented new UI, new Robot font and improved Holo Theme from Android 3.x. Now is a moment to standardize UI in old and new applications, so please read all new information from Android Design and create simpler and good looking application.

09
Jan 2012Out of memory exception when changing Activity or creating Bitmap object in Android
One of the most common causes of fragmentation is limited hardware specs, whether it’s small RAM, slow processor or low resolution screen, they all create a challenging environment for Android application developers aiming for ultimate device compatibility. A lot of Android developers face memory issues on low costs devices and this is how it usually goes: You created a bitmap and your application throws an OutOfMemory exception but there is still a lot of free memory and you are left wondering: What is the source of problem? How to limit this? Let me explain.
Android has two kinds of stacks – one for application and one for graphics. In an activity method setContentView(int i) Android inflates XML layout and initializes all objects. In this part of code every graphics object is located in a memory. This same situation happens when your application creates a Bitmap object. Android creates object in the graphics stack and sends reference to it and sometimes, for one reason or another, you will receive an OutOfMemory exception.
I discovered this problem when I was testing my application with our product – Testroid Cloud ( Online cloud of real Android devices for running automated tests for Android applications).
When I was running my automated tests on all Android devices, I was constantly getting OOM exceptions on same devices – mostly on low spec ones. It was very strange because when I started debugging, I found out that there was still free memory left but my application just could not access it. I tried to search for a solution but all tracks pointed to a comment from a Google staff: “Your application uses too much graphics and you don’t manage your memory”. It was a strange answer because Java has garbage collector and, because of that, I thought I don’t have to delete objects manually.
Luckily my friend sent me a good article about strong and weak references (http://weblogs.java.net/blog/2006/05/04/understanding-weak-references). After reading this I understood what I was doing wrong. Loading every bitmap in application to a HashMap at the startup was a very bad idea! Every time in onStart() method I created a new HashMap object with reference to a new bitmap object. All old bitmaps were always still in memory. They had a strong reference so garbage collector removed HashMap object but not every bitmap from graphics stack.
To fix this I created a new class to manage bitmaps. This class recycles them manually when they were removed or updated. I call it “BitmapManager”. In my opinion this is the best solution to solve my OOM problem.
How to create your own version:
-
Create an object to organize bitmaps (in my project I used HashMap<String,Bitmap>)
-
Create your own method to create, update and remove bitmaps. You should run method recycle() on old bitmaps.
-
If you have to download an image from web you should run all download threads from BitmapManager. This way you won’t have any problems with lost threads.
-
Clear and recycle bitmaps in onStop() method and reload them in onStart() method
-
Never send a bitmap in Message via Android Handler. It will create clone object, so you will lose original reference.
With this solution you can resolve almost all problems with bitmaps and out of memory exceptions. Finally one more word of caution: You should watch out on open recycled bitmaps. You will receive an exception from ImageView.
09
Jan 2012Happy New Year and highlights of 2011
On the behalf of everyone here at Bitbar, allow me to thank each of you for participating in the Testdroid story this past year—and take a moment to share some of the highlights.
2011 Highlights
- Testdroid Cloud service with real Android devices was launched about 6 weeks ago and our user base has grown dramatically.
- In only 6 weeks we passed the 20,000 completed tests mark on Testdroid Cloud.
- We also saw over 1,000 different customers using our products, including most of the leading technology companies and start-ups around the world.
- We have rapidly increased the number of Android devices in our device cloud and are adding new devices every day.
- Our current range of devices cover over 90% of the Android user base.
On Testdroid Cloud You can set-up for example 100 different Android devices automatically to access and load test your service, just like mobile end users would use it. And you can do it after every code check in, after every change in the code in the Android app or on the server side. Testing all that manually is impossible. And not fun at all. Just automate it!Testdroid Cloud will still be free of charge in the beta, so keep testing your apps on real devices. If you have some comments, suggestions or want to just say Hi!, please send email to support (at) bitbar.com
And if you are interested in private cloud installation or want discuss about commercials, please contact us at sales (at) bitbar.com
- Download new ground breaking version of Testdroid Recorder http://t.co/XfB6qRQZ
21.02.2012