As you will observe, the topic is very generic and searching on the net should provide you starting pointers.
But to get you started, testing apps on mobile is totally different thing than testing web/desk-top applications.
Depending upon whether your test strategy to test content or functionality or response on a web application, you have multiple avenues to proceed. But essentially you end up sending a request, receive a response and then validate the results with your expected records. I would not dwell much into web or desktop app testing as it is a vast topic by itself.
For mobile app testing, you may consider these generic categories to start with:
1. Flow Tests– These tests should focus on whether your app is having the same functionality as per the requirement/ design docs. It involves the tester to imitate user-flows and app-element functions to be the same as intended by requirements and Style Sheets.
2. Content Tests: To verify the static and dynamic contents (if any) in your app to be the same as expected. This testing plays an important part for hand-held devices because most of the apps need to reply on some data and you wouldn’t want the user to see wrong content.
3. Interface Tests– Usually the cosmetic inspection. Whether the buttons/ fields, layout and other design is in line with UI Style sheet. Make sure that you also test rotation (on supported devices, if your app handles it). It is significant because the first thing a mobile app user observes is the look. Personally, if I were to download a game from App Store, apart from the user-ratings, I would see the screen-shots and its design. Also, sometimes you need to make sure that the app’s look is matching with the hosting device family (like for iPhone, you don’t see sliding bar on the navigation panel.)
4. Performance Tests– These tests make sure that AUT work under conditions low network/battery and memory. Both aspects, client side and server side needs to be considered when designing tests for this category.
5. Memory Tests– Mobile apps are far more vulnerable in term of memory shortage than web/ desktop apps because of its legacy. You don’t expect (normally) for a hand-held device to have 4 GB ram. And if your app is leaking memory, sooner of later it may exhaust the device memory and users will crib crashes. Making sure that app code is handling low memory and deallocating resources when finished is an important tasks. Code coverage inspection and using instrumentation tools helps in this testing.
6. Switching testing– You need to make sure that AUT is designed to handle interruptions and is sturdy enough to work properly when a call or message comes on the device. There are tools to simulate such interruptions but most of the time you need to test this manually and on device. Operations like attaching a USB cable, removing battery, incoming notification etc are few interruptions that you should use to test your app in this category.
To sum it up, you can extrapolate on these pointers for your mobile app testing:
1) Simulating low memory and verify how your application handles that situation.
2) Incoming calls/ sms when using the app.
3) Rotation (if supported by the app)
4) App in the background/ foreground
5) Fresh Install/ upgrade
6) Active location enabled/ not enabled
7) GPS (supported and) enabled
8) Swipe and pinch gestures
9) Asserting pop-overs (especially, when doing rotation).
10) Expiration of the app, in case your app has it.
11) Stress testing, repeated tests with/without low memory simulation and rotation.
12) Indirect testing: Review logs and code coverage reports.
Ofcourse, all this after/ during your functional (orthodox) testing!