張文龍,張志翔
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
由于移動(dòng)設(shè)備的不斷發(fā)展和擴(kuò)散,幾乎所有領(lǐng)域都在開(kāi)發(fā)新的應(yīng)用程序。特別是在移動(dòng)商務(wù)應(yīng)用的領(lǐng)域,應(yīng)該充分利用某些優(yōu)點(diǎn),如更高的可用性、新信息的快速分發(fā)和更快的反應(yīng)時(shí)間。這些特征表明,移動(dòng)商務(wù)應(yīng)用程序不僅僅是一個(gè)轉(zhuǎn)移的桌面應(yīng)用程序、游戲應(yīng)用程序或內(nèi)容查看應(yīng)用程序。移動(dòng)商務(wù)應(yīng)用程序通常是根據(jù)移動(dòng)設(shè)備如智能手機(jī)或平板電腦(不是筆記本電腦),集成到現(xiàn)有的IT 基礎(chǔ)設(shè)施,是面向任務(wù)的和集中于一個(gè)清晰的和有限的功能范圍,以及基于公司業(yè)務(wù)流程的流動(dòng)潛力[1]。事實(shí)上,考慮到當(dāng)今市場(chǎng)上有大量的應(yīng)用程序執(zhí)行顯著的相似功能[2],應(yīng)用程序的設(shè)計(jì)和用戶體驗(yàn)往往是導(dǎo)致成功或失敗的區(qū)別因素[3]。
因此,移動(dòng)商務(wù)應(yīng)用程序的質(zhì)量是非常重要的,以避免損失收入或降低效率等負(fù)面影響。設(shè)想一個(gè)用于生產(chǎn)過(guò)程控制的移動(dòng)應(yīng)用程序,它提供關(guān)于當(dāng)前狀態(tài)的信息來(lái)監(jiān)視生產(chǎn)并提供決策支持,例如,環(huán)境參數(shù)的收集和解釋。如果應(yīng)用程序失敗,它可能會(huì)導(dǎo)致錯(cuò)誤的決策或意外的生產(chǎn)效果,由于生產(chǎn)過(guò)程的高啟動(dòng)時(shí)間而造成非常嚴(yán)重的后果。
Muccini 等人[5]認(rèn)為,智能手機(jī)和平板電腦等移動(dòng)設(shè)備上的應(yīng)用程序的主要特點(diǎn)是:有限的資源(如電池)、用戶界面(如觸摸屏)、上下文感知(如移動(dòng)連接)和多樣性(如設(shè)備和操作系統(tǒng))。此外,該論文貢獻(xiàn)了一個(gè)研究問(wèn)題:移動(dòng)應(yīng)用程序是否不同于傳統(tǒng)應(yīng)用程序,是否需要不同的、專門(mén)的新測(cè)試技術(shù)。討論移動(dòng)應(yīng)用程序的特點(diǎn)和結(jié)論(關(guān)于測(cè)試的移動(dòng)應(yīng)用程序),存在著許多挑戰(zhàn)與移動(dòng)應(yīng)用程序的上下文環(huán)境和移動(dòng)性有關(guān),而且性能、安全性、可靠性和能量都受到移動(dòng)設(shè)備所處環(huán)境變化的強(qiáng)烈影響。
因此,移動(dòng)商務(wù)應(yīng)用程序的失敗與桌面應(yīng)用程序的失敗是不同的。關(guān)于移動(dòng)應(yīng)用程序的典型故障模式的類型,發(fā)生的頻率,及其在質(zhì)量保證方面的考慮,還沒(méi)有確定的規(guī)則。所以,這對(duì)移動(dòng)應(yīng)用程序質(zhì)量保證造成了一點(diǎn)的負(fù)面影響,并可導(dǎo)致:
●移動(dòng)應(yīng)用程序中存在的潛在故障風(fēng)險(xiǎn)
●重復(fù)的修復(fù)移動(dòng)應(yīng)用程序的這個(gè)迭代過(guò)程將對(duì)公司的開(kāi)發(fā)過(guò)程產(chǎn)生代價(jià)高昂的結(jié)果
在現(xiàn)有的移動(dòng)應(yīng)用程序的故障類型中,是從面向編程的角度來(lái)對(duì)故障進(jìn)行分類的[6-10],這就要求分析人員具備一點(diǎn)專業(yè)的IT 知識(shí),才能正確的去識(shí)別這些故障類型。假如我們從人視覺(jué)分析的角度去考慮這個(gè)問(wèn)題,將移動(dòng)應(yīng)用程序故障輕量化,僅僅只考慮GUI 圖形,那么對(duì)于移動(dòng)應(yīng)用程序的質(zhì)量保證會(huì)不會(huì)產(chǎn)生正面積極的影響?
假設(shè)經(jīng)典桌面應(yīng)用的質(zhì)量保證方法與移動(dòng)應(yīng)用的質(zhì)量保證方法沒(méi)有顯著差異,那么移動(dòng)應(yīng)用的故障
模式存在哪些主要的、有區(qū)別的特征,這導(dǎo)致了研究問(wèn)題:
●RQ1:如何對(duì)檢測(cè)到的移動(dòng)設(shè)備故障進(jìn)行分類?
●RQ2:存在哪些典型故障類型,如何將它們集成到故障分類中?
關(guān)于分類,本文使用術(shù)語(yǔ)fault 作為故障的起源,并使用術(shù)語(yǔ)fault aspect 作為導(dǎo)致移動(dòng)應(yīng)用程序特定故障的測(cè)試用例的焦點(diǎn)。
根據(jù)Kitchenham[6]的一篇文獻(xiàn)綜述,作者闡述了這種技術(shù)的現(xiàn)狀,并回答了關(guān)于移動(dòng)應(yīng)用程序失敗的問(wèn)題。
包含IEEE Xplore 和ACM 數(shù)字圖書(shū)館內(nèi)容的書(shū)目數(shù)據(jù)庫(kù) Scopus[7]在 2006 年 1 月至 2014 年 1 月期間發(fā)表了計(jì)算機(jī)科學(xué)領(lǐng)域的1001 項(xiàng)結(jié)果。查找相關(guān)出版物的搜索字符串是基于失敗和移動(dòng)相關(guān)的術(shù)語(yǔ)。2006年和2014 年的搜索結(jié)果中沒(méi)有相關(guān)的出版物。從數(shù)據(jù)庫(kù)的結(jié)果可以找出26 份出版物來(lái)支持這項(xiàng)貢獻(xiàn)。來(lái)自這些出版物的信息將被考慮用于故障分類,包括典型故障方面。其他相關(guān)的出版物也在故障檢測(cè)和故障方面支持了這一貢獻(xiàn),但是它們描述的觀點(diǎn)基本相似。
支持這一貢獻(xiàn)的部分出版物主要介紹了基于度量的移動(dòng)電話故障特征,并確定了移動(dòng)應(yīng)用程序的主要故障類型,研究了錯(cuò)誤報(bào)告中報(bào)告的故障,或集中于具體的錯(cuò)誤主題,如資源限制器或觸發(fā)器。
Mauser 等人在文獻(xiàn)[7]中收集了有關(guān)移動(dòng)應(yīng)用程序領(lǐng)域之外的故障(故障、錯(cuò)誤等)分類的相關(guān)工作,重點(diǎn)是人機(jī)接口(Human Machine Interfaces,HMI)??紤]到移動(dòng)設(shè)備也是HMIs,與HMI 相關(guān)的出版物基本都與這一貢獻(xiàn)相關(guān)。在這里,失敗分類的主要類是行為、設(shè)計(jì)和內(nèi)容,它們根據(jù)上下文被劃分為子類。這項(xiàng)工作的分類是由IBM[8]在20 世紀(jì)90 年代早期創(chuàng)建的正交缺陷分類(ODC)所開(kāi)發(fā)的。
IEEE 軟件異常的標(biāo)準(zhǔn)分類[9]描述了一種基于每個(gè)故障報(bào)告屬性列表的方法。其目的是定義一個(gè)通用的詞匯表,不同的人和組織可以使用它進(jìn)行交流,并建立一套通用的屬性,以支持分析軟件缺陷和故障數(shù)據(jù)[6]的行業(yè)技術(shù)。這不是本文的目標(biāo),本文主要關(guān)注一種更輕量級(jí)的分類方法。然而,該標(biāo)準(zhǔn)中的故障屬性值包含了可能的錯(cuò)誤、丟失和額外值的section 模式,這被認(rèn)為是移動(dòng)應(yīng)用程序故障子類的一個(gè)有說(shuō)服力的劃分。
從相關(guān)工作的研究和質(zhì)量保證項(xiàng)目的經(jīng)驗(yàn)中獲得的見(jiàn)解使基于GUI 的故障分類成為可能,其中包括到典型故障方面的映射。首先,無(wú)論移動(dòng)應(yīng)用程序處于開(kāi)發(fā)之前還是投入使用期間,移動(dòng)應(yīng)用程序通常采用圖形用戶界面(GUI)的形式來(lái)表示,所以,我們可以根據(jù)基于GUI 來(lái)找出存在于移動(dòng)應(yīng)用程序中的顯著故障。故障方面的類別定義如圖1 所示。
圖1 故障分類及其子類
一個(gè)完整的移動(dòng)應(yīng)用程序由很多個(gè)屏幕原型組成,這些屏幕存在著嵌套的關(guān)系,而每一個(gè)屏幕原型都是由相對(duì)應(yīng)的組件組成,如,在Android Studio[11]開(kāi)發(fā)中頻繁使用的 View、TextView、Button、EditText 組件和在Apple's Xcode IDE[12]開(kāi)發(fā)中頻繁使用的UIView、UILabel、UIButton、UITextField 控件,他們僅僅只是因?yàn)椴僮飨到y(tǒng)的不同,而導(dǎo)致對(duì)象名不同,而實(shí)質(zhì)上是同一個(gè)組件。因此,移動(dòng)應(yīng)用程序故障的分類可以根據(jù)組件進(jìn)行故障分類。
因?yàn)橐粋€(gè)組件有其特有唯一的屬性,包括有在屏幕上顯示的位置,包含以下信息:①<x-position,y-position>、②<height,width>、③<text>、④<image>。這里四個(gè)元素述了組件的邊界框的左上角的位置,而高度和寬度屬性描述了邊界框的大小。文本屬性對(duì)應(yīng)于組件顯示的文本,而圖像屬性表示組件的圖像,其邊界依附于前兩個(gè)屬性。
由于每一個(gè)組件都有一個(gè)且唯一的元素屬性,我們可以設(shè)定某一種閾值對(duì)其進(jìn)行比較,來(lái)對(duì)移動(dòng)應(yīng)用程序中屏幕出現(xiàn)的故障進(jìn)行判定和分類。
在本文的故障分類中,可以有效的進(jìn)行第一類故障類別是布局故障。要檢測(cè)布局故障的類別,主要與兩個(gè)屬性有關(guān):①組件位置(即<x,y>的位置),和②尺寸(即邊界框的<h,w>)。通過(guò)比較 x 或 y 維度中數(shù)值的差異是否大于某一個(gè)布局閾值,從而判斷是否出現(xiàn)布局故障,同時(shí)輸出故障類型。
可以有效地識(shí)別出的第二類故障類別是文本故障。通過(guò)對(duì)以下屬性進(jìn)行處理:①組件位置(即<x,y>的位置)、②尺寸(即邊界框的<h,w>)、③文本(即<text>顯示內(nèi)容)。首先對(duì)基于文本位置的邊界框大小進(jìn)行裁剪,然后對(duì)裁剪后的推行進(jìn)行圖形處理,得到基于像素的差異,就可以判斷其是否存在字體顏色和樣式故障。其次,為了檢測(cè)不正確文本故障,可以對(duì)文本text的內(nèi)容進(jìn)行預(yù)處理,以處理空白和規(guī)格化字母大小,并執(zhí)行字符串比較。如果字符串匹配失敗,則輸出不正確文本的故障類型2c。
同樣的,可以準(zhǔn)確的分類的第三類故障類別是資源故障。需預(yù)處理4 個(gè)元素的所有信息,然后進(jìn)行合理分析、解釋,最后給出與其對(duì)應(yīng)的輸出類型。假如我們現(xiàn)在存在一個(gè)缺失的控件,那么在屏幕中,在對(duì)應(yīng)的<x,y>位置上就不存在一定<h,w>的邊界框,從而出是資源故障中的缺失或額外組件。同理,可以根據(jù)屬性中的<image>信息,進(jìn)行圖像預(yù)處理技術(shù),得到其對(duì)應(yīng)的故障類型。
在實(shí)際開(kāi)發(fā)過(guò)程中,故障的發(fā)生通常主要以屏幕中的某一區(qū)域的組件由于某種不可控的原因而導(dǎo)致其發(fā)生改變?cè)斐傻?,比如:水平方向的移?dòng)可能使用應(yīng)用程序時(shí)發(fā)生故障。這樣的問(wèn)題在很多情況下不是由開(kāi)發(fā)人員引起的,而是由需求工程師引起的。由于缺少規(guī)范,就像在這個(gè)故障方面的情況中一樣,允許對(duì)功能進(jìn)行解釋或忽略。
通過(guò)對(duì)項(xiàng)目的實(shí)證研究,這證實(shí)了基于GUI 的故障分類的充分性,并導(dǎo)致了子類的派生,以及在應(yīng)用于評(píng)估中移動(dòng)應(yīng)用程序后對(duì)典型故障方面的擴(kuò)展。關(guān)于子類的擴(kuò)展總是關(guān)于調(diào)整子類的定義。對(duì)于用于應(yīng)用分類的移動(dòng)應(yīng)用程序,沒(méi)有必要再細(xì)分,只需要對(duì)故障方面進(jìn)行少量擴(kuò)展。最終,每個(gè)報(bào)告的故障都可以鏈接到一個(gè)已定義的故障類。沒(méi)有不相關(guān)的故障報(bào)告。由于開(kāi)發(fā)者沒(méi)有實(shí)時(shí)報(bào)告每次檢測(cè)到的故障,為了評(píng)估在應(yīng)用程序集中的分類的完整性,以及每個(gè)被訪談的開(kāi)發(fā)人員的個(gè)人開(kāi)發(fā)經(jīng)驗(yàn),我們與幾個(gè)在程序開(kāi)發(fā)領(lǐng)域有幾年相關(guān)工作經(jīng)驗(yàn)的開(kāi)發(fā)人員討論了分類。
因此,本文提供了一個(gè)初始分類,如果需要,可以根據(jù)故障類及其相應(yīng)的故障方面的集合和定義對(duì)其進(jìn)行調(diào)整和擴(kuò)展。
有關(guān)特定于移動(dòng)設(shè)備的故障類及其與每個(gè)故障類的典型故障方面的關(guān)系的知識(shí)可用于集中質(zhì)量保證活動(dòng),如系統(tǒng)和集成測(cè)試。Holl[7]已經(jīng)提出了一種適合的質(zhì)量保證方法,該方法基于使用檢驗(yàn)和測(cè)試技術(shù)的整體方法。該方法能夠?qū)y(cè)試用例進(jìn)行有重點(diǎn)的推導(dǎo),考慮到頻繁的故障模式和通過(guò)檢查方法進(jìn)行的缺陷檢測(cè),該方法適用于通常不充分且不斷變化的需求規(guī)格。
這項(xiàng)工作產(chǎn)生了一個(gè)基本的基于GUI 的故障特定分類,它可以用來(lái)集中質(zhì)量保證,從而減少移動(dòng)應(yīng)用程序中遺留的,潛在的故障風(fēng)險(xiǎn)。這可以防止依賴于業(yè)務(wù)流程范圍的代價(jià)高昂的后果。此外,派生的分類鼓勵(lì)對(duì)未來(lái)工作主題的研究。
第一個(gè)研究問(wèn)題是,如何對(duì)檢測(cè)到的移動(dòng)設(shè)備故障進(jìn)行分類?根據(jù)項(xiàng)目經(jīng)驗(yàn)和故障分類的相關(guān)工作回答。第二個(gè)研究問(wèn)題,存在哪些典型的故障方面,如何將它們整合到故障分類中?根據(jù)項(xiàng)目經(jīng)驗(yàn)和有關(guān)移動(dòng)設(shè)備故障的文獻(xiàn)綜述,回答了這個(gè)問(wèn)題。對(duì)這兩個(gè)研究問(wèn)題的研究導(dǎo)致了信息的重疊和信息的互補(bǔ)。結(jié)合其他分類方案的知識(shí),可以創(chuàng)建基本的特定于移動(dòng)設(shè)備的故障分類,包括分類典型故障方面。將此分類應(yīng)用于多個(gè)移動(dòng)應(yīng)用程序開(kāi)發(fā),可以成功地對(duì)其進(jìn)行評(píng)估和優(yōu)化。
作為未來(lái)的工作,對(duì)開(kāi)源項(xiàng)目報(bào)告數(shù)據(jù)庫(kù)的調(diào)查將是全面評(píng)估這一分類的下一步工作之一,如果能夠找到新的見(jiàn)解,還可以擴(kuò)展它。此外,還將探討可能根據(jù)故障報(bào)告中所報(bào)告的頻率來(lái)推導(dǎo)故障分布的可能性。進(jìn)一步的步驟將是提出的質(zhì)量保證方法[7],基于派生的故障分類,以評(píng)估整體集中的質(zhì)量保證方法。