999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android軟件可靠性測試用例自動生成的設(shè)計(jì)研究

2016-05-05 01:47:11
關(guān)鍵詞:用戶

李 震 王 肖 盧 超 王 敏 李 陽

1(江蘇科技大學(xué)電子信息學(xué)院 江蘇 鎮(zhèn)江 212003)

2(金舟軟件有限責(zé)任公司 江蘇 鎮(zhèn)江 212003)

?

Android軟件可靠性測試用例自動生成的設(shè)計(jì)研究

李震1,2王肖1盧超2王敏1李陽1

1(江蘇科技大學(xué)電子信息學(xué)院江蘇 鎮(zhèn)江 212003)

2(金舟軟件有限責(zé)任公司江蘇 鎮(zhèn)江 212003)

摘要Android是近幾年新興的智能手機(jī)操作系統(tǒng),同時(shí)也出現(xiàn)了各種類型的Android應(yīng)用軟件,競爭激烈。對其進(jìn)行可靠性測試是保證Android軟件質(zhì)量和可靠性的重要途徑,同時(shí)也可幫助開發(fā)方在滿足用戶期望和盡快上市發(fā)布產(chǎn)品兩者之間找到合理的平衡。而測試用例的生成是軟件可靠性測試的重要環(huán)節(jié)。針對Android軟件可靠性測試用例的自動生成問題,首先提出收集用戶對Android軟件使用的習(xí)慣數(shù)據(jù),以便于構(gòu)建軟件的馬爾科夫鏈模型的方法,并基于馬爾科夫鏈模型,提出和實(shí)現(xiàn)了設(shè)置狀態(tài)間轉(zhuǎn)移概率算法和測試用例生成算法,最終根據(jù)以上的研究內(nèi)容設(shè)計(jì)了帶有自動記錄用戶操作習(xí)慣模塊的Android文件管理器和Android軟件可靠性測試用例自動生成工具,給出了Android軟件可靠性測試用例設(shè)計(jì)的總體思路。實(shí)驗(yàn)結(jié)果表明,該方法大大降低了Android軟件測試用例生成的難度,同時(shí)節(jié)約了測試用例生成的時(shí)間和成本,提高了可靠性測試的效率。

關(guān)鍵詞馬爾科夫鏈模型Android軟件開發(fā)測試用例自動生成Eclipse插件開發(fā)遍歷算法

0引言

軟件可靠性是衡量軟件質(zhì)量的重要指標(biāo),它是綜合考慮測試資源和測試效果的一種定量測試方法,可用于軟件產(chǎn)品發(fā)布前的綜合測試[1],能夠從資源使用的角度最大限度地滿足用戶期望和平衡開發(fā)方成本。Android是近幾年新興的智能手機(jī)操作系統(tǒng),同時(shí)也出現(xiàn)了各種類型的Android應(yīng)用軟件,市場競爭激烈,對其進(jìn)行可靠性測試是保證Android軟件質(zhì)量和可靠性的重要途徑,也可幫助開發(fā)方在滿足用戶期望和盡快上市發(fā)布產(chǎn)品兩者之間找到合理的平衡。

軟件可靠性測試用例的編寫是軟件可靠性工程的重要活動之一。但Android軟件的可靠性測試中還沒有一個(gè)明確的測試用例生成的方案,所以能有一個(gè)完善的從軟件的設(shè)計(jì)到根據(jù)軟件的功能生成對應(yīng)的測試用例的方案顯得格外重要。

軟件的可靠性測試的主要特征是按照用戶實(shí)際使用軟件的習(xí)慣來測試軟件的,所以測試用例的設(shè)計(jì)必須要符合這個(gè)要求[2],否則測試得出的數(shù)據(jù)是不可靠的。針對新開發(fā)的軟件沒有用戶歷史使用數(shù)據(jù)的問題,本文提出了一個(gè)收集用戶使用軟件習(xí)慣的方法。設(shè)計(jì)出了帶記錄用戶操作習(xí)慣模塊的Android文件管理器軟件。

測試用例的編寫是一個(gè)費(fèi)時(shí)費(fèi)力的工作,一般都是由專業(yè)人員完成的[4]。本文基于馬爾科夫鏈模型,通過兩種算法設(shè)計(jì)和實(shí)現(xiàn)了Android軟件測試用例自動生成工具,節(jié)約了Android軟件測試用例生成的時(shí)間和成本,提高了可靠性測試效率。

1馬爾科夫鏈模型

馬爾科夫鏈?zhǔn)菭顟B(tài)和時(shí)間都離散的馬爾科夫過程[5]。它是滿足以下兩種假設(shè)的隨機(jī)過程:

1) t+1時(shí)刻系統(tǒng)的概率分布只與t時(shí)刻的狀態(tài)有關(guān),與t時(shí)刻以前的狀態(tài)無關(guān);

2) 從t時(shí)刻到t+1時(shí)刻的狀態(tài)轉(zhuǎn)移與t的值無關(guān)[6]。一個(gè)馬爾科夫鏈模型可表示為M=(S,P,Q),其中各元素的含義如下:

(1) S是系統(tǒng)所有可能的狀態(tài)組成的非空狀態(tài)空間。用Si、Sj表示狀態(tài)。

2基于用戶操作習(xí)慣的馬爾科夫鏈模型的測試用例生成

2.1Android原子操作和用戶操作習(xí)慣數(shù)據(jù)的收集

對于新開發(fā)的軟件,程序員可以先開發(fā)一個(gè)包含自動記錄用戶操作習(xí)慣模塊的測試版本的軟件。首先把測試版本軟件分發(fā)給不同的人群試用,經(jīng)過一定的時(shí)間,把這些用戶的操作數(shù)據(jù)收集起來,通過統(tǒng)計(jì)分析就可以得到用戶實(shí)際的操作習(xí)慣[9]。通過這些數(shù)據(jù)構(gòu)造軟件的馬爾科夫鏈模型,最終生成的測試用例就能夠符合可靠性測試的要求。

編寫自動記錄模塊前提是必須要知道Android系統(tǒng)的所有原子操作,只有了解了這些原子操作,才能根據(jù)用戶的操作記錄相應(yīng)的內(nèi)容。通過對Android系統(tǒng)的研究,可以得到Android系統(tǒng)的原子操作如表1所示。

表1 Android系統(tǒng)原子操作及解釋

續(xù)表1

然后對用戶的操作進(jìn)行監(jiān)聽就可以得到用戶的操作習(xí)慣數(shù)據(jù)。具體方法和實(shí)現(xiàn)將在第3節(jié)介紹。

2.2狀態(tài)間轉(zhuǎn)移概率設(shè)置算法設(shè)計(jì)

為保證生成的測試用例有針對性,本文提出的做法是根據(jù)用戶的操作習(xí)慣來設(shè)置軟件的馬爾科夫鏈模型的狀態(tài)間轉(zhuǎn)移概率,這種做法不僅符合可靠性測試的特點(diǎn),而且能夠保證可靠性測試的充分性[10]。由馬爾科夫鏈特點(diǎn)可知,設(shè)計(jì)的算法不僅要滿足能夠?qū)λ械臓顟B(tài)間轉(zhuǎn)移概率進(jìn)行配置,還要能夠檢測出同一狀態(tài)的所有出邊概率之和是否為1。狀態(tài)間轉(zhuǎn)移概率設(shè)置算法設(shè)計(jì)如算法1。

算法1狀態(tài)間轉(zhuǎn)移概率設(shè)置算法。

//node為馬爾科夫鏈模型的一個(gè)節(jié)點(diǎn)

Procedure WidthTraversal(node){

//如果node有子節(jié)點(diǎn)

if node.hasChild

then{

//得到子節(jié)點(diǎn)個(gè)數(shù)

num=node. getChildren.size();

for i=0 to num

do{

//得到子節(jié)點(diǎn)并添加到數(shù)組array中

childNode = node. getChildren.get(i);

childNode. setProbability(probability);

array.add(childNode);

}

//對array數(shù)組進(jìn)行遍歷

For i=0 to array.length()

do{

//把a(bǔ)rray數(shù)組中節(jié)點(diǎn)所有的概率值相加

sum += array[i];

}

//如果所有節(jié)點(diǎn)的概率值不等于1,則說明配置有錯(cuò)

if sum !=1

then {

inputError = true;

}

for i=0 to node.getChildren.size()

do{

childNode = node.getChild.get(i);

//遞歸調(diào)用

WidthTraversal(childNode);

}

}

}

如果inputError為true,則說明配置有錯(cuò),提示用戶重新輸入即可。

2.3測試用例生成算法設(shè)計(jì)

測試用例生成算法必須要能根據(jù)軟件的馬爾科夫鏈模型自動識別出測試路徑,并根據(jù)路徑的節(jié)點(diǎn)信息生成對應(yīng)的測試用例。本文設(shè)計(jì)的測試用例生成算法如算法2。

算法2測試用例生成算法。

//node為馬爾科夫鏈模型的一個(gè)節(jié)點(diǎn)

Procedure DepthTraversal(node){

//如果node有子節(jié)點(diǎn)

if node.hasChild

then{

//循環(huán)遍歷子節(jié)點(diǎn)

for i=0 to node. getChildren.size()

do{

//得到一個(gè)子節(jié)點(diǎn)

childNode=node. getChildren.get(i);

//信息向下推壓,把子節(jié)點(diǎn)信息設(shè)置為父節(jié)

//點(diǎn)加自身節(jié)點(diǎn)信息

childNode.setInfo(node.getInfo()+childNode.getInfo());

//遞歸調(diào)用

DepthTraversal(childNode);

}

}

else{

//如果沒有子節(jié)點(diǎn),直接輸出節(jié)點(diǎn)信息即為

//此路徑對應(yīng)的測試用例

print node.getInfo();

}

}

3Android軟件和測試用例自動生成工具的設(shè)計(jì)

根據(jù)第2節(jié)的提出的方法,本節(jié)設(shè)計(jì)出了Android文件管理器軟件和測試用例自動生成工具,最終生成了文件管理器的測試用例集。流程圖如圖1所示。

圖1 生成測試用例流程圖

3.1Android文件管理器介紹

本文編寫的Android文件管理器主要實(shí)現(xiàn)的是對文件的基本操作,主要界面如圖2所示。

圖2 文件管理器界面

主要功能包括瀏覽文件、新建文件、新建文件夾、復(fù)制、剪切、粘貼、重命名、刪除、查看文件屬性,由于內(nèi)容限制,在此對其實(shí)現(xiàn)過程不做具體介紹。

3.2文件管理器記錄用戶操作習(xí)慣數(shù)據(jù)模塊的實(shí)現(xiàn)

自動記錄模塊利用Android平臺提供的SharedPreferences類的key-value對來保存數(shù)據(jù)[11],保存用戶操作習(xí)慣數(shù)據(jù)流程如圖3所示。

圖3 記錄用戶操作模塊流程

編寫記錄用戶操作模塊前,要了解用戶會執(zhí)行哪些操作,例如執(zhí)行新建文件功能時(shí),用戶可能會執(zhí)行如圖4“新建文件馬爾科夫鏈模型”的操作。

圖4 新建文件馬爾科夫鏈模型

只需對用戶的這些操作進(jìn)行監(jiān)聽,在用戶點(diǎn)擊觸發(fā)一個(gè)操作的時(shí)候,記錄用戶點(diǎn)擊此操作次數(shù)的變量加1,最后退出軟件時(shí),把這些記錄用戶操作次數(shù)的變量存儲到手機(jī)中即可。

3.3測試用例自動生成工具的實(shí)現(xiàn)

本文設(shè)計(jì)的測試用例自動生成工具是使用Eclipse開發(fā)的,可以實(shí)現(xiàn)手機(jī)屏幕在PC上的實(shí)時(shí)顯示,并能通過PC直接控制手機(jī),記錄用戶操作軟件時(shí)的坐標(biāo)和操作步驟名稱。能夠支持對任何不同分辨率、不同尺寸和不同Android系統(tǒng)版本手機(jī)的測試用例的生成。測試用例自動生成工具操作流程圖如圖5所示。

圖5 測試用例自動生成工具操作流程

其中,根據(jù)用戶的輸入設(shè)置狀態(tài)轉(zhuǎn)移概率用到的方法是2.2節(jié)介紹的狀態(tài)間轉(zhuǎn)移概率設(shè)置算法,遍歷軟件的馬爾科夫鏈模型生成測試用例用到的方法是2.3節(jié)介紹的測試用例生成算法。

測試用例自動生成工具主要界面如圖6所示,通過向?qū)?chuàng)建一個(gè)Android軟件測試用例自動生成工程。

圖6 設(shè)置工程名和測試功能點(diǎn)對話框

通過鼠標(biāo)右鍵就可以添加下一步操作,如圖7所示。

圖7 Android軟件的原子操作

這里提供了操作Android軟件所需的所有原子操作,點(diǎn)擊不同的選項(xiàng)會彈出對應(yīng)的對話框,例如圖8是點(diǎn)擊了touch原子操作所彈出的對話框。

圖8 配置Touch原子操作對話框

在這個(gè)對話框中可以直接操作手機(jī),命名操作步驟的名稱并自動記錄功能按鈕的坐標(biāo)。另加入了findAndTouch操作,在執(zhí)行自動化測試時(shí),在特定位置的矩形方框內(nèi)如果發(fā)現(xiàn)指定的圖片則點(diǎn)擊它,如果發(fā)現(xiàn)不了則就說明程序出錯(cuò)了,點(diǎn)擊findAndTouch后出現(xiàn)的對話框如圖9所示。

圖9 findAndTouch對話框

可以編輯操作步驟的名稱,自動記錄截取的圖片及其坐標(biāo)。最終文件管理器要進(jìn)行測試的操作步驟如圖10所示。

圖10 文件管理器的功能操作

點(diǎn)擊右上角測試用例生成按鈕會彈出如圖11所示設(shè)置操作步驟轉(zhuǎn)移概率對話框。

圖11 設(shè)置操作步驟轉(zhuǎn)移概率

可以根據(jù)用戶的操作習(xí)慣配置操作步驟間的轉(zhuǎn)移概率,并且會自動的檢測同一操作出邊狀態(tài)的概率之和是否為1。點(diǎn)擊確定按鈕,會自動根據(jù)配置的概率和測試用例總個(gè)數(shù)生成對應(yīng)個(gè)數(shù)的測試用例,如圖12所示。

圖12 測試用例生成個(gè)數(shù)對話框

生成的測試用例的信息如圖13和圖14所示,最終Android文件管理器測試用例的自動生成工程完成。接下來就可以將生成的測試用例導(dǎo)入到自動化測試工具中進(jìn)行可靠性測試,本文就不做介紹了。

圖13 所有測試用例的信息

圖14 新建文件夾路徑2測試用例詳細(xì)信息

4結(jié)語

本文介紹了收集 Android 軟件用戶操作習(xí)慣數(shù)據(jù)的方法,從馬爾科夫鏈模型出發(fā),提出了設(shè)置馬爾科夫鏈狀態(tài)間轉(zhuǎn)移概率算法和測試用例生成算法。根據(jù)所提的方法和算法編寫了 Android 文件管理器和測試用例自動生成工具,最終利用所開發(fā)的工具生成了文件管理器的測試用例集,節(jié)約了測試用例生成的時(shí)間和成本,提高了可靠性測試效率。

對于其他的Android軟件,都可以通過本文介紹的方法來實(shí)現(xiàn)測試用例的自動生成。對于用戶操作習(xí)慣數(shù)據(jù)的收集方法來說,因?yàn)橛脩魧浖牟僮鞫际峭ㄟ^觸控不同的功能按鈕來實(shí)現(xiàn)的,只需要對這些動作進(jìn)行監(jiān)聽就可以得到用戶的操作數(shù)據(jù);對于測試用例自動生成工具的設(shè)計(jì),因?yàn)楸疚脑O(shè)計(jì)的工具是支持Android手機(jī)的所有原子操作,所以可以對不同的Android應(yīng)用程序進(jìn)行測試用例的生成。因此本文所介紹的內(nèi)容和方法具有通用性,最終給出了Android軟件測試用例自動生成的一個(gè)新思路。

參考文獻(xiàn)

[1] 孫海濤.軟件可靠性評價(jià)與輔助測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].電子科技大學(xué),2010.

[2] 鄭曦.基于組件式軟件系統(tǒng)的可靠性指標(biāo)分配與預(yù)測模型[D].華南理工大學(xué),2012.

[3] 路曉波.軟件開發(fā)過程中白盒測試方法和工具的研究及應(yīng)用[D].南京郵電大學(xué),2013.

[4] 李孟庭.軟件測試用例生成的研究與應(yīng)用[D].北京郵電大學(xué),2013.

[5] 隋磊.面向DB2應(yīng)用的自動測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱工業(yè)大學(xué),2012.

[6] 楊治.手機(jī)軟件交互設(shè)計(jì)研究[D].哈爾濱工程大學(xué),2013.

[7] 鄭曦.基于組件式軟件系統(tǒng)的可靠性指標(biāo)分配與預(yù)測模型[D].華南理工大學(xué),2012.

[8] 尹魯燕.基于UML的軟件可靠性分析模型自動轉(zhuǎn)換研究[D].重慶大學(xué),2012.

[9] 孫寶云.軟件測試用例自動生成技術(shù)的應(yīng)用研究[D] .吉林大學(xué),2012.

[10] 伍小薈.面向軟件可靠性的性能測試方法研究與應(yīng)用[D].上海交通大學(xué),2012.

[11] 于濤.基于動態(tài)權(quán)重和靜態(tài)權(quán)重的軟件可靠性混合模型研究[D].西南大學(xué),2013.

ON DESIGNING AUTOMATIC GENERATION OF ANDROID SOFTWARE RELIABILITY TEST CASES

Li Zhen1,2Wang Xiao1Lu Chao2Wang Min1Li Yang1

1(SchoolofElectronicsandInformation,JiangsuUniversityofScienceandTechnology,Zhenjiang212003,Jiangsu,China)2(JinzhouSoftwareCo.,Ltd,Zhenjiang212003,Jiangsu,China)

AbstractIntelligent mobile phone operating system, Android, is emerging in recent years, and various types of Android software have become a flood with fierce competition. Reliability testing is the important way to ensure the quality and reliability of Android software, which can also help the developers to catch a balance between the expectations of users and releasing the software as earlier as possible. And test case generation is an important part of software reliability testing. The main contents of this paper are as follows: First, we proposed a method to collect usage data of users on Android software so as to build software Markov chain model. Secondly, based on Markov chain model, we proposed and implemented the algorithms of setting transition probabilities between the states and the test case generation. Finally, according to the above two proposals, we designed the Android file manager software which contains a module automatically recording users’ operation habits and an automatic generation tool for Android software reliability test cases, and gave the general idea of designing Android software reliability test cases. Experimental result showed that the method greatly reduced the difficulty of Android software reliability test cases and saved the time and cost of test cases generation as well, and the efficiency of the reliability test was increased as well.

KeywordsMarkov chain modelAndroid software developmentAutomatic test case generationEclipse plug-in developmentTraversal algorithm

中圖分類號TP311.56

文獻(xiàn)標(biāo)識碼A

DOI:10.3969/j.issn.1000-386x.2016.01.058

收稿日期:2014-05-28。江蘇高校優(yōu)勢學(xué)科建設(shè)工程資助項(xiàng)目;江蘇省2012年度企業(yè)博士集聚計(jì)劃;鎮(zhèn)江市第六批“331”計(jì)劃。李震,副教授,主研領(lǐng)域:系統(tǒng)安全性,系統(tǒng)可靠性,軟件測試。王肖,碩士生。盧超,工程師。王敏,副教授。李陽,講師。

猜你喜歡
用戶
雅閣國內(nèi)用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網(wǎng)新媒體用戶之間有何差別
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應(yīng)用
Camera360:拍出5億用戶
100萬用戶
主站蜘蛛池模板: 欧美色图久久| 99r在线精品视频在线播放 | 亚洲天堂网视频| 亚洲av无码久久无遮挡| 激情六月丁香婷婷| 国产伦精品一区二区三区视频优播 | 女人18毛片水真多国产| 国产精品无码AV片在线观看播放| 老汉色老汉首页a亚洲| 亚洲国产综合精品中文第一| 日韩精品专区免费无码aⅴ| 麻豆精品视频在线原创| 999精品视频在线| 一级福利视频| 久久免费精品琪琪| 999精品在线视频| 2022精品国偷自产免费观看| 国产亚洲精品自在久久不卡 | 国产亚洲精品va在线| 亚洲欧洲日韩国产综合在线二区| 国产区在线看| 尤物精品视频一区二区三区| www成人国产在线观看网站| 亚洲成人动漫在线观看| 国内视频精品| 国语少妇高潮| av在线人妻熟妇| 永久天堂网Av| 一级毛片免费不卡在线| 国产高潮视频在线观看| 欧美日韩成人在线观看| 国产夜色视频| 亚洲AV无码一区二区三区牲色| 国产不卡国语在线| 九九久久精品免费观看| 伊人福利视频| 日韩欧美国产成人| 污视频日本| 亚洲视频黄| 呦系列视频一区二区三区| 99热这里只有精品久久免费| 国产丝袜啪啪| 精品一区二区三区视频免费观看| 亚洲色图欧美| 国产另类乱子伦精品免费女| 97狠狠操| 色婷婷视频在线| 精品無碼一區在線觀看 | 香蕉eeww99国产在线观看| 亚洲成人高清无码| A级毛片高清免费视频就| 日本人妻丰满熟妇区| 精品一區二區久久久久久久網站| 亚洲欧美日韩另类在线一| 黄色在线不卡| 中美日韩在线网免费毛片视频| 久久精品娱乐亚洲领先| 四虎精品黑人视频| 国产成人做受免费视频| 激情视频综合网| 国产经典在线观看一区| 亚洲AⅤ波多系列中文字幕| 美女一区二区在线观看| 日韩精品欧美国产在线| 日韩毛片基地| 91视频精品| 国产白浆一区二区三区视频在线| 国产91久久久久久| 激情無極限的亚洲一区免费| 亚洲综合精品香蕉久久网| 91香蕉国产亚洲一二三区| 国产女人综合久久精品视| 伊人久久精品无码麻豆精品| 国产精品自在线拍国产电影| 91极品美女高潮叫床在线观看| 国产女人18毛片水真多1| 国产欧美精品午夜在线播放| 亚洲伊人久久精品影院| 人人看人人鲁狠狠高清| 亚洲天堂区| 国产亚洲一区二区三区在线| 亚洲熟妇AV日韩熟妇在线|