一、应用层:
1. Android developer网站http://developer.android.com
Android developer网站提供了熟悉Android系统最权威的资料,这里包含了Android所有概念的详细解释。
2. Android SDK示例程序
AndroidSDK示例程序,位于sdk/samples目录下,提供了大量的案例程序(demo)。是熟悉应用程序和学习Android API的最佳入门材料。
3. 《Android 4高级编程(第3版)》
(美) Reto Meier 著,算是介绍应用层相对好点的材料
4. 一本能迅速上手的书
比如Fragment等
5. 分析Android源码内置应用程序
Android内置应用程序、Launcher、Contacts、Phone、Camera、Gallery
6. 分析Android开源项目
二、框架层
1. 《Android系统源代码情景分析》和老罗的Android之旅博客
作者:罗升阳。基于Android 2.3。这本书对Binder驱动、智能指针、Ashmem、键盘消息处理机制、Service、Log系统的分析非常好。建议学习框架层必备。
2. 《Android的设计与实现:卷1》
作者:杨云君。基于Android4.1。这本书对PackageManager、应用程序安装过程、ActivityManager、消息处理、进程管理、应用程序启动过程、系统启动过程的分析非常好。建议学习框架层必备。
3. 《深入理解Android:卷1,2》
作者:邓凡平。卷1基于Android2.2 ,卷2基于Android 4.0这本书对Binder框架、PowerManager、ContentProvider、常见类、Surface的分析非常好。建议学习框架层必备。
三、内核驱动层
1. 《Linux内核设计与实现》
Linux开发四大名著之一,简称LKD。是迅速理解Linux整体框架的最佳选择。
2. 《深入理解Linux内核》
Linux开发四大名著之一,简称ULK。理解Linux内核的最佳选择。
3.《Linux设备驱动程序》
Linux开发四大名著之一,简称LDD。理解Linux驱动的最佳选择。
4.《深入理解Linux内核架构》
Linux开发四大名著之一,简称PLKA。理解Linux架构的最佳选择。
5. 优秀的国产图书
Linux内核源代码情景分析 (作者:毛德操,胡希明):国内分析Linux内核最深入的一本书,基于linux2.4,很多内容仍然值得借鉴。
Linux设备驱动开发详解(作者:宋宝华):适合驱动入门的一本书,可以配合LDD一起看。
嵌入式Linux应用开发完全手册 (作者:韦东山):适合入门的一本书,非常易懂
ARM体系结构与编程(作者:杜春雷):适合了解ARM体系结构的一本书。
总结:
系统测试:
1)适配性测试
手机型号、网络通信情况(2G/3G/4G/WIFI/飞行模式、NET/WAP、中国电信、移动、联通)
android的版本号(android 4.0、android 2.3、android 2.2、android 2.1)主要是2.2/2.3.*/4.0
屏幕分辨率(1280*720、960*640、960*540、854*480、800*480、640*480、640*360、480*360、480*320、400*240、320*240、220*176)
2)功能模块测试
a)根据预先编写的测试用例测试
3)异常测试(手机交互性事件)
*按键打断,如电源键、home键、音量键、返回键;插拔数据线
其他程序后台相互切换
网络切换(2G/3G/4G/WIFI/飞行模式、NET/WAP、中国电信、移动、联通)
待机后是否能恢复程序和网络
短信、电话和闹铃
安装、覆盖安装和卸载
有无SIM卡,有无SD卡
用户体验测试
1、界面
①文字错误、图片不显示或显示不正确、缺少输入项、按钮的大小和点击效果
②布局、图片和配色设计问题,测试人员很难进入
③提示信息,提示信息语言准确简洁,有指导性。在应该提示的位置放入提示信息,比如程序需要接入网络,在无网络的情况下应给予提示
④提示信息,提示信息的方式有很多,大概有弹出式和非弹出式两种,根据实际情况来区分
⑤阅读性,手机因输入方式和屏幕大小限时,目前以阅读为主要(除聊天软件),做好阅读是关键。文字字体、大小、颜色和背景颜色可调整,夜间模式
⑥简洁,看看any.do就知道什么是简洁了,如穿着白纱美女的油画一般
⑦输入法,输入法不能挡住输入框;回车可以跳转到下一个输入框
2、稳定性
①网络,需要访问网络的程序,在网络不稳定的情况下,应能正常运行,不应出现意外退出和错误;如程序无法在该环境下运行,应提示用户
②网络切换,同上
③网络信号弱,同上
④进程切换,在多进程切换中,应正常运行,并保持切换前页面,不应出现意外退出和错误
3、性能
①程序进行某些功能时,不应使手机出现卡、顿等情况,视实际情况而定
4、安装
①路径,可选择手机、SD卡
②覆盖,可覆盖旧版本,并不会出现异常
③卸载
5、升级
①提示,在每次程序运行的时候提示,或可以设置不提示新版本
②下载,或可设置在特定的网络环境中才允许下载,如WIFI
③取消,下载可取消(并可暂停和继续)
6、操作
①查询按钮和回车同时响应搜索
②按钮点击有变化
业务
1、准备,熟悉项目环境背景,了解需求(没有不变的需求,但还待参照NND,最后的需求和最开始的可能面目全非)
2、以业务流程为准
①从流程开始到流程结束,至少要包含重要的功能点
②不同的流程起点,可以在多个流程用例中体现
③不能完全包含所有起点,则单独看
移动互联网App测试点包括:
1.安全测试
1)软件权限
-扣费风险:包括发送短信、拨打电话、连接网络等
-隐私泄露风险:包括访问手机信息、访问联系人信息等
-新增风险项
2)开发者官方权限列表信息比对分析
2.安装、运行、卸载测试
验证App是否能正确安装、运行、卸载,以及操作过程和操作前后对系统资源的使用情况,
主要包括:
1)检测软件是否能正确安装、运行、卸载;
2)安装、卸载、更新错误报告;
3)其他辅助信息:
-位置和文件夹是否合理;
-组件是否正确注册或删除;
-评估操作前后,
CPU、memory(内存占用)、Storage(磁盘占用)等系统资源的使用
3.UI测试
测试用户界面(如菜单、对话框、窗口和其它可视控件)布局、风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等。
UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。
4.功能测试根据软件说明或用户需求验证App的各个功能实现,采用如下方法实现并评估功能测试过程:
1)采用时间、地点、对象、行为和背景五元素或业务分析等方法分析、提炼App的用户使用场景,对比说明或需求,整理出内在、外在及非功能直接相关的需求,构建测试点,并明确测试标准(若用户需求中无明确标准遵循,则需要参考行业或相关国际标准或规则)。
2)根据被测功能点的特性列举出相应类型的测试用例对其进行覆盖,如:涉及输入的地方需要考虑等价、边界、负面、异常或非法、场景回滚、关联测试等测试类型对其进行覆盖。
3)在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误。
5.性能测试评估App的时间和空间特性
1)极限测试:在各种边界压力情况下(如电池、存储、网速等),验证App是否能正确响应。
2)响应能力测试:测试App中的各类操作是否满足用户响应时间要求
3)压力测试:反复/长期操作下,系统资源是否占用异常;
4)性能评估:评估典型用户应用场景下,系统资源的使用情况。
5)Benchmark测试(基线测试):与竞争产品的Benchmarking, 产品演变对比测试等。
6.中断测试针对智能终端应用的服务等级划分方式及实时特性所提出的测试方法,如:App在前/后台运行状态时与来电、文件下载、音乐收听等关键运用的交互情况测试等。
7.兼容测试主要测试内部和外部兼容性,包括:与本地及主流App是否兼容;检验在各种网络连接下(WiFi、GSM、GPRS、EDGE、WCDMA、CDMA1x、CDMA2000、HSPDA等),App的数据和运用是否正确;与各种设备是否兼容(若有跨系统支持则需要检验是否在各系统下,各种行为是否一致)。
8.安全测试
安全测试显得尤为重要,粗心、不谨慎的数据存储或传输方式使得非法、恶意目的有可乘之机。智能终端安全涉及各信息交互、存储接点,借鉴于网络传输和相关安全测试经验,App安全测试大概划分为以下几类:1)从数据的本地存储到数据的传输、处理以及远程访问等各个环节,基于相应的安全标准/行业标准评估App的安全性;
2)借鉴在Web App和网络安全测试的一些成功经验在智能终端App测试中进行裁减或适配;
3)检测App的用户授权级别,数据泄漏,非法授权访问等;
4)对App的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测,以期发现潜在的安全问题;
5)基于各种通信协议或相应的行业安全标准检视App是否满足相应的要求。
9.回归测试Bug修复后的回归测试,在交付前、要进行全量用例的回归测试。
10.升级、更新测试新版版发布后,配合不同网络环境的自动更新提示,及下载、安装、更新、启动、运行的验
证测试。
11.用户体验测试以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用、友好亲切程度。通过不同个体、独立空间和非经验的统计复用方式去有效评价产品的体验特性,提出修改意见提升产品的潜在客户满意度。
手机crash崩溃率:
1.挑选机型:机型选择不对,努力白费
有针对性的选择一些有代表性的机器,通过常规测试总结哪些平台哪些系统版本容易发生崩溃,个人觉得机型应该包括:
1)平台:展讯、MTK、高通平台
2)系统:2.3 4.0 4.2 4.4 5.0(最新)
2.测试用例:各种边界值和压力测试
3.随机测试:用monkey随机测试
4.crash日志收集:
实现方式:1)将crash日志存到手机存储卡,定期上传到服务器后台
2)通过第三方SDK来收集日志,如鹅厂的:bugly(此SDK未接入过,有接入的朋友可以提供下信息,是否如TX宣传所说的那么神奇)
5.云测:如testin,可以测出一些crash,但是好像实用性不大