2014-9-24
本人從參加工作以來,一直在做自動(dòng)化測試方面的工作。最初接觸的是Web自動(dòng)化,后來又做接口自動(dòng)化測試。由于最近幾年手機(jī)應(yīng)用越來越廣泛,手機(jī)應(yīng)用的自動(dòng)化測試也發(fā)展的很快,所以我就利用工作之余去學(xué)習(xí)手機(jī)自動(dòng)化測試。
手機(jī)自動(dòng)化框架也比較多,針對ios,android兩個(gè)不同的平臺,最后我挑選了appium,它是利用webdriver來進(jìn)行驅(qū)動(dòng)測試的,這個(gè)框架我比較熟悉,而且它支持兩個(gè)平臺。于是我就針對這兩個(gè)不同的平臺進(jìn)行了分別的搭建與測試,IOS平臺的環(huán)境搭建沒有問題,具體搭建方法見:
http://blog.sina.com.cn/s/blog_68f262210102v0ta.html,而測試用例,由于現(xiàn)在我沒有辦法將ipa文件轉(zhuǎn)化成app文件,所以測試用例還沒有搞定。問題解決后,會(huì)發(fā)相應(yīng)的文章的。
本篇介紹一下Windows環(huán)境下android自動(dòng)化測試的具體實(shí)例,環(huán)境安裝見:
http://blog.sina.com.cn/s/blog_68f262210102v4aj.html,現(xiàn)在說一下測試用例:
測試對象:網(wǎng)信金融旗下的眾籌網(wǎng)的手機(jī)應(yīng)用
運(yùn)行對象:android模擬器(真機(jī)運(yùn)行見下篇)
測試用例:簡單的登錄
用例語言:webdriver+python
測試步驟:
1,啟動(dòng)appium
在Windows下,找到appium應(yīng)用程序,雙擊打開,然后右上角的appium啟動(dòng)按鈕,看到輸出日志,表明啟動(dòng)成功。
2,啟動(dòng)android模擬器
模擬器如何創(chuàng)建,參見:
http://blog.sina.com.cn/s/blog_68f262210102v4a7.html,本人創(chuàng)建的模擬器為:antester,啟動(dòng)方法:在cmd下輸入:emulator@antester,過一會(huì)兒就會(huì)彈出android模擬器:
3,編寫測試用例
使用你習(xí)慣的編輯軟件來寫你的測試用例,我用語言是python,下面介紹一下具體的測試用例。
#-*- coding: UTF-8 -*-
#導(dǎo)入常用的包
import os
import time
import unittest
from selenium import webdriver
from lib2to3.pgen2.driverimport Driver
from lib2to3.tests.supportimport driver
#設(shè)置路徑信息
PATH=lambda p:os.path.abspath(
os.path.join(os.path.dirname(__file__),p)
)
global driver
class LoginAndroidTests(unittest.TestCase):
def setUp(self):
#初始化測試平臺
desired_caps={}
desired_caps['device'] = 'android'
desired_caps['platformName']='Android' #測試平臺
desired_caps['browserName']=''
desired_caps['version']='4.2.2'#系統(tǒng)版本
desired_caps['deviceName']='antester'#模擬器名稱
desired_caps['app-package']='com.subject.zhongchou'#要測試的app
desired_caps['app-activity']='.ZhongChou'#當(dāng)前活動(dòng)應(yīng)用
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)
def tearDown(self):
self.driver.quit()
def test_login(self):
time.sleep(30)
#點(diǎn)擊“注冊登錄”按鈕
button=self.driver.find_element_by_id("com.subject.zhongchou:id/register_button")
button.click()
time.sleep(10)
#登錄
name = self.driver.find_element_by_id('com.subject.zhongchou:id/loginnumber_phone')
name.click()
name.send_keys('183XXXXX905') #輸入用戶名
psd = self.driver.find_element_by_id('com.subject.zhongchou:id/loginnumber_password')
psd.click()
psd.send_keys('XXXXXXX') #輸入密碼
blogin=self.driver.find_element_by_id('com.subject.zhongchou:id/go_numberlogin') #單擊登錄按鈕
blogin.click()
time.sleep(10)
#此處要檢測是否登錄成功,我懶省事,略了!
if __name__ == '__main__':
suite =unittest.TestLoader().loadTestsFromTestCase(LoginAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
上面是一個(gè)完整的測試用例,關(guān)系到元素的定位,內(nèi)容的輸入等操作。其實(shí)還可以優(yōu)化一下,把測試數(shù)據(jù)獨(dú)立出來放到一個(gè)xml文件中,而且通用的操作,可以放到一個(gè)類中封閉成通用方法,此代碼只為了說明測試用例結(jié)構(gòu)用的。
元素的定位
元素的定位是自動(dòng)化測試的頭等大事,在頁面自動(dòng)化測試的時(shí)候,SeleniumIDE提供了很好的定位,錄制等方法。可是在手機(jī)自動(dòng)化測試的時(shí)候,沒有很好的工具 ,一般用的是appium inspector,uiautomatorviewer和hierarchyviewer等工具,具體使用方法自己去網(wǎng)上查一下??墒菦]有很好的錄制方法,雖然appium inspector在mac上可以對IOS的App進(jìn)行錄制,但是不太好用。
Appium有一個(gè)很好的交流網(wǎng)站:http://www.testerhome.com/topics,大家可以時(shí)常去瀏覽一下,相信能學(xué)到很多知識的??焖?,準(zhǔn)確的定位是要靠經(jīng)驗(yàn)的,這個(gè)帖子http://testerhome.com/topics/167,講了一些兒定位方法,希望對大家有所啟發(fā)。
要做好自動(dòng)化測試,要大膽地嘗試,學(xué)會(huì)在網(wǎng)上搜索各種相關(guān)的資料,并且善于總結(jié)。通常比較先進(jìn)的東西,網(wǎng)上的資料都不多,那些兒一搜一大堆資料的東西,建議不要學(xué)習(xí),會(huì)的人太多,你都沒有一點(diǎn)兒優(yōu)勢。這是我最近在android手機(jī)自動(dòng)化測試過程中摸索的一點(diǎn)兒總結(jié),希望能幫助大家,也是對學(xué)習(xí)的一個(gè)總結(jié)。