Quality Awareness
1. Introduction
This document is a generic test plan that defines a set of test cases for applications targeting the maemo platform. Good quality applications should pass all these test cases. If you see missing test cases in this document, please join "Quality Awareness" project in garage.maemo.org and submit your cases to this document.
2. Test Cases
2.1 Packaging
2.1.1 Installation from application catalog
Precondition:
- Device without application and with default set of repositories.
Actions:
- Install application from install file (application catalog) by clicking install file in the browser.
Result:
- Application installs and runs correctly.
- All the needed dependences are downloaded automatically.
- There are no errors in the Application manager log.
- All icons created during installation are visible.
2.1.2 Application upgrade
Precondition:
- Device with an older version of the application.
Actions:
- From the Application manager.
- Update the repositories.
- Upgrade application.
Result:
- The new application version works correctly in the device.
- There are no errors in the Application manager log.
2.1.3 Application removal
Precondition:
- Device with the application installed.
Actions:
- Remove application by using Application manager.
Result:
- All the files installed by the package (except for modified configuration files) are removed.
- There are no errors in the Application manager log.
- Kill application process if it is running
- Remove tmp files
2.2 Networking
These cases assume that your application uses network.
2.2.1 Offline mode
Precondition:
- Application is installed and works well in online mode.
Actions:
- Switch device to offline mode.
- Start application and try to use its networking functionality.
Result:
- Application should give indication to user that network is not available.
2.2.2 Offline mode change
Precondition:
- Application is executing and works well in online mode.
- Working network available.
Actions:
- Start application.
- Switch device to offline mode.
- Try to use its networking functionality.
Result:
- Application should give indication to user that network is not available.
- If application UI blocks until network timeouts (in 1/2 minutes), it first indicates to user that it's working.
2.2.3 Wlan disconnected
Precondition:
- Application is installed and works well in online mode.
- Working network available.
Actions:
- Disconnect network
- Start application and try to use networking functionality
Result:
- Device should connect automatially to network and application works correctly.
2.2.4 WLAN and bluetooth connectivity works
Precondition:
- Application is installed and works well in online mode.
- Working network available and phone with data and bluetooth connectivity.
Actions:
- Run network test cases with WLAN connection
- Run network test cases with phone over bluetooth
Result:
- Application works with both connections
2.3 Memory card
Run these testcases both memory cards (if applicable).
2.3.1 Memory card full
Precondition:
- Application installed and works.
- Fill the memory card.
Actions:
- Run the application
Result:
- Application should give correct error message
2.3.2 No memory card
Precondition:
- Application installed and works.
- Remove all memory cards.
Actions:
- Run the application
Result:
- Application should give correct error message
2.3.3 Memory card removed during application usage
Precondition:
- Application installed and works
- Memory card(s) inserted into slot
Actions:
- Start application
- Execute mmc functionality (e.g. access, save, delete, rename, backup)
- Remove mmc from slot
Result:
- Application should give correct error message
Observation:
- MMC functionality needs to take enough time (e.g. saving large sized file) so that memory card removing can be tested during its execution.
2.5 Camera
These cases are relevant if the application uses camera.
2.5.1 Camera retracted
Precondition:
- Application installed and works
- Camera retracted
Actions:
- Start application
- Try to use camera funcionality
Result:
- Application works and indicates that camera is not available
2.5.2 Camera popped up during application usage
Precondition:
- Application installed and works
- Camera retracted
Actions:
- Start application
- Pop up camera
- Try to use camera functionality
Result:
- Camera functionality works correctly
2.5.3 Simultaneous camera usage
Precondition:
- Application installed and works
- Other camera application running (e.g. Internet Call)
- Camera retracted
Actions:
- Start application
- Try to use camera functionality
Result:
- If application does not allow simultaneous camera usage, give correct
error message
- If application does allow simultaneous camera usage by either having
its own switching mechanism or switching applications on the task navigator, camera functionality works correctly
2.7 Platform Integration
2.7.1 Hildon UI style
Precondition:
- Application installed and works
Actions:
- Test the application so that all UI elements are visible
Result:
- Menus and toolbars are Hildonized
- Buttons sizes are usable with fingers
- Application icons are visible in menus & task bars
- HW Keys are mapped to relevant features
- Full screen mode works correctly
2.7.2 Input method integration
Precondition:
- Application is installed to the device
Actions:
- Test all the text inputs and HW keys in the application UI
Result:
- Input method is invoked correctly when each of the text input widgets is tapped (by default normal input method for stylus tap and thumb keyboard for thumb tap)
- Enter key in the keyboard has logical behaviour
- HW keys have logical behaviour
2.7.3 Backup
Precondition:
- Application is installed to the device
Actions:
- Change all application settings and quit the application
- Do a backup
- Flash the latest IT OS release
- Re-install the application
- Restore backup
Results:
- All changed application settings were restored for the selected categories
2.7.4 Help
Result:
- Help item in application menu exists
- Help for the application in the device help exists
2.8 Security
2.8.1 No unsecured TCP/IP ports
Precondition:
- Application isn't installed
- Device has either ssh or terminal installed from which netstat can be run
Actions:
- Run "netstat -ta"
- Install application
- Run "netstat -ta"
- Run application
- Run "netstat -ta"
- Perform application use-cases and run "netstat -ta" after each use-case
Result:
- All identified ports should have documented security solution.
2.8.2 Network source verification
Actions:
- Download code from or upload sensitive data to the network
Result:
- HTTPS or public key encryption used for the downloaded content
2.8.3 Bluetooth security
Precondition:
- Application running in the device
- Ensure that your PC and tablet are not paired.
Actions:
- For each RFCOMM channel that your application opens, perform: "rfcomm connect <btaddr> <channel>". To find out which channel is used, publish it in SDP database and use "sdptool browse <btaddr>".
Result:
- Make sure that PIN is asked and user is asked to authorize connection in tablet before connection is established. Your security needs may vary, so authorization might not be necessary.
2.9 Performance
2.9.1 Startup and close time
Actions:
- Boot the device
- Start the application (for the first time) and note when user can interact with the application
- Close application and note when application window disappears
- Start application again and note when user can interact with the application
It's preferably to repeat these a few times and take the best times.
Result:
- Mandatory:
First startup < 6 secs Second startup < 5 secs Closing < 2 secs
- Desired:
First startup < 2 secs Second startup < 1 sec Closing < 0.5 secs
2.9.2 UI responsiveness and feedback
Actions:
- Go through all application use-cases
Result:
- All active UI elements react within 0.5 seconds to user actions (change state etc.)
- If an activity takes more than 3 seconds, there's progress indication
2.9.3 Stress conditions
Actions:
- In (ssh) console run following command to use all CPU: "while true; do false; done &"
- Start application
- Go through the application use-cases
Result:
- Application works without problems
2.10 Battery usage
Precondition:
- ssh package installed to the device and logged through ssh to the device
2.10.1 No unnecessary CPU usage (no polling)
Precondition:
- Tested application is running, but it's not being used
Actions:
- Start "top" in (SSH) console
- Perform all application test-cases
Result:
- After each application test-case ends, all processes stop their CPU usage according to "top"
2.10.2 No activity when device is idle or background
Precondition:
- "strace" package is installed to the device
- "No unnecessary CPU usage" test-case is performed and
application is left running
Actions:
- Wait until screen blanks
- Strace the application process and if it's threaded, all of it's threads: "strace -p <PID1> -p <PID2> ...?"
- Restart the application and repeat above steps
Result:
- Application has no activity when screen is blanked.
Note: threaded applications wake up at 8 sec intervals until device LinuxThreads? thread library is replaced with NPTL.
2.11 Reliability
2.11.1 Memory leaks
Precondition:
- Application compiles and works in x86 Scratcbox
- Read Maemo Debugging Guide
- Install Valgrind to Scratchbox
Actions:
- Go through application use-cases under Valgrind/Memcheck
Result:
- Valgrind doesn't report (definitive) memory leaks for the application
2.12 Error handling
2.12.1 Full Flash memory
Actions:
- Fill internal device flash as "user" user, e.g. by copying a file in File manager
- Start the tested application
- Go through application use-cases
- Exit application
Result:
- Application starts
- Application use-cases which save data to Flash, give correct error message when the data save fails (this can mean that application shows an error at startup and exits after user OKs it)
- Application exits gracefully
Note: Part of the Flash is reserved for root, so applications cannot rely on just checking whether Flash has free space.
2.12.2 Resource usage
Precondition: -application running
Action: -Start browser and browse to slashdot.org
Result: -Our application should not affect to browsing experience
2.13 Scalability
2.13.1 Different amounts of input data
This concerns applications which can load external data, either from the filesystem or network.
Precondition:
- Start "top" in (SSH) console
Actions:
- Load data (files) with sizes of 1KB, 10KB, 100KB, 1MB, 10MB
With compressed formats, the data size can refer to uncompressed data size in memory.
Result:
- Loading of all files succeeds, at least when no other applications are running or swap is used
- Mandatory: The time application spends parsing/loading the data does not increase exponentially nor does the application memory usage increase exponentially
- Desired: With large data files, time and memory usage is less than linear in relation to the data size (application doesn't read all of the data, scales images on the run etc)
2.13.2 Different screen sizes
Actions:
- Start application
- Switch application window between full screen and normal mode
Result:
- Both modes work
2.14 Documentation
Results:
- Release note
- Change log
- Copyrights in place
- Licensing in place
- Possibility to generate API docs from source if application provides APIs
2.15 Policy conformance
Results:
- Copyright & License defined
- Source code available if license require it
- Maemo trademark followed
Improve this page