写博客辛苦了,转载的朋友请注明出处哦,finddreams:(http://blog.csdn.net/finddreams/article/details/41120607)
一个APP软件开发的一般流程:需求分析——设计文档——建立模型——功能实现——测试修改——发布。
记得有一篇文章说过,做一个APP的开发周期最好是控制在三个月内,花3个月的时间开发,先打入市场,收集回馈再加以改善。其中时间安排是开发为一个月,而测试和调整则需要两个月。
测试是软件开发中非常重要的一环,对于我们的APP开发也同样如此。但对于初学者,我们不是很清楚测试该如何做,下面就给大家介绍一下Android开发的测试:
一.单元测试
任何程序的开发都离不开单元测试来保证其健壮和稳定。Android程序自然也不例外。从Android SDK 0.9开始,就有了比较成熟的测试框架,但是直到目前最新的1.1版本,也没有详细的文档介绍这个内容。所以今天我就给大家总结一下:
1.JUnit
做过Java开发的人都知道JUnit是用来做单元测试的,JUnit是指从Apache基金会下载的junit.jar里提供的一系列单元测试功能。Android是基于Java的,所以测试框架的特性也是基于JUnit。使用JUnit测试框架,是正规Android开发的必用技术,在JUnit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。单元测试是嵌入到项目中,也可以作为一个单独的项目针对某个具体项目进行测试。
2.单独的测试项目
在Eclipse中新建一个单元测试项目,点击下一步,填写工程名。
然后在下一步的时候需要你选择一个测试的目标工程,可以选择另外一个项目,也可以只在本项目中测试。他们的区别是选择另外一个项目可以测试其他项目中的数据。
完成后,如果选择测试其他项目我们可以在AndroidManifest.xml文件中可以看到如下内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.finddreams.blacknum.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.finddreams.blacknum" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>
如果是选择自身做完测试项目,就会看到
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.finddreams.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.finddreams.test" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>
为了测试我们先创建一个简单点类,主要功能是打印出测试通过log:
package com.finddreams.test;
import android.util.Log;
public class AppDemo {
public void testMethod(){
Log.i("Tag", "测试通过");
}
}
接下来是创建测试类,测试的类要继承android.test.AndroidTestCase 代码如下:
package com.finddreams.test;
import android.test.AndroidTestCase;
public class AppTest extends AndroidTestCase{
public void test(){
AppDemo demo =new AppDemo();
demo.testMethod();
}
}
然后点击右键Run As 选择Android JUnit Test 运行,就可以在右侧看到结果了:
绿色条表示成功,如果出现了红色条,表示出血了,程序有错误,需要及时改正过来。
3.嵌入式的测试
把测试框架嵌入到自己项目中去,其实也很简单,只需要在AndroidManifest.xml中加入如下代码就可以了:
- <instrumentation
- android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.finddreams.blacknum" />
- <application
- android:icon="@drawable/ic_launcher"
- android:label="@string/app_name" >
- <uses-library android:name="android.test.runner" />
- </application>
如果你不记得怎么写的话,可以先按照第一步来建一个独立的测试项目,就能够在AndroidManifest.xml中找到如上代码,复制粘贴到自己的工程中去。注意:android:targetPackage 必须换成你所要测试项目的包名。
测试中的几个知识点:
TestCase 基类:
TestCase 这个类用于在Android担当所有独特的TestCase的基类的作用,它是一个Abstract Class。
包含访问系统对象(如Context)的方法。使用Context,你可以浏览资源,文件,数据库等等;
——ApplicationTestCase
测试整个应用程序的类。它允许你注入一个模拟的Context到应用程序中,在应用程序启动之前初始化测试参数,并在应用程序结束之后销毁之前检查应用程序;
——ProviderTestCase2
测试单个ContentProvider的类。因为它要求使用MockContentResolver,并注入一个IsolatedContext,因此Provider的测试是与OS孤立的;
—— ServiceTestCase
测试单个Service的类。你可以注入一个模拟的Context或模拟的Application(或者两者),或者让Android为你提供Context和MockApplication;
——ActivityTestCase
Activity测试类的基类。我们测试activity时就是继承了这个类来编写一个自己的测试类进行测试,也是项目当中最长用到的。
二、云测试
1.功能测试。遍历应用的每一个角落,查看应用的功能、逻辑是否正常。
2.性能测试。应用的性能怎样,如启动时间、反应时间等。
3.兼容性测试。对不同目标终端设备、操作系统版本的兼容性测试。
Testin
真机测试:终端云 节省测试设备购买租赁成本
Testin云测试基于云端部署超过300款3000多部主流的Pad、Phone、Touch、Smart TV等智能移动设备,实时上架最新终端,免去测试终端的购买、租赁等诸多烦恼。
自动化测试:高效率 节省测试人员成本及时间
彻底告别原始的人工测试,5分钟内自动完成安装/卸载、启动/运行、UI适配等枯燥手工测试,保障App应用高质量快速迭代,按期发布最新版本。
测试类型
1)兼容测试
①安装卸载测试:测试App在指定终端上是否可正常安装、正常卸载,准确定位错误原因。
②遍历测试:自动识别App可执行的功能,在一定时间内遍历App的不同功能界面,通过截图记录操作路径 并输出日志、定位异常现象。
③运行稳定性测试:类似Monkey的随机性压力测试,测试App运行期的稳定性。
④UI适配测试:测试App的UI与目标终端的屏幕是否适配,记录是否存在渲染失败、错位、黑边框、黑白屏等现象。
①启动时间检测:检测App在终端上首次启动时间。
②内存、CPU耗用检测:检测App在终端上运行时不同时段占用内存、CPU情况。
③流量耗用检测:检测App在终端上运行时的网络流量消耗情况。
④电池温度检测:检测App在终端上运行时,对终端的电池温度等性能指标的影响情况。
3)功能测试
①自定义脚本测试:上传自定义脚本,脚本中给出准确的测试方法,能自动定位错误及反馈出错原因,能在结果报告中呈现测试过程出现的bug并提供重现步骤。利用JUnit快速定位代码错误,帮助您正确改善产品质量。
②执行结果判定:比对每个用例的测试结果,未通过用例给出准确的日志分析。
③支持Robotium、淘宝Athrun框架:支持Robotium、淘宝Athrun框架编写的自动化测试脚本。