欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種電視應(yīng)用的自動(dòng)化測(cè)試方法及系統(tǒng)與流程

文檔序號(hào):11389082閱讀:420來(lái)源:國(guó)知局
一種電視應(yīng)用的自動(dòng)化測(cè)試方法及系統(tǒng)與流程

本發(fā)明涉及計(jì)算機(jī)測(cè)試技術(shù)領(lǐng)域,特別是一種電視應(yīng)用的自動(dòng)化測(cè)試方法及系統(tǒng)。



背景技術(shù):

隨著科技發(fā)展,智能電視的概念從誕生之日起,便以星火燎原的態(tài)勢(shì)迅速發(fā)展。當(dāng)前,智能電視產(chǎn)業(yè)發(fā)展十分迅速,規(guī)模持續(xù)擴(kuò)大,新興技術(shù)不斷涌現(xiàn),應(yīng)用服務(wù)日益豐富,生態(tài)體系加速構(gòu)建,融合態(tài)勢(shì)愈發(fā)顯著。隨著智能電視的應(yīng)用服務(wù)不斷的更新發(fā)布,在帶給用戶(hù)最佳體驗(yàn)的前提下,應(yīng)用服務(wù)在上線發(fā)布前,都需要進(jìn)行大量的測(cè)試。但當(dāng)前的電視應(yīng)用的測(cè)試,大部分公司依舊采用手工測(cè)試,很少涉及到自動(dòng)化測(cè)試。現(xiàn)有的電視應(yīng)用測(cè)試方法具有以下不足:(1)手工測(cè)試的驗(yàn)證時(shí)間過(guò)長(zhǎng)不能滿(mǎn)足快速上線需求,同時(shí)大量的重復(fù)工作導(dǎo)致測(cè)試人員的加班時(shí)間長(zhǎng)。(2)單次測(cè)試僅針對(duì)優(yōu)化功能點(diǎn),導(dǎo)致單次測(cè)試覆蓋率低。(3)手工測(cè)試同時(shí)存在誤差率較高的情況。(4)模擬電視機(jī)的操作行為是當(dāng)前電視應(yīng)用自動(dòng)化測(cè)試的一大難點(diǎn)。(5)電視應(yīng)用的自動(dòng)化測(cè)試無(wú)法模擬異常場(chǎng)景。(6)電視應(yīng)用在操作過(guò)程中的數(shù)據(jù)反饋的驗(yàn)證問(wèn)題一直未得到妥善解決。因此,為了解決上述問(wèn)題,需要一種適合電視應(yīng)用的自動(dòng)化測(cè)試方法及系統(tǒng)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明旨在提供一種電視應(yīng)用的自動(dòng)化測(cè)試方法及系統(tǒng),減少測(cè)試時(shí)間,提高測(cè)試效率;大大節(jié)約人力,無(wú)需重復(fù)工作;保障測(cè)試正確率,降低誤差率;提高測(cè)試覆蓋率。

為解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案是:一種電視應(yīng)用的自動(dòng)化測(cè)試方法,包括以下步驟:

1)在同一個(gè)局域網(wǎng)內(nèi),通過(guò)自動(dòng)化測(cè)試終端上傳電視應(yīng)用apk安裝包至處于同一個(gè)局域網(wǎng)內(nèi)的多個(gè)獨(dú)立的電視機(jī),即電視機(jī)集群,并下發(fā)安裝指令給所述電視機(jī)集群,自動(dòng)化測(cè)試終端對(duì)待測(cè)試的電視機(jī)進(jìn)行apk包安裝;

2)根據(jù)不同應(yīng)用服務(wù)或業(yè)務(wù)場(chǎng)景搭建正?;虍惓5臏y(cè)試環(huán)境,同時(shí)將所述測(cè)試環(huán)境配置下發(fā)至完成apk包安裝的電視機(jī)集群,從而使得待測(cè)試的電視機(jī)一一對(duì)應(yīng)彼此獨(dú)立的測(cè)試環(huán)境;同時(shí)編寫(xiě)python自動(dòng)化測(cè)試腳本,并動(dòng)態(tài)等待頁(yè)面響應(yīng),自動(dòng)操作電視機(jī),然后通過(guò)自動(dòng)化測(cè)試終端,下發(fā)測(cè)試指令給電視機(jī)集群,針對(duì)待測(cè)電視機(jī)及其應(yīng)用服務(wù)進(jìn)行測(cè)試;

3)根據(jù)步驟2)中搭建的測(cè)試環(huán)境,設(shè)置電視機(jī)集群的測(cè)試場(chǎng)景,在該測(cè)試場(chǎng)景上運(yùn)行所述python自動(dòng)化測(cè)試腳本,并根據(jù)所述python自動(dòng)化測(cè)試腳本模擬電視機(jī)按鍵操作,實(shí)現(xiàn)電視端的自動(dòng)化操作,在電視端的自動(dòng)化操作過(guò)程中,采用python日志服務(wù)程序保存電視端應(yīng)用服務(wù)的測(cè)試數(shù)據(jù),然后編寫(xiě)python測(cè)試驗(yàn)證腳本,解析當(dāng)前的日志或數(shù)據(jù),并與預(yù)期結(jié)果分析比較,最終返回測(cè)試結(jié)果。

步驟2)中,針對(duì)不同應(yīng)用服務(wù)或業(yè)務(wù)搭建測(cè)試環(huán)境時(shí),采用python服務(wù)程序構(gòu)建的測(cè)試環(huán)境,不但解決了電視應(yīng)用無(wú)法模擬異常測(cè)試環(huán)境的問(wèn)題,而且明確開(kāi)發(fā)與測(cè)試的職責(zé)界限,此后,測(cè)試環(huán)境不需要開(kāi)發(fā)人員干預(yù)或提供,保證測(cè)試流程的獨(dú)立性,測(cè)試結(jié)果的可靠性。其后續(xù)將所述測(cè)試環(huán)境配置下發(fā)至電視機(jī)集群的具體實(shí)現(xiàn)過(guò)程包括:

1)針對(duì)不同的應(yīng)用服務(wù)或業(yè)務(wù)場(chǎng)景,截獲其線上環(huán)境的請(qǐng)求,根據(jù)測(cè)試需求返回不同的請(qǐng)求結(jié)果,從而模擬各種測(cè)試場(chǎng)景;針對(duì)搭建測(cè)試環(huán)境服務(wù),采用django框架,編寫(xiě)python服務(wù)程序(python服務(wù)程序即用python語(yǔ)言實(shí)現(xiàn)截獲線上環(huán)境的請(qǐng)求,并返回不同的請(qǐng)求結(jié)果的整個(gè)流程);啟動(dòng)python服務(wù)程序,外部通過(guò)端口訪問(wèn)python服務(wù)程序,對(duì)外提供服務(wù);

2)搭建nginx服務(wù)器,配置nginx文件,提供對(duì)外服務(wù)時(shí)將端口訪問(wèn)轉(zhuǎn)為設(shè)置域名host;

3)自動(dòng)化測(cè)試終端下發(fā)adb命令至待測(cè)電視機(jī),該命令為配置相應(yīng)的host,或取消相應(yīng)的host,即為待測(cè)電視機(jī)設(shè)置相應(yīng)的測(cè)試環(huán)境,或取消測(cè)試環(huán)境。

步驟2)中,采用appium自動(dòng)化測(cè)試框架,基于所述appium自動(dòng)化測(cè)試框架編寫(xiě)python自動(dòng)化測(cè)試腳本。基于該測(cè)試框架編寫(xiě)的python自動(dòng)化測(cè)試腳本通過(guò)實(shí)現(xiàn)模擬電視機(jī)的遙控器按鍵操作,完美解決了自動(dòng)化操作電視機(jī)的問(wèn)題,從而能夠?qū)崿F(xiàn)電視機(jī)應(yīng)用的自動(dòng)化測(cè)試。

本發(fā)明中,python自動(dòng)化測(cè)試腳本的具體編寫(xiě)過(guò)程包括:設(shè)置appium的基本參數(shù);編寫(xiě)測(cè)試函數(shù),所述測(cè)試函數(shù)內(nèi)部包括模擬鍵盤(pán)發(fā)送內(nèi)容和驗(yàn)證電視響應(yīng)反饋的頁(yè)面元素是否正確,測(cè)試函數(shù)內(nèi)部采用python的異常處理機(jī)制來(lái)處理程序中的異常情況,當(dāng)存在異常的情況下,進(jìn)入程序報(bào)錯(cuò)退出流程,否則,進(jìn)入正常的后續(xù)處理流程(例如,比如搜索“快樂(lè)大本營(yíng)”,然后播放快樂(lè)大本營(yíng)的某一個(gè)節(jié)目,正常的后續(xù)處理流程,就是指搜索成功后的播放流程)。該python自動(dòng)化測(cè)試腳本采用異常機(jī)制巧妙解決了測(cè)試中面臨的人工不能已知并干預(yù)的問(wèn)題。測(cè)試腳本的穩(wěn)定性明顯降低測(cè)試過(guò)程中的誤差率;腳本反復(fù)多次運(yùn)行,大大提高了測(cè)試效率;針對(duì)單次測(cè)試,測(cè)試腳本的回歸功能覆蓋(非單個(gè)功能點(diǎn)),大大提高了覆蓋率。

python日志服務(wù)程序的具體編寫(xiě)過(guò)程為:截獲日志請(qǐng)求接口;將全部的日志請(qǐng)求接口返回的數(shù)據(jù)采用文件的形式存入日志服務(wù)器。

python測(cè)試驗(yàn)證腳本的的具體編寫(xiě)過(guò)程為:解析日志服務(wù)器中眾多不同的日志數(shù)據(jù);一一比較分析并驗(yàn)證以上數(shù)據(jù)的正確性。

本發(fā)明采用python日志服務(wù)程序摒棄了傳統(tǒng)采用軟件抓包方式,不但徹底解決了軟件抓包中的丟包問(wèn)題,而且其在電視應(yīng)用的解決數(shù)據(jù)反饋驗(yàn)證的問(wèn)題的方案,為后續(xù)測(cè)試技術(shù)在其他服務(wù)端的擴(kuò)展打開(kāi)了新的思路。

相應(yīng)地,本發(fā)明還提供了一種電視應(yīng)用的自動(dòng)化測(cè)試系統(tǒng),包括:

apk安裝模塊:用于在同一個(gè)局域網(wǎng)內(nèi),通過(guò)自動(dòng)化測(cè)試終端上傳電視應(yīng)用apk安裝包至處于同一個(gè)局域網(wǎng)內(nèi)的多個(gè)獨(dú)立的電視機(jī),即電視機(jī)集群,并下發(fā)安裝指令給所述電視機(jī)集群,自動(dòng)化測(cè)試終端對(duì)待測(cè)試的電視機(jī)進(jìn)行apk包安裝;

測(cè)試環(huán)境搭建模塊:用于根據(jù)不同應(yīng)用服務(wù)或業(yè)務(wù)場(chǎng)景搭建正?;虍惓5臏y(cè)試環(huán)境,同時(shí)將所述測(cè)試環(huán)境配置下發(fā)至完成apk包安裝的電視機(jī)集群,從而使得待測(cè)試的電視機(jī)一一對(duì)應(yīng)彼此獨(dú)立的測(cè)試環(huán)境;

自動(dòng)化測(cè)試模塊:用于編寫(xiě)python自動(dòng)化測(cè)試腳本,并動(dòng)態(tài)等待頁(yè)面響應(yīng),自動(dòng)操作電視機(jī),然后通過(guò)自動(dòng)化測(cè)試終端,下發(fā)測(cè)試指令給電視機(jī)集群,針對(duì)待測(cè)電視機(jī)及其應(yīng)用服務(wù)進(jìn)行測(cè)試;

測(cè)試結(jié)果分析模塊:用于根據(jù)搭建的測(cè)試環(huán)境,設(shè)置電視機(jī)集群的測(cè)試場(chǎng)景,在該測(cè)試場(chǎng)景上運(yùn)行所述python自動(dòng)化測(cè)試腳本,并根據(jù)所述python自動(dòng)化測(cè)試腳本模擬電視機(jī)按鍵操作,實(shí)現(xiàn)電視端的自動(dòng)化操作,在電視端的自動(dòng)化操作過(guò)程中,采用python日志服務(wù)程序保存電視端應(yīng)用服務(wù)的測(cè)試數(shù)據(jù),然后編寫(xiě)python測(cè)試驗(yàn)證腳本,解析當(dāng)前的日志或數(shù)據(jù),并與預(yù)期結(jié)果分析比較,最終返回測(cè)試結(jié)果。

與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明解決了電視機(jī)的自動(dòng)化測(cè)試關(guān)鍵問(wèn)題,針對(duì)電視機(jī)遙控器的操作行為采用了按鍵模擬操作的方式實(shí)現(xiàn)電視機(jī)的自動(dòng)化;通過(guò)對(duì)電視應(yīng)用的自動(dòng)化測(cè)試,大大提高測(cè)試效率,降低人工成本,保障測(cè)試正確率,降低誤差率,采用異常測(cè)試環(huán)境模擬,大大提高了測(cè)試覆蓋率;實(shí)現(xiàn)了電視機(jī)集群的自動(dòng)化測(cè)試。

附圖說(shuō)明

圖1為本發(fā)明電視應(yīng)用的測(cè)試框架;

圖2為本發(fā)明電視應(yīng)用的測(cè)試流程。

具體實(shí)施方式

本發(fā)明具體實(shí)現(xiàn)過(guò)程如下:

步驟1:在同一個(gè)局域網(wǎng)內(nèi),通過(guò)自動(dòng)化測(cè)試終端上傳電視應(yīng)用apk安裝包至處于同一個(gè)局域網(wǎng)內(nèi)的眾多獨(dú)立的搭載安卓操作系統(tǒng)(android)的電視機(jī)(簡(jiǎn)稱(chēng)電視機(jī)集群),并下發(fā)安裝指令給電視機(jī)集群,自動(dòng)化測(cè)試終端對(duì)待測(cè)試的電視機(jī)進(jìn)行apk包安裝。

步驟2:步驟1中已安裝apk包至待測(cè)電視機(jī),本發(fā)明主要測(cè)試的是電視機(jī)的應(yīng)用軟件,任何業(yè)務(wù)測(cè)試前,需要搭建獨(dú)立可控的測(cè)試環(huán)境,針對(duì)電視應(yīng)用的測(cè)試來(lái)說(shuō),異常場(chǎng)景的測(cè)試環(huán)境搭建尤其重要。具體針對(duì)搭建測(cè)試環(huán)境服務(wù),則根據(jù)不同應(yīng)用服務(wù)或業(yè)務(wù)場(chǎng)景搭建正?;虍惓5臏y(cè)試環(huán)境,同時(shí)將獨(dú)立可控的測(cè)試環(huán)境配置下發(fā)至電視機(jī)集群,從而使得待測(cè)試的電視機(jī)一一對(duì)應(yīng)彼此獨(dú)立的測(cè)試環(huán)境。

步驟3:對(duì)于自動(dòng)化測(cè)試來(lái)說(shuō),測(cè)試環(huán)境搭建成功后,需要進(jìn)行測(cè)試腳本編寫(xiě)。如何通過(guò)腳本實(shí)現(xiàn)模擬電視機(jī)的操作行為是當(dāng)前電視應(yīng)用自動(dòng)化測(cè)試的一大難點(diǎn)。當(dāng)前眾多的實(shí)現(xiàn)自動(dòng)模擬人工操作的技術(shù)一般基于識(shí)別當(dāng)前機(jī)器設(shè)備的頁(yè)面元素屬性,從而針對(duì)已識(shí)別的頁(yè)面元素進(jìn)行模擬操作。電視機(jī)設(shè)備由于其頁(yè)面元素的特殊性只能識(shí)別部分內(nèi)容,并不能識(shí)別所有的控件。同時(shí)電視機(jī)是通過(guò)遙控器進(jìn)行操作,因而本發(fā)明需要實(shí)現(xiàn)模擬遙控器的行為的功能,從而實(shí)現(xiàn)自動(dòng)操作電視機(jī)。本發(fā)明中python腳本里面針對(duì)模擬操作電視機(jī)采用兩種方式,一種為采用模擬遙控器的按鍵操作方式,一種為識(shí)別電視設(shè)備界面的控件方式。該步驟中主要是編寫(xiě)python自動(dòng)化測(cè)試腳本,測(cè)試腳本由相應(yīng)的模擬按鍵操作以及控件識(shí)別兩種方式實(shí)現(xiàn)模擬行為,并動(dòng)態(tài)等待頁(yè)面響應(yīng),從而實(shí)現(xiàn)自動(dòng)操作電視機(jī)。然后通過(guò)自動(dòng)化測(cè)試終端,下發(fā)測(cè)試指令給電視機(jī)集群,針對(duì)待測(cè)電視設(shè)備及其應(yīng)用服務(wù)進(jìn)行測(cè)試。

步驟4:首先根據(jù)步驟2中搭建的測(cè)試環(huán)境,設(shè)置電視機(jī)集群的測(cè)試環(huán)境如步驟2所示,如某臺(tái)電視機(jī)應(yīng)用的測(cè)試環(huán)境設(shè)置為某個(gè)場(chǎng)景,在此場(chǎng)景上運(yùn)行步驟3的測(cè)試腳本,并根據(jù)步驟3中的測(cè)試腳本編寫(xiě)模擬電視機(jī)按鍵操作,實(shí)現(xiàn)電視端的自動(dòng)化操作。其在步驟2的獨(dú)立可控的測(cè)試環(huán)境中通過(guò)步驟3中的測(cè)試腳本模擬電視鍵盤(pán)的操作,步驟4相當(dāng)于測(cè)試環(huán)境是電視應(yīng)用的預(yù)計(jì)輸入內(nèi)容,自動(dòng)化測(cè)試操作后的數(shù)據(jù)反饋與測(cè)試環(huán)境中的數(shù)據(jù)進(jìn)行一一比較驗(yàn)證。接下來(lái)的最重要的一步為測(cè)試結(jié)果驗(yàn)證,即電視應(yīng)用在操作過(guò)程中的數(shù)據(jù)反饋的驗(yàn)證。該步驟主要是搭建python日志服務(wù)程序,日志服務(wù)器獲取電視應(yīng)用服務(wù)測(cè)試過(guò)程中的日志或接口數(shù)據(jù)并保存。繼而編寫(xiě)python測(cè)試驗(yàn)證腳本,解析當(dāng)前的日志或數(shù)據(jù),并與預(yù)期結(jié)果分析比較,返回當(dāng)前測(cè)試結(jié)果,最終,測(cè)試結(jié)束返回整體測(cè)試報(bào)告。

根據(jù)電視應(yīng)用的自動(dòng)化測(cè)試方法,其步驟1中,電視機(jī)集群的定義為:

電視機(jī)集群即為處于同一個(gè)局域網(wǎng)內(nèi)部,單獨(dú)的多臺(tái)電視機(jī)組成的集群。每臺(tái)電視機(jī)需搭載安卓操作系統(tǒng)(android)。集群的組成規(guī)則為:將n臺(tái)電視機(jī)編號(hào)為1號(hào),2號(hào)……n號(hào),該電視機(jī)集群即由n臺(tái)電視機(jī)組成,每臺(tái)電視機(jī)擁有單獨(dú)的編號(hào),編號(hào)與電視機(jī)ip地址綁定,當(dāng)通知1號(hào)電視機(jī),實(shí)際上下發(fā)的adb命令是通過(guò)adb連接1號(hào)電視機(jī)的ip地址進(jìn)行操作處理。以此類(lèi)推。

自動(dòng)化測(cè)試終端對(duì)待測(cè)試的電視機(jī)進(jìn)行apk包安裝。本發(fā)明測(cè)試的是電視應(yīng)用,電視應(yīng)用軟件以apk包的形式需要安裝至待測(cè)電視機(jī)。本發(fā)明中所指的apk包,指智能電視系統(tǒng)(該系統(tǒng)也是以apk包的形式安裝至待測(cè)電視機(jī)),也可指單獨(dú)的電視應(yīng)用軟件。

其步驟2中,搭建測(cè)試環(huán)境服務(wù)具體包括如下步驟:

步驟21:當(dāng)前自動(dòng)化測(cè)試業(yè)務(wù)針對(duì)搭建測(cè)試環(huán)境來(lái)說(shuō),一般由開(kāi)發(fā)提供(基本都是同樣的代碼部署一套測(cè)試環(huán)境),并且無(wú)異常場(chǎng)景的搭建。但是本發(fā)明中的測(cè)試環(huán)境包括正常場(chǎng)景和異常場(chǎng)景,并且都是由測(cè)試人員通過(guò)測(cè)試用例設(shè)計(jì)后構(gòu)造的測(cè)試場(chǎng)景進(jìn)行搭建。本發(fā)明采用一種新的思維來(lái)搭建測(cè)試環(huán)境,即截獲線上環(huán)境的請(qǐng)求根據(jù)測(cè)試需求返回不同的請(qǐng)求結(jié)果,從而模擬各種測(cè)試場(chǎng)景。

針對(duì)搭建測(cè)試環(huán)境(異常場(chǎng)景和正常場(chǎng)景)服務(wù),本發(fā)明采用django框架,編寫(xiě)python服務(wù)程序,即用python語(yǔ)言實(shí)現(xiàn)截獲線上環(huán)境的請(qǐng)求,并返回不同的請(qǐng)求結(jié)果的整個(gè)流程(其基本原理為:截獲并解析線上請(qǐng)求接口的參數(shù),模擬同一個(gè)接口不同的請(qǐng)求參數(shù)返回不同請(qǐng)求結(jié)果)。然后啟動(dòng)該服務(wù)程序,使外部通過(guò)端口訪問(wèn),從而實(shí)現(xiàn)對(duì)外提供服務(wù)。

最終,python服務(wù)程序?qū)崿F(xiàn)的測(cè)試環(huán)境如下描述所示,如同一個(gè)接口,請(qǐng)求參數(shù)為“直播”的時(shí)候,返回404。請(qǐng)求參數(shù)為“點(diǎn)播”,返回至線上請(qǐng)求,請(qǐng)求正常,依次類(lèi)推。(測(cè)試環(huán)境如某部直播影片返回404錯(cuò)誤,該直播影片無(wú)法正常播放,但是其他點(diǎn)播影片,仍然正常播放)。

步驟22:python程序服務(wù)只能通過(guò)端口訪問(wèn),而本發(fā)明中則需要進(jìn)一步搭建nginx服務(wù)器,通過(guò)nginx文件的配置,提供對(duì)外服務(wù)時(shí)將端口訪問(wèn)轉(zhuǎn)為設(shè)置域名host,則外部可以直接配置域名host訪問(wèn),不需要通過(guò)端口訪問(wèn)(如訪問(wèn)百度通過(guò)域名www.baidu.com,而不是xxx.xxx.xxx.xxx:8080這種訪問(wèn)形式)。

步驟23:通過(guò)以上步驟,本發(fā)明實(shí)現(xiàn)一套可供外部訪問(wèn)的測(cè)試環(huán)境,外部?jī)H需進(jìn)行host設(shè)置即可訪問(wèn),同理類(lèi)似,本發(fā)明可以實(shí)現(xiàn)多種獨(dú)立的測(cè)試環(huán)境。然后自動(dòng)化測(cè)試服務(wù)器通過(guò)下發(fā)adb命令至電視機(jī)集群,針對(duì)待測(cè)電視機(jī)配置相應(yīng)的host文件,即為待測(cè)電視機(jī)設(shè)置相應(yīng)的測(cè)試環(huán)境。測(cè)試環(huán)境類(lèi)如:當(dāng)電視應(yīng)用服務(wù)訪問(wèn)某個(gè)域名,實(shí)際上訪問(wèn)的是測(cè)試環(huán)境的域名,但不影響其他域名,針對(duì)測(cè)試環(huán)境的同一個(gè)域名來(lái)說(shuō),僅影響被截獲的接口,其他接口仍然訪問(wèn)至正常場(chǎng)景,進(jìn)一步地,測(cè)試環(huán)境的同一個(gè)接口也僅影響被截獲的參數(shù)的那個(gè)請(qǐng)求,不會(huì)影響其他請(qǐng)求。本步驟中,自動(dòng)化測(cè)試服務(wù)器終端下發(fā)的adb命令至待測(cè)電視機(jī),該命令為配置相應(yīng)的host,或取消相應(yīng)的host。即為待測(cè)電視機(jī)設(shè)置相應(yīng)的測(cè)試環(huán)境,或取消測(cè)試環(huán)境。

根據(jù)電視應(yīng)用的自動(dòng)化測(cè)試方法,其步驟3中,具體包括如下步驟:

步驟31:本發(fā)明需要編寫(xiě)python自動(dòng)化測(cè)試腳本,通過(guò)按鍵模擬操作與控件識(shí)別兩種方式來(lái)實(shí)現(xiàn)模擬遙控器的行為的功能,從而實(shí)現(xiàn)自動(dòng)操作電視機(jī)。本發(fā)明采用了appium自動(dòng)化測(cè)試框架,基于該框架編寫(xiě)python自動(dòng)化測(cè)試腳本實(shí)現(xiàn)電視應(yīng)用的自動(dòng)化測(cè)試。

本發(fā)明采用兩種方式的原因在于:電視機(jī)搭載安卓操作系統(tǒng)(android),因而可以通過(guò)編寫(xiě)python腳本識(shí)別android系統(tǒng)的電視設(shè)備的界面的控件,從而操作控件,(類(lèi)似于移動(dòng)端的自動(dòng)化測(cè)試),進(jìn)而操作電視機(jī)。但是搭載安卓操作系統(tǒng)的電視機(jī),并不是能夠識(shí)別全部的控件,只能識(shí)別部分的控件,所以python腳本可以針對(duì)部分能夠識(shí)別的控件進(jìn)行操作,不能識(shí)別的控件依舊采用按鍵模擬操作的方式實(shí)現(xiàn)自動(dòng)操作電視機(jī)。

按鍵模擬操作方法為:appium提供一套按鍵操作的api,該api實(shí)現(xiàn)向上、向下、翻頁(yè)、喚起菜單鍵等操作。本發(fā)明編寫(xiě)的python腳本就是通過(guò)調(diào)用appium模擬按鍵操作的api,實(shí)現(xiàn)類(lèi)似模擬電視機(jī)遙控器的操作行為,從而實(shí)現(xiàn)自動(dòng)操作電視機(jī)。如python腳本模擬遙控器發(fā)送向上命令至待測(cè)電視機(jī),電視機(jī)識(shí)別并響應(yīng)向上按鈕,這個(gè)過(guò)程即實(shí)現(xiàn)自動(dòng)操作電視機(jī)。

控件識(shí)別方法為:appium提供一套控件識(shí)別的api,該api實(shí)現(xiàn)頁(yè)面控件的識(shí)別與頁(yè)面控件的操作(點(diǎn)擊、輸入)等操作。在此過(guò)程中,python腳本依舊通過(guò)調(diào)用appium的控件識(shí)別api,實(shí)現(xiàn)識(shí)別電視機(jī)頁(yè)面的控件并操作其控件,電視機(jī)響應(yīng)其操作,從而實(shí)現(xiàn)自動(dòng)操作電視機(jī)。如python腳本識(shí)別電視機(jī)某個(gè)按鈕控件并觸發(fā)點(diǎn)擊這個(gè)控件,電視機(jī)識(shí)別并響應(yīng)對(duì)應(yīng)的按鈕控件,這個(gè)過(guò)程即實(shí)現(xiàn)自動(dòng)操作電視機(jī)。

步驟32:進(jìn)一步地,python自動(dòng)化測(cè)試腳本的編寫(xiě)流程為,首先初始化業(yè)務(wù)參數(shù),設(shè)置appium的基本參數(shù),如其對(duì)應(yīng)的測(cè)試ip地址為電視機(jī)的ip地址,測(cè)試系統(tǒng)為android系統(tǒng)等。其次,編寫(xiě)測(cè)試函數(shù),測(cè)試函數(shù)內(nèi)部主要包括模擬鍵盤(pán)發(fā)送內(nèi)容(其為按鍵模擬操作與控件識(shí)別兩種方式)和驗(yàn)證其電視響應(yīng)反饋的頁(yè)面元素是否正確。

為了在自動(dòng)化測(cè)試過(guò)程中,更好的捕獲其異常錯(cuò)誤(如模擬鍵盤(pán)發(fā)送向上鍵,但其響應(yīng)成向下鍵,類(lèi)似異常錯(cuò)誤等),測(cè)試函數(shù)里面采用python的異常處理機(jī)制,如try…except…else等,當(dāng)存在異常的情況下,進(jìn)入異常處理流程,否則,進(jìn)入正常處理流程。如模擬鍵盤(pán)發(fā)送向上鍵,當(dāng)其響應(yīng)為向上鍵,則進(jìn)入正常處理流程(繼續(xù)后續(xù)操作),當(dāng)其響應(yīng)不為向上鍵(如其他任何異常錯(cuò)誤),則進(jìn)入異常處理流程(中斷退出報(bào)錯(cuò))。

測(cè)試函數(shù)實(shí)現(xiàn)某個(gè)業(yè)務(wù)的測(cè)試流程:其流程主要針對(duì)業(yè)務(wù)流程進(jìn)行模擬操作,如針對(duì)電視應(yīng)用的一次搜索行為,即測(cè)試函數(shù)會(huì)點(diǎn)擊搜索按鈕(模擬鍵盤(pán)發(fā)送),驗(yàn)證是否進(jìn)入搜索頁(yè)面(驗(yàn)證其頁(yè)面反饋的元素,如正常則繼續(xù),異常則中斷退出報(bào)錯(cuò)),針對(duì)搜索頁(yè)面上面的輸入框,輸入某個(gè)參數(shù)進(jìn)行搜索行為(模擬鍵盤(pán)發(fā)送),搜索成功后顯示搜索結(jié)果(驗(yàn)證其頁(yè)面反饋的元素,如正常則繼續(xù),異常則中斷退出報(bào)錯(cuò)),點(diǎn)擊當(dāng)前搜索結(jié)果(模擬鍵盤(pán)發(fā)送),驗(yàn)證當(dāng)前的搜索結(jié)果是否搜索正確(驗(yàn)證其頁(yè)面反饋的元素,如正常則繼續(xù),異常則中斷退出報(bào)錯(cuò))。最后,結(jié)束當(dāng)前業(yè)務(wù),退出當(dāng)前場(chǎng)景。如上所述,單個(gè)測(cè)試腳本完成。

步驟33:以上步驟中的python腳本發(fā)送命令給電視機(jī),需要等待電視機(jī)響應(yīng),因此,python腳本在測(cè)試過(guò)程中,針對(duì)電視機(jī)頁(yè)面的等待響應(yīng)時(shí)間,采用動(dòng)態(tài)等待機(jī)制,而非固定等待多少時(shí)間。這個(gè)機(jī)制,不但大大減少了測(cè)試時(shí)間,并已用來(lái)實(shí)現(xiàn)獲取到單個(gè)頁(yè)面的響應(yīng)時(shí)間。

步驟34:python腳本通過(guò)按鍵模擬操作與控件識(shí)別兩種方式,并采用動(dòng)態(tài)等待機(jī)制實(shí)現(xiàn)及時(shí)處理響應(yīng)后的頁(yè)面。在以上步驟中,python自動(dòng)化測(cè)試腳本已完全能夠?qū)崿F(xiàn)針對(duì)電視機(jī)的模擬操作。python自動(dòng)化測(cè)試腳本完成后,后續(xù)將通過(guò)自動(dòng)化測(cè)試服務(wù)器終端下發(fā)測(cè)試啟動(dòng)命令至待測(cè)電視機(jī),電視機(jī)識(shí)別并響應(yīng)python測(cè)試腳本的測(cè)試命令,執(zhí)行測(cè)試流程。

進(jìn)一步的,所述步驟4具體包括:

步驟41:首先根據(jù)步驟2中搭建的測(cè)試環(huán)境,設(shè)置電視機(jī)集群的測(cè)試環(huán)境如步驟2所示,如某臺(tái)電視機(jī)應(yīng)用的測(cè)試環(huán)境設(shè)置為某個(gè)場(chǎng)景,在此場(chǎng)景上運(yùn)行步驟3的測(cè)試腳本,并根據(jù)步驟3中的測(cè)試腳本編寫(xiě)模擬電視機(jī)按鍵操作,實(shí)現(xiàn)電視端的自動(dòng)化操作。其在步驟2的獨(dú)立可控的測(cè)試環(huán)境中通過(guò)步驟3中的測(cè)試腳本模擬電視鍵盤(pán)的操作。

步驟42:針對(duì)電視應(yīng)用在操作過(guò)程中的數(shù)據(jù)反饋的驗(yàn)證,一般采用的技術(shù)使用抓包軟件,然后對(duì)抓包后的結(jié)果進(jìn)行分析。但是抓包軟件存在丟包的情況,并且在電視機(jī)內(nèi)部安裝抓包軟件會(huì)影響其內(nèi)部應(yīng)用軟件的測(cè)試。本發(fā)明采用的方法為搭建python日志服務(wù)程序,其程序搭建的原理為:截獲日志請(qǐng)求接口,將全部的日志請(qǐng)求接口返回的數(shù)據(jù)存入日志服務(wù)器。其后續(xù)的對(duì)外服務(wù)流程與上述步驟2中的步驟22的提供對(duì)外服務(wù)流程一致。通過(guò)服務(wù)域名配置,本發(fā)明在電視應(yīng)用服務(wù)的測(cè)試過(guò)程中,其產(chǎn)生的全部日志請(qǐng)求會(huì)自動(dòng)保存至日志服務(wù)器。

步驟43:電視應(yīng)用的自動(dòng)化測(cè)試的最后一步為分析并驗(yàn)證測(cè)試結(jié)果。針對(duì)步驟41保留的日志,本發(fā)明編寫(xiě)python測(cè)試驗(yàn)證腳本,解析日志服務(wù)器的當(dāng)前操作流程日志,并與預(yù)期結(jié)果分析比較,返回測(cè)試結(jié)果。如解析日志服務(wù)器的某條日志,其結(jié)果為15個(gè)參數(shù),比較預(yù)期結(jié)果是否為15個(gè)參數(shù),進(jìn)一步比較日志中的每個(gè)參數(shù)與預(yù)期結(jié)果是否一致,如不一致,則返回失敗。一致,則通過(guò)。最終,測(cè)試結(jié)束,返回當(dāng)前流程或整體結(jié)果的測(cè)試報(bào)告。

下面結(jié)合附圖和具體實(shí)施方式做進(jìn)一步說(shuō)明。參照?qǐng)D1,在同一個(gè)局域網(wǎng)內(nèi),需要電視機(jī)集群、自動(dòng)化測(cè)試服務(wù)器、測(cè)試環(huán)境服務(wù)器、日志服務(wù)器,自動(dòng)化測(cè)試服務(wù)器連接電視機(jī)集群,電視機(jī)集群內(nèi)部配置并連接測(cè)試環(huán)境服務(wù)器以及日志服務(wù)器。

如圖2,本發(fā)明方法包括如下步驟:

步驟1:在同一個(gè)局域網(wǎng)內(nèi),通過(guò)自動(dòng)化測(cè)試終端上傳電視應(yīng)用或智能電視系統(tǒng)的apk安裝包至電視機(jī)集群,并下發(fā)安裝指令給電視機(jī)集群,自動(dòng)化測(cè)試終端對(duì)待測(cè)的電視機(jī)(編號(hào)為1)進(jìn)行apk包安裝,由于電視機(jī)的編號(hào)與其ip地址綁定,自動(dòng)化測(cè)試終端的下發(fā)apk連接與安裝的指令為:adbconnectip,adbinstall-rxxx.apk?!癮dbconnectip”為連接編號(hào)為1的電視機(jī),“adbinstall-r”為在當(dāng)前電視機(jī)上強(qiáng)制安裝覆蓋當(dāng)前某個(gè)apk安裝包(此為智能操作系統(tǒng)或應(yīng)用軟件)。

步驟2:搭建測(cè)試環(huán)境服務(wù),本發(fā)明采用django框架,編寫(xiě)python服務(wù)程序,程序編寫(xiě)的原理為:截獲并解析線上請(qǐng)求接口的參數(shù),模擬同一個(gè)接口不同的請(qǐng)求參數(shù)返回不同請(qǐng)求結(jié)果。即同一個(gè)接口,請(qǐng)求參數(shù)為“直播”的時(shí)候,返回404。請(qǐng)求參數(shù)為“點(diǎn)播”,返回至線上請(qǐng)求,請(qǐng)求正常,依次類(lèi)推。(測(cè)試環(huán)境如某部直播影片返回404錯(cuò)誤,該直播影片無(wú)法正常播放,但是其他點(diǎn)播影片,仍然正常播放),下例為截獲當(dāng)前post請(qǐng)求,并解析其中v參數(shù),獲取vid的值,當(dāng)確認(rèn)vid為某個(gè)值,返回當(dāng)前參數(shù)請(qǐng)求接口的結(jié)果為404。同一個(gè)接口的其他參數(shù)請(qǐng)求仍然保持正常返回。

ifreq.method=='post':

v=req.post.get('v')

vjson=json.loads(v)

vid=str(vjson["v"]["id"])

ifvid==“xxxx”:

returnhttpresponsenotfound('<h1>pagenotfound</h1>')

else:

te=urllib.urlopen('http://xxx.xxx.com'+req.get_full_path())

returnhttpresponse(te.read(),content_type="application/xml")

然后搭建nginx服務(wù)器,通過(guò)nginx文件的配置,可以提供對(duì)外服務(wù)。其因?yàn)閚ginx可以配置將某個(gè)域名請(qǐng)求至本地的某個(gè)服務(wù),從而提供對(duì)外服務(wù)時(shí)將端口訪問(wèn)轉(zhuǎn)為設(shè)置域名host。

通過(guò)步驟2,本發(fā)明實(shí)現(xiàn)一套可供外部訪問(wèn)的測(cè)試環(huán)境,外部?jī)H需進(jìn)行host設(shè)置即可訪問(wèn),同理類(lèi)似,本發(fā)明可以實(shí)現(xiàn)多種獨(dú)立的測(cè)試環(huán)境。然后自動(dòng)化測(cè)試服務(wù)器通過(guò)下發(fā)adb命令至電視機(jī)集群,針對(duì)已選的電視機(jī)配置相應(yīng)的host文件,電視機(jī)的應(yīng)用服務(wù)請(qǐng)求將被截取,請(qǐng)求至當(dāng)前的測(cè)試環(huán)境,從而實(shí)現(xiàn)各種場(chǎng)景(包括異常場(chǎng)景和正常場(chǎng)景)的模擬。自動(dòng)化測(cè)試服務(wù)其下發(fā)的adb命令為:adbshellsu-c'mount-oremount,rw/system',adbshellsu-c'echo“x.x.x.xxxx.xxx.com”>>/system/etc/host',第一個(gè)命令為賦予當(dāng)前/system目錄讀寫(xiě)權(quán)限,第二個(gè)命令為寫(xiě)入測(cè)試環(huán)境服務(wù)至系統(tǒng)host文件,如上命令將電視應(yīng)用服務(wù)的環(huán)境配置為特定的測(cè)試環(huán)境(包括異常和正常)。以此類(lèi)推,電視機(jī)集群的電視應(yīng)用可分別一一配置不同的測(cè)試服務(wù)環(huán)境。

步驟3:編寫(xiě)python自動(dòng)化測(cè)試腳本,測(cè)試腳本由相應(yīng)的按鍵模擬操作以及控件識(shí)別組成,構(gòu)成模擬電視機(jī)一系列的操作行為流程。本發(fā)明選擇的自動(dòng)化測(cè)試框架為appium。本發(fā)明的測(cè)試方法一為采用按鍵操作模擬電視機(jī)的遙控器操作行為,方法二為采用uiautomator定位并識(shí)別電視機(jī)的控件操作,在此過(guò)程中采用動(dòng)態(tài)等待機(jī)制等待頁(yè)面加載時(shí)間。

按鍵模擬操作方法為:電視機(jī)由遙控器操作,因此自動(dòng)化測(cè)試腳本采用相應(yīng)的按鍵操作命令模擬電視機(jī)的遙控器操作,appium的鍵盤(pán)處理命令包括:keycode_enter回車(chē)鍵66,keycode_dpad_center確定鍵23,keycode_dpad_up導(dǎo)航鍵向上19,keycode_dpad_down導(dǎo)航鍵向下20,keycode_dpad_left導(dǎo)航鍵向左21,keycode_dpad_right導(dǎo)航鍵向右22,keycode_page_up向上翻頁(yè)鍵92,keycode_page_down向下翻頁(yè)鍵93,等等,如模擬遙控器的確定鍵,其python語(yǔ)言的命令為:self.driver.press_keycode(23)。

控件識(shí)別方法為:uiautomator定位識(shí)別電視機(jī)的控件的方法主要分為以下幾種,通過(guò)文本信息定位識(shí)別,其方法為find_element_by_name(),通過(guò)控件的classname定位識(shí)別,其方法為find_element_by_class_name(),通過(guò)xpath方法定位識(shí)別,其方法為find_element_by_xpath(),通過(guò)控件id定位識(shí)別,其方法為find_element_by_id(),通過(guò)androiduiautomator定位識(shí)別,其方法為find_element_by_android_uiautomator()等等。如識(shí)別某個(gè)控件并點(diǎn)擊,其python語(yǔ)言的命令為:find_element_by_id(“someid”).click()

同時(shí),電視機(jī)發(fā)送按鍵命令至其響應(yīng)存在等待時(shí)間,腳本提供一個(gè)運(yùn)行動(dòng)態(tài)等待方式其命令為:element=webdriverwait(self.driver,5).until(lambdax:x.find_element_by_id('someid')),self.driver為webdriverwait的驅(qū)動(dòng)程序,5為最長(zhǎng)超時(shí)時(shí)間,until為調(diào)用該方法提供的驅(qū)動(dòng)程序的參數(shù),直到返回值不為false。lambda提供一個(gè)運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建函數(shù)的方法。其命令的含義為當(dāng)控件someid在頁(yè)面上超過(guò)5s不出現(xiàn)的情況下,報(bào)錯(cuò)。如5s內(nèi)出現(xiàn),則成功。

自動(dòng)化測(cè)試服務(wù)終端,下發(fā)測(cè)試指令給電視機(jī)集群,通過(guò)上述步驟中的python腳本中的命令對(duì)待測(cè)電視設(shè)備及其應(yīng)用服務(wù)進(jìn)行測(cè)試。自動(dòng)化測(cè)試服務(wù)其下發(fā)的adb命令為:adbconnectip,adbshellsu-c'pythontest.py',第一個(gè)命令為連接某臺(tái)電視機(jī),第二個(gè)命令為針對(duì)該電視機(jī)運(yùn)行某個(gè)測(cè)試腳本,依次類(lèi)推,自動(dòng)化測(cè)試服務(wù)終端可以下發(fā)指令給眾多獨(dú)立的電視機(jī),并分別執(zhí)行不同測(cè)試場(chǎng)景下(異常場(chǎng)景和正常場(chǎng)景)的測(cè)試。

步驟4:根據(jù)步驟2中自動(dòng)化測(cè)試服務(wù)下發(fā)的adb命令將電視機(jī)集群與測(cè)試環(huán)境分布對(duì)應(yīng)后,然后針對(duì)每臺(tái)電視機(jī)運(yùn)行步驟3的測(cè)試腳本,其下發(fā)的adb命令如步驟3中所示,從而本發(fā)明實(shí)現(xiàn)其在步驟2的獨(dú)立可控的測(cè)試環(huán)境中通過(guò)步驟3中的測(cè)試腳本模擬電視鍵盤(pán)的操作。在電視機(jī)自動(dòng)化測(cè)試的整個(gè)過(guò)程中,采用python日志服務(wù)程序保存其應(yīng)用服務(wù)的測(cè)試數(shù)據(jù)(測(cè)試日志或接口數(shù)據(jù))。python日志服務(wù)程序搭建的原理為:截獲日志請(qǐng)求接口,將全部的日志請(qǐng)求接口返回的數(shù)據(jù)存入日志服務(wù)器。其后續(xù)的對(duì)外服務(wù)流程與上述步驟2中的提供對(duì)外服務(wù)流程一致。通過(guò)服務(wù)域名配置,本發(fā)明在電視應(yīng)用服務(wù)的測(cè)試過(guò)程中,其產(chǎn)生的全部日志請(qǐng)求會(huì)自動(dòng)保存至日志服務(wù)器。

本發(fā)明編寫(xiě)python測(cè)試驗(yàn)證腳本,解析日志服務(wù)器的當(dāng)前操作流程日志,并與預(yù)期結(jié)果分析比較,返回測(cè)試結(jié)果。如解析日志服務(wù)器的某條日志,其結(jié)果為15個(gè)參數(shù),比較預(yù)期結(jié)果是否為15個(gè)參數(shù),進(jìn)一步比較日志中的每個(gè)參數(shù)與預(yù)期結(jié)果是否一致,如不一致,則返回失敗。一致,則通過(guò)。最終,測(cè)試結(jié)束,返回當(dāng)前流程或整體結(jié)果的測(cè)試報(bào)告。

自動(dòng)化測(cè)試服務(wù)器終端下發(fā)指令進(jìn)行電視應(yīng)用的測(cè)試,其結(jié)束后,可展示當(dāng)前的測(cè)試結(jié)果,并郵件發(fā)送測(cè)試結(jié)果至相關(guān)人員。

進(jìn)一步地,本發(fā)明電視應(yīng)用apk安裝包指智能電視系統(tǒng)(如某品牌的自主智能電視系統(tǒng)),也可指單獨(dú)的電視應(yīng)用軟件。

進(jìn)一步地,測(cè)試環(huán)境服務(wù)包括異常場(chǎng)景和正常場(chǎng)景測(cè)試環(huán)境服務(wù)。

進(jìn)一步地,鍵盤(pán)及控件操作包括點(diǎn)擊、輸入、喚起屏幕、選擇以及拖拉操作。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
八宿县| 德清县| 拉孜县| 曲阳县| 孙吴县| 五华县| 息烽县| 镇安县| 边坝县| 治县。| 阿鲁科尔沁旗| 花垣县| 保亭| 灵璧县| 四会市| 松桃| 措美县| 雷山县| 平安县| 林州市| 敦化市| 吴川市| 团风县| 芮城县| 方正县| 灵山县| 山西省| 拉萨市| 大庆市| 广州市| 峨眉山市| 潜山县| 乌兰县| 连平县| 浠水县| 枣强县| 隆德县| 包头市| 大庆市| 若尔盖县| 嵊州市|