一、测试相关概念
app测试是整个软件开发过程中最后的把关者,关乎到代码的健壮性、安全性和使用的合理性、便捷性等。
好的app不是写出来的,是测试出来的
1.测试是否知道源代码
黑盒测试 不知道代码
白盒测试 知道代码
2.按照测试的粒度
方法测试
单元测试 如android开发中的Junit测试
集成测试
系统测试 如电力、银行等系统的测试
3.按照测试的暴力程度
冒烟测试 如CPU等的硬件测试
压力测试 如12306网站等的测试
压力测试对应与android的monkey测试,使用cmd进行测试 ①adb shell ②monkey -p package count
二、单元测试
实例演示如何进行单元测试,第一步创建一个Calc计算类并添加一个add方法,然后添加一个单元测试包并在里面再添加一个测试类及测试方法,效果如下图,代码见后面:
Calc.java代码:
package com.zgs.Junit;
public class Calc {
public int add(int x,int y) {
return x+y;
}
}
CalcTest.java代码:package com.zgs.JunitTest;
import com.zgs.Junit.Calc;
import android.test.AndroidTestCase;
public class CalcTest extends AndroidTestCase {
public void addTest() {
Calc calc = new Calc();
int result = calc.add(8, 2);
assertEquals(10, result);
}
}
最重要的一步是修改清单文件AndroidManifest.xml,添加instrumentation指令和uses-library使用库,其中Instrumentation指令中的targetPackage包名要对应实际项目的报名,在编写其它单元测试时直接将这两段代码拷贝过去就OK了
,代码如下:<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zgs.Junit"
android:versionCode="1"
android:versionName="1.0" >
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.zgs.Junit" >
</instrumentation>
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="22" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="android.test.runner" />
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
运行测试注意事项:
①切到测试类文件,如本例中的CalcTest.java
②在Outline窗口中找到对应的测试方法,如本例中的addTest()
③右击Run As =>Android JUnit Test
④测试结果会在JUnit窗口中显示,绿条表示测试通过,红条表示测试失败
instrumentation指令和uses-library使用库应急处置方案
新建一个测试项目,在项目中的清单文件会自动将指令和使用库加入到测试项目中,此时可以将这两段代码拷贝到自己项目的清单文件中,也可以在测试项目中进行单元测试