當前位置:首頁 » 編程軟體 » android自動化測試腳本

android自動化測試腳本

發布時間: 2024-09-30 07:32:51

『壹』 Android自動化測試工具有哪些

1.DroidPilot:一個新出android自動化測試工具

DroidPilot是一個自動化測試工具。它可以針對於Android平台的應用程序進行測試腳本編輯、自動回放、結果檢查、報告輸出等操作,以此來縮短回歸測試的時間和提升項目整體進度。測試的腳本不僅可以運行於模擬器,更可以同時運行於多台移動設備,這樣更能凸顯測試結果的真實性和可比性。

2.MonkeyRunner:AndroidSDK自帶一個測試工具

MonkeyRunner提供的API和執行環境可以運行python語言編寫的測試代碼。它提供了API來連接設備,安裝、卸載應用,運行應用,截屏,比對圖片來判斷特定命令執行後的屏幕是否包含預期信息,以及運行對應用的測試。MonkeyRunner使用,ProviderTestCase,ServiceTestCasek,SingleLaunchActivityTestCase及其他類來定義測試用例,並使用InstrumentationTestRunner類來運行測試。

3.Robotium:被稱之為針對Android應用的又一個Selenium

Robotium是另一種通過InstrumentationTestRunner來完成Android互動式測試的架構,它可以橫跨多個activities,並且支持功能測試,系統測試和接收測試。Robotium支持Activities、Dialogs、Toasts、Menus、ContextMenus甚至Honeycomb,並且它可以同Maven和Ant集成來完成持續集成測試。

4.Robolectric:Pivotal實驗室聲稱使用Robolectric可以在28秒內運行1047個測試

Robolectric另闢蹊徑,它並不依賴於Android提供的測試功能,它使用了shadowobjects並且運行測試於普通的工作站、伺服器JVM,不像模擬器或設備需要dexing(Androiddex編譯器將類文件編譯成Android設備上的DalvikVM使用的格式),打包,部署和運行的過程,大大減少了測試執行的時間。

5.LessPainful:多設備平台自動化測試的服務

LessPainful將Android測試又推進了一步,它提供了一個多設備平台自動化測試的服務。用戶上傳應用(*.apk)和用Cucumber(一種業務相關的DSL)編寫的測試文件,選擇測試運行需要的設備配置,最後測試將自動執行並生成測試報告。它支持的設備包括GarminAsus,幾款HTC,LG,SamsungGalaxy,SonyXperia和MotorolaMotodefy。

『貳』 adb+uiautomator+Python濡備綍瀹炵幇鑷鍔ㄥ寲嫻嬭瘯錛

鑷鍔ㄥ寲嫻嬭瘯鍦ˋndroid騫沖彴涓婂彲浠ヤ嬌鐢ˋDB錛圓ndroid Debug Bridge錛夈乁IAutomator鍜孭ython鏉ュ疄鐜般備互涓嬫槸鍩烘湰鐨勬ラわ細

  • 瀹夎匒DB鍜孶IAutomator Viewer錛

  • 紜淇滱DB宸插畨瑁呭苟閰嶇疆濂紸ndroid璁懼囩殑榪炴帴銆

  • UIAutomator Viewer鐢ㄤ簬鏌ョ湅鍜屽垎鏋怉ndroid搴旂敤鐨刄I緇撴瀯銆

  • 緙栧啓UIAutomator鑴氭湰錛

  • 浣跨敤UIAutomator Viewer鍒嗘瀽搴旂敤鐨刄I緇撴瀯錛屾壘鍒伴渶瑕佽繘琛岃嚜鍔ㄥ寲嫻嬭瘯鐨勫厓緔犮

  • 緙栧啓UIAutomator鑴氭湰錛屼嬌鐢↗ava鎴朘otlin緙栧啓錛屼互妯℃嫙鐢ㄦ埛涓庡簲鐢ㄧ殑浜や簰銆

  • 浣跨敤Python榪涜孉DB鎿嶄綔錛

  • 鍒╃敤Python鐨剆ubprocess妯″潡鎵ц孉DB鍛戒護錛屼笌璁懼囪繘琛屼氦浜掞紝濡傚畨瑁呭簲鐢ㄣ佸惎鍔ㄥ簲鐢ㄧ瓑銆

  • 鏁村悎Python鍜孶IAutomator鑴氭湰錛

  • 浣跨敤Python鐨剆ubprocess妯″潡璋冪敤UIAutomator鑴氭湰錛屼互鎵ц孶I鑷鍔ㄥ寲嫻嬭瘯銆

  • 澶勭悊嫻嬭瘯緇撴灉錛

  • 鍦≒ython鑴氭湰涓娣誨姞閫昏緫錛屼互澶勭悊鍜屽垎鏋怳I鑷鍔ㄥ寲嫻嬭瘯鐨勭粨鏋溿

  • 鍙浠ヤ嬌鐢ㄦ祴璇曟嗘灦濡俻ytest鎴杣nittest鏉ョ粍緇囨祴璇曠敤渚嬪拰鐢熸垚鎶ュ憡銆

  • 浠ヤ笅鏄涓涓綆鍗曠殑Python鑴氭湰紺轟緥錛屽叾涓浣跨敤subprocess璋冪敤UIAutomator鑴氭湰錛

import subprocess

# 瀹氫箟UIAutomator鑴氭湰鏂囦歡璺寰

uiautomator_script = "path/to/uiautomator_script.jar"

# 鎵ц孶IAutomator鑴氭湰

subprocess.run(["java", "-jar", uiautomator_script])

璇鋒敞鎰忥紝涓婅堪紺轟緥涓鐨剈iautomator_script.jar搴旀浛鎹涓哄疄闄呯殑UIAutomator鑴氭湰鏂囦歡璺寰勩傛ゅ栵紝紜淇濊懼囧凡榪炴帴騫跺勪簬璋冭瘯妯″紡銆

『叄』 如何使用python做android的自動化測試

目前大家對Python都有一個共識,就是他對測試非常有用,自動化測試里Python用途也很廣,但是Python到底怎麼進行自動化測試呢?今天就簡單的向大家介紹一下怎麼使用Python進行自動化測試,本文只是自己的一點點分享,若有錯誤,請大家多多批評指正。這里主要介紹的是一些Python測試的框架
1、單元測試
a、unittest :Python自帶的單元測試框架
b、pyunit:Junit的Python版本

2、使用Pyhon進行Windows GUI測試
這部分的功能主要就是和大家平時使用的QTP類似。在Windows下我們可以使用pywinauto這個開源的框架:
來個小例子:
app.Notepad.MenuSelect("Help->About Notepad")
app.AboutNotepad.OK.Click()
app.Notepad.Edit.TypeKeys ("pywinauto Works!", with_spaces = True)
呵呵,強大吧

3、使用Python進行Web自動化測試
使用Python進行Web自動化測試的工具有很多,這里就向大家推薦一下我比較熟悉的Selenium(Web Driver)吧。

『肆』 如何使用python做android的自動化測試

開始第一個簡單的Android UI自動化測試
1.使用adb命令連接真機或模擬器
2.打開uiautomatorviewer工具
3.使用uiautomatorviewer工具獲取應用的元素進行定位
4.簡單介紹unittest框架的使用方法
5.使用Python編寫貓寧考勤應用注冊模塊的自動化測試
1.使用adb命令連接真機或模擬器:
手機USB連接電腦,進入開發者模式;
cmd命令:adb devices ,查看手機是否連接
這里寫圖片描述
顯示錯誤
這是因為adb的埠被佔用,我們需要查看是什麼應用佔用了這個埠(5037為adb默認埠)
cmd命令 : netstat -aon|findstr 「5037」
這里寫圖片描述
可以看到佔用5037埠對應的程序的PID號為8388;
cmd命令 : tasklist|findstr 「8388」
這里寫圖片描述
可以看出8388對應的程序為kadb.exe,說明該程序正在使用5037埠;
這時我們需要在任務管理器中結束kadb.exe進程,按快捷鍵「Ctrl+Shift+Esc」調出Windows任務管理器,找到「kadb.exe」,單擊下方的結束進程即可!
這里寫圖片描述
我們再次運行cmd命令:adb devices
這里寫圖片描述
這一步成功後我們才能運行sdk自帶的uiautomatorviewer;
我們需要用uiautomatorviewer工具來獲取元素,用於定位。
cmd命令:uiautomatorviewer,打開uiautomatorviewer界面
這里寫圖片描述
或者找到sdk目錄:sdk\tools中找到uiautomatorviewer.bat文件雙擊運行
這里寫圖片描述
2.打開uiautomatorviewer工具
這里寫圖片描述
我們可以根據text,resource-id,class等元素進行定位
3.使用uiautomatorviewer工具獲取應用的元素進行定位
這里我使用python自帶的IDLE進行編寫測試腳本,打開python文件找到IDLE(python GUI)雙擊打開,如圖:
這里寫圖片描述
4.簡單介紹unittest框架的使用方法
# -*- coding:utf-8 -*-
from uiautomator import device as d
import unittest
class Mytest(unittest.TestCase):
#初始化工作
def setUp(self):
print "--------------初始化工作"
#退出清理工作
def tearDown(self):
print "--------------退出清理工作"
#測試點擊貓寧考勤case
def test_login(self):
d(text="貓寧考勤").click()
print "--------------測試1"
#測試2
def test_z(self):
print "--------------測試2" #這里你可以寫你的第二個測試用例,
#測試3
def test_w(self):
print "--------------測試3" #這里你可以寫你的第三個測試用例。。。。。。。。。。。。。
if __name__ == '__main__':
unittest.main()
結果如下:
Testing started at 21:14 …
————–初始化工作
————–測試1
————–退出清理工作
————–初始化工作
————–測試3
————–退出清理工作
————–初始化工作
————–測試2
————–退出清理工作
Process finished with exit code 0
從結果中我們可以看出unittest框架的運行方式為:
setUp 測試1 tearDown
setUp 測試2 tearDown
setUp 測試3 tearDown
5.使用Python編寫貓寧考勤應用注冊模塊的自動化測試
# -*- coding:utf-8 -*-
from uiautomator import device as d
import time
import unittest
class MyTestSuite(unittest.TestCase):
# 初始化工作
def setUp(self):
print "--------------初始化工作"
# 退出清理工作
def tearDown(self):
print "--------------退出清理工作"
#***************************方法**************************************
# 判斷控制項是否存在 & text
def check_controls_exists(self, controls_text):
if d(text=controls_text).exists:
return 1
else:
return 0
# 判斷按鈕是否置灰 & text & clickable
def check_controls_click_text(self, controls_text):
if d(text=controls_text).info.get("clickable") is True:
return 1
else:
return 0
#assertIn(a, b) a in b
def check_ainb(self,resourceid,b):
if d(resourceId=resourceid).info.get("text") in b:
return 1
else:
return 0
#***********************************************************
# 注冊模塊
def test_Aregister(self):
try:
time.sleep(2)
#貓寧考勤開啟全新時代
self.assertEqual(self.check_controls_click_text("注冊"),1,u"貓寧考勤開啟全新時代")
# 貓寧考勤開啟全新時代--》點擊注冊按鈕進入注冊貓寧界面
d(text="注冊").click()
time.sleep(3)
#注冊貓寧界面
self.assertEqual(self.check_text("com.isentech.attendancet:id/regis_phone","請輸入手機號碼"),
1,u"注冊頁面-》請輸入手機號碼")
self.assertEqual(self.check_text("com.isentech.attendancet:id/regis_verifycode","請輸入驗證碼"),
1,u"注冊頁面-》請輸入驗證碼")
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 0,u"注冊頁面-》獲取驗證碼")
self.assertEqual(self.check_controls_click_text("《中科愛訊服務協議》"), 1,u"注冊頁面-》《中科愛訊服務協議》")
self.assertEqual(self.check_controls_click_text("注冊"), 0,u"注冊頁面-》注冊")
time.sleep(2)
#《中科愛訊服務協議》
d(text="《中科愛訊服務協議》").click()
time.sleep(2)
self.assertEqual(self.check_ainb("com.isentech.attendancet:id/title","服務協議"), 1,u"注冊頁面-》服務協議")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/title_back").click()
time.sleep(1)
#手機號不輸入是否能注冊
d(text="注冊").click()
time.sleep(3)
# 手機號只輸入1個數字是否能注冊&只輸入1個數字是否能獲取驗證碼
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text("1")
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 0)
time.sleep(1)
d(text="注冊").click()
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_phone").clear_text()
time.sleep(1)
#只輸入5個數字是否能獲取驗證碼
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text("11111")
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 0)
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_phone").clear_text()
time.sleep(1)
#只輸入手機號是否能注冊
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text(phone_number)
self.assertEqual(self.check_controls_click_text("注冊"), 0)
time.sleep(1)
d(text="注冊").click()
time.sleep(1)
#輸入正確的驗證碼&獲取驗證碼是否高亮
d(resourceId="com.isentech.attendancet:id/regis_verifycode").set_text("5648")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("獲取驗證碼"), 1)
time.sleep(2)
#密碼只輸入1個數字是否能注冊&注冊按鈕是否高亮
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("1")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("1")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("注冊"), 0,u"密碼只輸入1個數字是否能注冊")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_pass").clear_text()
d(resourceId="com.isentech.attendancet:id/regis_passAgain").clear_text()
time.sleep(1)
#輸入不相同的密碼是否能注冊
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("123456")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("12345")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("注冊"), 0,u"輸入不相同的密碼是否能注冊")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_pass").clear_text()
d(resourceId="com.isentech.attendancet:id/regis_passAgain").clear_text()
time.sleep(1)
#輸入正確的密碼是否能注冊&我已同意是否打鉤
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("123456")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("123456")
time.sleep(1)
self.assertEqual(self.check_controls_click_resourceId("com.isentech.attendancet:id/regis_agree"), 1)
self.assertEqual(self.check_controls_click_text("注冊"), 1)
time.sleep(2)
d(text="注冊").click()
time.sleep(8)
except Exception, e:
print u"Error: 注冊模塊有問題\n", e
def test_app():
test_unit = unittest.TestSuite()
test_unit.addTest(MyTestSuite("test_Aregister"))
if __name__ == "__main__":
# 測試app
unittest.main()

『伍』 如何用android studio寫自動化測試

1、build.gradle里,dependencies下增加 androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1』。如果缺少這個配置,則在測試代碼里將無法用到robotium的包。
2、我們項目的代碼結構是老式的,所以需要重新設置test的地址,即在android.sourceSets下新增 androidTest.setRoot('tests』)。可以取tests外的其他名字,然後在跟build.gradle同級的地方建立這個文件夾,沒有更多額外設置的話,測試代碼的放置需要按照新式結構,即tests\java下。如果沒有正確配置,則這個測試代碼將不可見。

除了代碼改動外,如果要在Android Studio裡面跑,則還需要額外配置:
菜單Run -> Edit Configuration,在Android Tests下新增條目,然後正確配置,就可以了:選擇哪個Mole,選擇測試的范圍(Mole或Package等),選擇Target Device。
這個是配置的東西,沒有辦法提交到Git。

下面是個簡單的例子,我們的app在測試的環境下會先彈出一個選環境的AlertDialog,所以需要clickOnText:
/**
* Created by Samuel Cai on 5/20/14.
*/
public class MainActivityTest extends {

private Solo solo;

public MainActivityTest() {
super(LogoActivity.class);
}

@Override
public void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}

public void testNavigateToHomeScreen() throws Exception {
//choose environment
solo.waitForDialogToOpen();
solo.clickOnText("qa");
solo.clickOnButton("OK");

//assert home screen finished loading.
assertTrue(solo.waitForText("Diapering"));
}
}

『陸』 如何使用python做android的自動化測試

一、首先說說手機自動化測試的原理 1、手機自動化測試的原理為PC上一個控制端(測試工具)與手機上的一個agent端,通過串口、USB或者無線方式將PC與手機終端相連,然後應用測試工具向手機發送請求或者命令,手機收到命令或者請求後,交給agent端解析,然後agent將這些解析的命令下發給手機的各個功能模塊所能識別的命令,調用那些功能模塊模擬操作。完成這些操作後,手機會返回一些信息,agent可以抓取這些信息,然後傳回給PC端,這樣就完成了一個完整的手機自動化測試。 2、關鍵點在於agent,有的公司是向自己的手機終端的軟體功能模塊中植入測試程序響應代碼,有的公司可以利用MMI_Command的方式來控制手機終端;原理就是給手機提供一個響應的介面。 3、而對於PC控制端,這個測試腳本用各種編程語言都可以,看如何定義 4、而又的自動化測試設計成錄制的機制,說通俗點,就是記錄手工操作的鍵盤信息或者LCD的操作信息(LCD需要用到智能識別機制) 5、自動化測試框架的搭建方法是通用的,你需要有一套自己的測試框架才能保證自動化測試的順利開展。 二、Android自動化測試方向: 1、CTS,CTS 測試基於Android instrumentation 測試, 其又基於JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。 2、 Monkey工具,Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。 3、ASE,ASE 意思為Android 腳本環境, 即我們可以通過腳本(比如Python)調用Android 的功能,從而定製一些測試。比如打電話,發簡訊,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 並用python 腳本調用這些API, 從而實現豐富的測試功能。用於API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴展性非常好。 4、Robotium,該工具用於黑盒的自動化測試。可以在有源碼或者只有APK 的情況下對目標應用 進行測試。Robotimu 提供了模仿用戶操作行為的API,比如在某個控制項上點擊,輸入Text 等等。(推舉你可以研究一下這個工具,開源的,我有資料) 5、可以自己開發一個手機方面的自動化測試工具,原理上一樣的 如果你想要什麼資料的話或者想一起學習研究的話,可以給我發郵件:[email protected]

熱點內容
我的世界推薦適合萌新的伺服器 發布:2024-11-05 18:30:03 瀏覽:576
c語言考級 發布:2024-11-05 18:16:54 瀏覽:503
易語言不能編譯安卓app嗎 發布:2024-11-05 18:14:11 瀏覽:835
c語言重點知識 發布:2024-11-05 18:04:53 瀏覽:640
演算法分家 發布:2024-11-05 17:55:39 瀏覽:469
手游雲頂怎麼確定伺服器 發布:2024-11-05 17:52:03 瀏覽:777
天籟選哪個配置2021 發布:2024-11-05 17:50:26 瀏覽:812
rust怎麼找伺服器 發布:2024-11-05 17:49:45 瀏覽:487
sql觸發器insteadof 發布:2024-11-05 17:48:04 瀏覽:242
2022款macan配置怎麼選 發布:2024-11-05 17:14:17 瀏覽:114