根據是否知道源代碼測試可以分為黑盒和白盒。 黑盒:功能測試。 白盒:知道源代碼,要寫測試代碼。 根據測試的粒度。 方法測試: 單元測試: 集成測試: 系統測試: 根據測試的暴力程度。 壓力測試:谷歌工程師給我們提供了一個monkey + 次數指令可以進行壓力測試。 冒煙測試: 在Android工程下 ...
根據是否知道源代碼測試可以分為黑盒和白盒。
黑盒:功能測試。
白盒:知道源代碼,要寫測試代碼。
根據測試的粒度。
方法測試:
單元測試:
集成測試:
系統測試:
根據測試的暴力程度。
壓力測試:谷歌工程師給我們提供了一個monkey + 次數指令可以進行壓力測試。
冒煙測試:
在Android工程下創建了一個這樣的類,運行的時候有異常。
1 package com.example.unit; 2 3 public class Test { 4 5 /** 6 * @param args 7 */ 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 System.out.println("哈哈"); 11 } 12 13 }
Invalid layout of java.lang.String at value
#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (javaClasses.cpp:136), pid=4608, tid=3764
# fatal error: Invalid layout of preloaded class
#
# JRE version: (7.0_72-b14) (build )
# Java VM: Java HotSpot(TM) Client VM (24.72-b04 mixed mode windows-x86 )
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:\android\adt-bundle-windows-x86-20131019\workspace\單元測試\hs_err_pid4608.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
分析:Android工程是運行在Dalivk虛擬機上的,是運行在手機裡面的,手機裡面谷歌封裝了一個Dalivk虛擬機,這段代碼是java代碼是運行在JVM上的,所以會掛掉。
要進行單元測試,Android中需要繼承 AndroidTestCase這個類。
1 package com.example.unit; 2 3 import android.test.AndroidTestCase; 4 5 public class CalcTest extends AndroidTestCase { 6 public void testAdd() { 7 Calc calc = new Calc(); 8 int result = calc.add(3, 5); 9 assertEquals(8, result); 10 } 11 }
如果直接運行上面的代碼會報異常,does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml(沒有指定android.test。在其AndroidManifest.xml文件中,未聲明use -library android.test.runner)需要在清單文件裡面配置函數庫。
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.unit" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="17" /> 10 <instrumentation android:name="android.test.InstrumentationTestRunner" 11 android:targetPackage="cn.example.unit" android:label="Tests for My App" /> 12 13 <application 14 android:allowBackup="true" 15 android:icon="@drawable/ic_launcher" 16 android:label="@string/app_name" 17 android:theme="@style/AppTheme" > 18 <uses-library android:name="android.test.runner" /> 19 <activity 20 android:name="com.example.unit.MainActivity" 21 android:label="@string/app_name" > 22 <intent-filter> 23 <action android:name="android.intent.action.MAIN" /> 24 25 <category android:name="android.intent.category.LAUNCHER" /> 26 </intent-filter> 27 </activity> 28 29 </application> 30 31 </manifest>
1 <uses-library android:name="android.test.runner" /> 這段代碼的作用是告訴系統我要用到系統的一些函數庫。
1 <instrumentation android:name="android.test.InstrumentationTestRunner" 2 android:targetPackage="cn.example.unit" android:label="Tests for My App" />
這行代碼的作用是:指定我要測試哪個應用。
如果說ppt搞丟了,找不到需要配置的東西,可以創建針對當前需要測試的工程,搞一個測試工程,測試工程的清單文件裡面會將這兩項配置自動更新出來。