Best practices for testing for poor connection and offline support?
I am building an android app to be used in rural areas (Saharan Africa, waaaay off the grid). The mobile app pulls down maps and map info from a server, uses the data, creates some new data (takes pictures, records GPS coordinates, etc), and then sends the data back to the server. We've done our best to allow full function offline and to coordinate upload attempts with a network listener.
In August, we have a client who wants to roll this out to 1000 field workers in one shot, in rural Ghana. I'd like to hear thoughts about best practices for testing online-offline-poor connection systems as well as other thoughts regarding systems built to function in rural areas.
Also, I'm worried about rolling a system out to 1000 users at once. Suggestions for testing scalability?
You could synthize the network conditions of Ghana using a wan emulator.
This is a system that purposefully degrades a network connection to a known profile you route parts of you application through then request. It will be controllable via an API that tests can use.
This can be a device with lots of network cards or a VM based appliance. The devices are expensive and have very special calibrated network cards but that is probably overkill, software will probably be ok. I've used wanem and it's fine. Software will be less accurate but massively cheaper.
Either will be controllable via an API so your tests can request a profile before running the tests.