您的位置:首页 > 移动开发 > Android开发

Android Test

2016-05-09 17:37 274 查看

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
4000
. 随着产品的不断迭代,自动化测试脚本也将不断迭代,时间成本高

* 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/macaca−test−sample.git∗进入当前目录:cdmacaca−test−sample(cd/Users/yingyin/Documents/files/macaca−test−sample)∗测试: make test-pc pc端

maketest−androidandroid端 make test-ios ios端

原理:cdmc/wd框架

这里写链接内容



第三方云测试



服务支持:

* 1.人工测试

* 2.自动化测试

* 3.用户测试

* 4.自定义测试

* more…

推荐平台:

* 1. Testin云测试平台

这里写链接内容

* 2.百度的MTC

这里写链接内容

* 3.东软易测云

这里写链接内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息