Android Test

来源:互联网 发布:网络棋牌游戏制作 编辑:程序博客网 时间:2024/05/17 23:29

Android Test

有人说:好的应用程序不是写出来的,是测出来了的!

1.先说一下安卓测试的分类
根据是否知道应用程序的源代码
* 黑盒测试 不知道程序的源代码,但是知道程序的功能,根据输入测试输出
* 白盒测试 知道程序的源代码,写一写测试逻辑跑这个程序的代码

根据测试的暴力程度
* 压力测试 pressure test 单位时间内的频繁测试
* 冒烟测试 smoke test 长时间的重复测试
monkey:让Monkey程序模拟N次随机用户事件

根据测试的暴力程度
* 压力测试 pressure test 单位时间内的频繁测试
* 冒烟测试 smoke test 长时间的重复测试
monkey:让Monkey程序模拟N次随机用户事件
这里写图片描述
根据测试的粒度(精细程度)
* 方法测试 function test
* 单元测试 unit test
* 集成测试 integration test
* 系统测试 system test

我们要测试什么?从软件的六个方面出发:
* 功能性
* 可用性
* 性能
* 安全性
* 兼容性
* 可靠性
这里写图片描述
列举一些常见有必须测得点:
安装、卸载测试:
*安装、卸载测试主要针对于编译后源程序生成的APK安装文件
*主要测试点有两个:
* 1.生成APK文件在真机上可以安装以及卸载
* 2.android手机端的通用安装工具,如:豌豆荚及91助手等工 具可以正常安装及卸载程序。

在线升级测试:
*验证数字签名。
*升级后可以正常使用。
* 在线跨版本测试。

业务逻辑测试:
*业务逻辑测试:主要测试客户端业务能否正常完成。
*功能测试:主要测试客户端功能点是否正常使用。
* 关联性测试:主要测试客户端与PC端的交互,客户端处理完 后,PC端与客户端数据一致。

异常测试:
*异常测试:主要包含了断网、断电、服务器异常等情况下,客 户端能否正常处理,保证数据正确性。

交互测试:
*交互测试:客户端作为手机特性测试,包含被打扰的情况13 种,来电、来短信、低电量测试等,还要注意手机端硬件上,如:待机、插拔数据线、耳机等操作不会影响客户端。

易用性测试:
*界面与交互性测试:符合android交互规范,符合用户使用习 惯,操作方便简单,具有一致性。
*可用性测试:用户体验好,用户操作方便,用户使用错误率 低。

客户端性能测试:
*偏重客户端CPU、MEM流量、电量以及客户端在不同网络环境下响应速度等。
*大量数据测试:主要在特定环境下,客户端一次性更新大量的数据,客户端能否正常处理,分为三种情况:
* 1.客户端第一次使用,第一次就更新大量数据;
* 2.客户端在平时更新中,更新大量的数据;
* 3.客户端已经在手机本地下载很多的数据后,再次更新大量数据。

适配测试:
* 手机不同分辨率支持:客户端支持 320*240,480*320, 800*480等。
* 手机不同版本的支持:2.3,4.4,5.1,6.0;在测试计划 中,需要安排单独的时间用于android不同系统的兼容性测 试,包括2.0以下和3.*,4.0版本等。
* 手机不同厂家系统的支持:不同厂家会有不同android系统,例如:小米手机,华为的输入法。市场是主流的系统及厂家不同型号的支持。
* 手机不同尺寸的支持:2.0到4.0屏幕在UI显示有区别的,要支持最大到最小。

电量与流量测试:
*手机的电量及流量测试主要是为了站在用户角度思考,毕竟电 量、流量消耗比较大,会影响客户的使用感受,手机端电量使 用率是和CPU使用率成正比的。由于这个没有比较详细的规 定,只要能出一个通用范围。CPU使用率不能超过10%以 上,流量不能超过10M以上,一般通过android手机端一些监 控软件获取数据。
*当然也可以通过代码打点获取。

内存泄漏测试:
* Android的程序有Java语言编写,所以Android的内存管理与 Java的内存管理相似。程序员通过new为对象分配内存,所有 对象在java堆内分配空间;然而对象的释放是由垃圾回收器来 完成的。
* Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小是 16M,有的机器为24M。因此,我们所能利用的内存空间是有 限的。如果我们的内存占用超过了一定的水平就会出现OOM 的错误。如果长期引用资源不释放就会引起内存泄漏。

外网与场景测试:
* 外网测试主要现实模拟客户使用网络环境,检验客户端程序在 实际网 络环境中使用情况及进行业务操作。
* 外网测试主要覆盖到wifi\2G\3G\4G、net\wap、电信\移动\ 联通,所有 可能的组合进行测试。
*原则:
* 1.尽可能全面覆盖用户的使用场景,测试用例中需要包含不同网络排列组 合的各种可能;
* 2.还有模拟信号被屏蔽时候,客户端的影响等;
* 3.还要做外部场景测试,在高山、丘陵、火车上等特殊环境下进行全面的 测试

常用测试

1.单元测试
2.自动化测试
3.第三方云测试

单元测试
配置:
* 1.首先,确认在Build Variants窗口内的Test Artifact中选择了”Unit Tests”。
* 2.然后,在工程的src文件夹内创建test和test/java文件夹。
* 3.最后,打开工程的build.gradle(Module:app)文件,添加JUnit4依 赖,点击Gradle sync按钮。
创建:
* 1.首先,创建一个非常简单的被测类:Calculator类。
* 2.然后,向类中添加一些基本的算术运算方法,比如加法和减法。
* 3.AndroidStudio提供了一个快速创建测试类的方法。只需在编辑器内右键点击 Calculator类的声明,选择Go to > Test,然后”Create a new test…”。
运行:
* 4.右键点击CalculatorTest类,选择Run > CalculatorTest。
* 5.根据红条还是绿条判断测试结果。

注意:
Android Studio从来没有让你连接设备或者启动模拟器来运行测试。那是因为,位于src/tests目录下的测试是运行在本地电脑Java虚拟机上的单元测试。编写测试,实现功能使测试通过,然后再添加更多的测试…这种工作方式使快速迭代成为可能,我们称之为测试驱动开发。

*参考:
http://www.jianshu.com/p/03118c11c199

Demo演示

自动化测试
这里写图片描述

自动化测试的价值
优势:
* 1. 提高测试执行效率,节约时间成本
* 2. 解放人力去做更加重要的工作
* 3. 可重复利用,减少对人的依赖
* 4. 提升客户满意度
* 5. 提升软件测试团队整体水平
* 6. 可大幅度减少兼容性测试的工作量
* 7. 有些测试工作必须依靠自动化来完成

不足:
* 1. 开发自动化测试脚本需要花费较长周期
* 2. 随着产品的不断迭代,自动化测试脚本也将不断迭代,时间成本高
* 3. 不同的项目之间自动化测试脚本的重用度低
* 4. 对短期项目型产品实施自动化测试价值不高
* 5. 自动化测试无法代替手工测试找到产品的BUG
* 6. 自动化测试更多适用于回归测试
* 7. 自动化测试开发过程对软件测试团队的技术有较高的要求

手工测试VS自动化测试:
这里写图片描述

自动化测试能力要求:
对程序设计的要求:
* 有Java程序设计基础或者相关经验;
* 有Python等脚本语言基础经验;
* 有数据库和SQL语句使用经验;
* 对软件系统三层结构以及协议有所理解;

对软件架构的能力要求:
* 理解软件系统前端和后端交互过程;
* 理解操作系统(手机和电脑)基本原理
* 对软件系统三层结构以及协议有所理解;
*理解项目的核心技术架构;
* 理解对被测试产品的需求和业务逻辑

自动化测试实施可行性:
* 自动化测试方案应该与产品的架构设计工作一起,在研发早起 进行统一规划,确保自动化测试的可实施性,减少为测试而重 构代码;
*自动化测试更多用于回归测试或兼容性测试,不能以寻找BUG 为目的;
* 自动化测试属于执行阶段,测试工作应该重点关注分析与设计
* 数据表明:80%的企业自动化测试实施工作无法坚持,效果不 理想;
* 自动化测试时为软件质量服务的。

自动化测试工具:
常用框架:
* Robotium
* uiautomator
* Espresso
* Calabash
* Appium

适用平台:
慎重考虑你的测试需求-功能测试,兼容性测试,UI测试等等,然后选择一个最适合和最优的Android测试框架。
这里写图片描述

自动化测试举例
Macaca
阿里开源的完整自动化测试解决方案。
环境配置:
* 1. Node : Node.js 4.0 or higher : JavaScript 运行环境。
* 2. iOS : Xcode 7.3 or higher;
ios-webkit-debug-proxy is needed in order to testing WebViews
* 3. Android : Install the latest JDK;
Install the Android SDK;
Set the ANDROID_HOME environment variable to your ~/.bashrc, ~/.bash_profile, ~/.zshrc or whatever your shell uses
安装:
Macaca : $ npm i macaca-cli -g
安装成功会出现猴子图像:
这里写图片描述

Example:
* 代码下载:
gitclonegit@github.com:xudafeng/macacatestsample.gitcdmacacatestsample(cd/Users/yingyin/Documents/files/macacatestsample) make test-pc pc端
maketestandroidandroid make test-ios ios端

原理:cdmc/wd框架
这里写链接内容
这里写图片描述

第三方云测试
这里写图片描述

服务支持:
* 1.人工测试
* 2.自动化测试
* 3.用户测试
* 4.自定义测试
* more…

推荐平台:
* 1. Testin云测试平台
这里写链接内容
* 2.百度的MTC
这里写链接内容
* 3.东软易测云
这里写链接内容

0 0