I've been exploring the Android test package and I'm very confused on how to implement functional testing for endpoint-to-endpoint.
Consider the example below, I have 4 activities: 1. A Contact List Activity 2. A View Contact Activity 3. An Add/Edit Contact Activity 4. A Sync Contact List activity
I want to automate a few tests that will go through multiple test cases simulating a user experience: From launching the application, to selecting 'Add contact;' opening the add contact activity, entering data, saving it, going back to the list activity, and verifying the new contact was saved properly.
As I understand it, ActivityInstrumentationTestCase<T extends Activity> and ActivityUnitTestCase<T extends Activity>, are only useful for testing single activity functionality.
But what if I need to switch between 2 or more activities inside a single functional test case?
Automated Functional Testing..First of all let me make you all aware that I'm a developer and what you are going to read further is a developer's account, so it may sound to you like a layman tester. But what I'm going to share is something which has been very helpful to me to 'functionally' test the web application our team has been building and I thought this may help you as well. So even if you are a tester, try to think the way developer's think for some time, I'm sure this would be useful to you too. Before I go ahead, I think we all understand that Functional Testing is testing the functionality of our application which means you'd probably be going through a login using some credentials, clicking some links, verifying some outputs - in simplest terms. Now just give it a thought that if you can automate these i.e. invest some time for once and then while you are sipping a cup of coffee, someone is testing what you coded. Change your code 10 times and run your test 10 times to ensure nothing breaks, so easy. Not just this if you have continuous integration server setup which runs your tests, you'd come to know immediately if and when someone else broke your code. Believe me ones who have used it, feel it is fantastic.
There are a variety of tools available for this over internet each with pros/cons but I'm going to share some info here about one which I liked very much and have been using for a while now. I'd also share why I preferred it over others.Ok, no longer prolonging the suspense the tool I'm talking about is called Canoo WebTest (webtest.canoo.com) which is a free Open Source tool for automated testing of web applications in a very effective way. The primary reason why I liked it is that it is FAST; very fast ... most of the test cases that I've written are executed in less than a minute and that too over remote applications deployed on servers on the other side of globe. Second reason for liking it so much is the ease of writing; very quickly you can build up your tests. Though they have released a WebTest recorder plug-in which when installed in Mozilla Firefox can record the script for you, but believe me the more you start writing there test cases, the less reliant you will become on the recorder. Third thing is these tests do not use a browser so that completely eliminated browser-specific issues which some tools are plagued with.
I don't know if this is kosher, but I wanted to see if anyone would want to test an app I built. I don't want to release an app to the market without getting out all the bugs I can, but I'm a lone developer trying to build apps on the side in my free time. I don't know many people with Droids, so I'm trying to reach out to the community. I built an app I call "Next Track on Shake". Not a good name, (and I'm up for suggestions for a better name) but I can't think of anything else to explain its function. I listen to alot of music, usually on shuffle, and I hate having to wake the phone up, unlock the screen, open the music player, and change the track. The new versions of Android require PIN or Password when you use a corporate account, and that adds another step in changing tracks. I built an app that allows you to shake the phone, whether awake or not, and it will move to the next track for you. I also added the ability to customize the shake; you can set how hard or how fast you need to shake the phone to change the track. The default shake is a good setting for most people, but alot of people jog with the phone on their arm or hip and would need to adjust the strength of the shake so as to not accidentally change tracks. I've also added the ability to stop/start the service when needed, and I display an ongoing notification when the service is running. When the phone is rebooted, the app checks the preferences, and only starts the app if you had the service running before reboot.
I have created an app which needs some testing done. I have tested it on the HTC Hero (UK version) and the HTC Tattoo. Worked well on both the devices. I wanted to test it on the newer android phones like the Droid or the Nexus One. If anyone could help me out with the testing, there is a link to the .apk file below. This app does functions like silencing the ringtone when the phone is flipped, switching on the speakerphone when in call etc. http://dl.dropbox.com/u/556550/FlipShake.apk.
I'm prepping my first app for publishing and am a bit confused about how to properly test my <uses-permission> tags.. if i don't specify any permissions my app runs with no complaints on my G1. I tried installing it via "adb install" as well as with the eoeAppInstaller (as somebody had recommended). Also, the app is signed with my own certificate (not the debug cert). given that it works fine with no permissions (btw, it accesses camera and sd card), how will I know if I've set all of the proper <uses- permission> tags?
Can someone with a Nexus One download AppFriend from android market (qr code -http://www.zappmarket.com/catalog/27) and give me a stack trace of the error message? I've got reports coming in that it crashes on startup (and the nice 1 star reviews that follow). The code that it is breaking on is really simple, so I'm not sure what the incompatibility could be, as it works on G1 and Magic.
We have many phones, but we don't--and probably never will--have all of them.
It's frustrating that some phones cannot see our apps in the market, and we'd like to know which phones those are.
We'd like to have a simple way to have our app tested on each phone, but at this point there's no easy way to do that.
My question is: what would we as developers be willing to do to get these needs met? Is there enough demand for someone to buy all possible Android devices and charge a nominal fee for these services?
We would pay a small fee to have out app accessed and downloaded on all phones--this would give us a report of which phones could access our app. We would pay a fee to have a step-by-step test ran on each possible device so we could know it worked on that device, at least minimally.
I have some questions about the testing of bluetooth.
I have tried the bluetooth chat and it worked pretty well on my two Andriod 2.1 based mobile phones.
However, this test can only be done only by someone who has 2 android phones and the version must be 2.1.
I assume this is a big issue because i looked into the CTS related to Bluetooth topic and it doesnt explain much about it.
The regular expectation for testing Bluetooth should be:
# Scan for other Bluetooth devices # Query the local Bluetooth adapter for paired Bluetooth devices # Establish RFCOMM channels # Connect to other devices through service discovery # Transfer data to and from other devices
In my case:
I would like to implement the application to send the file(image file, mp3, whatever...) from my Android 2.1 mobile to any device with Bluetooth module.
We are working on an application that is a "Black Box in a phone" Written only for Android at the moment, we have tested on T1 and Magic, and we are looking for people to help us test it in various circumstances.
The app is designed for pilots and those that fly, tracks the phone in realtime and displays it on others phones and also in 3D on the website, GPS Logbooks - Home | Black Box Flight Recording, using only your Android cell phone.
The app is now in the marketplace, so we are looking for pilots, navigators, glider pilots, balloonists, sky divers and anyone else who likes to fly to download the app and go flying. After that you can publish your flights and share them with others.
Please note that your location data is visible to anyone on the site when you are flying live, so don't use it if you are somewhere that you don't want people to know about.
I got my app to install on the Backflip and started testing it. On the emulator everything appeared ok but on the Backflip there are a few notable differences.
I have edittext boxes which on the emulator automatically vary in size to accommodate the text. The text is a number, the max being two digits, i.e., 1-99. On the Backflip the edit boxes seem to be a fixed width and that width is larger than needed. Consequently some of the edittext boxes go past the end of the screen and can't be used or seen. This doesn't happen on the emulator.
I also have spinners. One set of spinners is created using android.R.layout.simple_spinner_dropdown_item populated by an array from array.xml. These spinners have the radio button showing and they work on both the emulator and the Backflip displaying a white background with black text.
The other spinner is created using int layoutID = android.R.layout.simple_spinner_item and is populated with strings from the database using an ArrayAdapter. This spinner displays ok on the emulator with a white background with black text. On the Backflip however, it displays the white background but with white text making the list essentially impossible to see. The list is populated because when I press on an item the background color changes to red, the text is white, and the program works ok.
My question is: Are these discrepancies peculiar to the Backflip or am I doing something wrong in the code? I'd hate to think all devices come with peculiarities that require workarounds. Hopefully I'm doing something wrong and hope someone can point out what it is. I'll post any code someone wants to see but right now I don't know what to post. Thanks.
I should add that when I use android.R.layout.simple_spinner_dropdown_item for the other spinner the text shows up ok but I now have the radio buttons which I don't want.
Ive no doubt this question may have been addressed before but how can I turn on a framerate monitor to use when I run my programs using the android emulator so I can see exactly what my android game is achieving at a given time?
What is the process of Interrupt testing of Android applications. Looking to know how to destroy all the background activities of the application any time of the test and see if the application is behaving well. Any good place to know the detailed procedure.Is Android has any thing Andriod Certified (3rd party testing to certify) like the Java Verified cert approach. Regards, Raja Nagendra Kumar, C.T.O www.tejasoft.com
Can EasyMock be used with Android SDK to test my code? I integrated EasyMock Class Extension to one of my test case to mock an object operates on SQLite db. When executing my test case I got the following exception when setUp() is called: Code...
I have separated java code from Android code and have two projects. Android dependent on Java project. Now i want to get the memory trace of the Java project on Android. For that I have created Androd Junit Project implementing Android Instrumentation, and a dummy android project dependent on my actual java project.(as I only want to get memory trace of java project on android).Problem is when I execute Android Junit project, and give a reference of dummy project removing java project dependency, all tests(dummy) run fine.But when I run junit project, with dummy android proj keeping dependency on java project, my application crashes.I get an error message like : "Process crash" not getting any error message in logcat. No clue whats wrong with code.Any help is highly needed.
I'm using a web service disguised as a ContentProvider and AsyncQueryHandler to isolate my activity from the delays of transport. My question is: during testing, how can I determine when my activity has retrieved the data from the web service? That would be after onQueryComplete() in the AsyncQueryHandler has come back with the "real" data. During manual testing, I just sit there and wait until the view updates. How can I do that using ActivityUnitTestCase and ActivityInstrumentationTestCase2?
I have gotten through signing up as an Android developer, joined Android Market, and recieved and activated my Android Developer Phone.I have my first draft application running in the emulator.The documentation suggests testing it throughly on the device, however, I don't want to put it up publicly in the Android Market until I am satisfied with the app.
1) Is there a way to privately post a testing app on Android Market? If so, would somebody please point this newbie to the HOW-TO?
2) Is there a way to push my app onto my developer phone without using Android Market? If so, would somebody please point this newbie to the HOW-TO?
I'm having more fun working with this Android stuff than I have had in years! As soon as I learn enough to contribute I'm going to be overjoyed to share it.
I have an ordinary project with JUnit tests that are connected to the classes in my Android Project. I want my server to run some JUnit tests in my testproject everytime I commit my code from my Android Project.Is there a best practise to do this?So far I only managed to run the tests when they are a part of a while the JUnit tests and Android classes are separated into 2 different projects, since JUnit runs on JVM and Android in an emulator on DVM (Dalvik Virtual Machine).
I've just added LVL and server-based licensing into my (as-yet unpublished) app.It appears that the license testing requires that the app exist in the Android Market.Is there a way to "publish" an app to the Market but keep it hidden while I test?
Can I install and test the applications directly on G1 ( purchased from T-Mobile ) or I should purchase the developer version of G1 ( available from google ). Btw, I already registered for android market.
I'm trying to make my application (compiled against 2.1) compatible with the 1.5 platform. I've handled all of the res/ folder issues, and have been able to run the app on all platforms without problems. I can run it fine on all emulators, and all devices/OS systems running 1.6 or higher. But on the only 1.5 device I have (HTC Hero), I get intermittent problems.
The only 1.5 device I have is an HTC Hero phone I got free at the Sprint developer conference a few months ago. When I test the app on that device, I have occasionally encountered a bug I've not seen anywhere, and can't find any information about.
I can install the application via the adb install command (although I get two messages about unknown commands), but after installing the app, the icon can disappear from the home screen, replaced either with a different icon or no icon.
When the app is launched in this state, rather than seeing my application name in the title bar, it reads "60.0dip". I don't use this value anywhere in my application.
I have never observed this problem on any other phone I've tested on (G1, myTouch, two Motorola Droids, Nexus One), but as I said I've only got one device running 1.5.
I'm trying to test an Activity in android which will show a ProgressDialog and everything works fine in the App, however when I try to use ActivityUnitTestCase and the test causes the Activity to show the dialog it fails with this error:
I was looking at the problem and it seems that the onCreateDialog method of my activity crashes when we try to create it from the test, which I assume is another context, I get that, however I wonder is any of you have been successful on trying such a scenario.
I was finally able to build and debug the android platform (the process can be seen here). Now, the question is: where are the unit tests, how do I launch them and where do I see results? And also, is there any guide to android platform architecture?
There is no way to load a string from a specific locale's language file.
What I want to do is run all my locales' (I have 24 of them) time format strings through unit tests to make sure they don't crash. For example, here's a date format string in French: "'Hier Ã ' h:mm a".
These really need to be unit tested, because translators aren't great about properly escaping these strings, causing crashes unless we manually verify every string in every language every time we get a translation pass back.
This question has a sort-of answer. Is that really the only way? Is there a better way to specify the locale of a Context in unit tests?