Android 行動應用 App iOS Bug

軟體測試面面俱到 行動裝置應用效能更穩定

2014-06-30
近年來行動載具發展快速,加上網路普及,越來越多的應用與控制透過行動載具,讓消費者體驗更便捷的生活。今年1月的國際消費性電子展(CES),以及2月世界行動通訊大會展覽,無不顯現出穿戴裝置、智慧家庭與聯網等行動應用趨勢,已成為目前各家資通訊(ICT)廠商的發展重點。
有別於以往以硬體為主的個人電腦(PC)、筆電(Notebook)等產品,行動載具中的軟體為這個新領域發展成功的重要關鍵,跳脫了過去硬體為主的狀態;而軟體的完整發展有賴於與軟體發展相輔相成的「測試」。

圖1 2012-2013年全球主要行業領域行動應用軟體測試成長率

根據惠普(HP)在今年初所發表的2013-14世界品質報告(圖1),目前全球對於行動應用測試正處摸索階段,即便是軟體發展較為成熟的歐美地區,也正努力探討如何發展、執行較完整、較精準,又可符合實際狀況與成本的專業測試。台灣過去以硬體製造為主,對於行動應用測試的認知有限,本篇將針對行動應用軟體測試進行介紹。

圖2 企業行動應用軟體測試障礙

行動應用(Mobile Applications)的涵蓋範圍大致可分為智慧型裝置製造商以及行動應用軟體開發商。製造商主要就出廠裝置中的應用軟體進行研發與測試,而行動應用軟體開發商,則是針對智慧手機、平板電腦與穿戴式裝置等,開發應用軟體。理想的行動應用軟體在上架前(指Native App與Hybrid App),會先在不同尺寸、不同解析度與不同品牌的主流手機上,搭配量身訂做的測試案例進行測試(圖2)。

App概分三大類型

行動應用發展種類眾多,目前應用程式發展主流主要是以訊息、社群、遊戲、工具與多媒體為主。由於行動應用搭載的行動載具本身就建立在破碎化的(Fragmented)平台,而不同平台又涵蓋多種版本,如iOS、Android、Windows、BlackBerry等,再加上硬體、網路等的因素,對於行動應用發展業者來說,挑戰非常大。

一般依應用程式(App)開發的語言,大致可將App歸納為三種形式(表1),分別為原生應用程式(Native App)、網路應用程式(Web App)與混合式應用程式(Hybrid App)。

Native App
  此原生語言程式開發出的App,主要是針對某種類型的操作系統進行開發,如iOS、Android等,App可在載具自身上執行。目前App上架平台上的App大多數屬這類型,它的優點是支援離線工作、可大量運用使用者介面(Interface)與圖檔,速度與性能佳,且安全性較高,但缺點是開發時間較長、成本高,針對不同系統,必須重新開發,如Android系統的App與iOS系統App必須分別開發。
Mobile Web App
  以網站設計為基礎,開發出可同時與網站與行動載具Web瀏覽的程式語言。它的優點是適用範圍廣泛,所有智慧型載具皆可使用,開發快速且成本較低,以網頁下載代替上架到App平台,沒有手動更新的問題。缺點是必須聯網才可使用,執行速度受到網路影響,App性能也連帶受到限制;另外,此類App不適使用大量圖片於使用介面。
Hybrid Mobile App
  結合Native App和Web App應用,部分功能可在本機運作,部分則須在Web上執行。此類型的特點剛好是綜合Native App和Web App特色,但缺點是當網路連線時,速度與性能會受到影響,不適用於需要大量圖片的App。

App測試包含諸多面向

為能覆蓋上述所提不同類型的App,配合不同版本的系統、不同尺寸、不同解析度與不同品牌等行動載具的測試,測試的複雜度與挑戰往往非一般業者所能負荷。因而如何在有限的時程裡,達到符合成本的完整測試,已成為相關廠商努力研究的主題。完整的App測試,大致上可從幾個面向來聚焦:

功能測試
  功能測試為最基本的App測試,透過不同案例、邊界與特殊情況等,以使用者角度,確認品質。
使用性測試
  測試內容包含是否容易上網、螢幕轉換、反應能力速度、使用者直觀的介面觸控等。理想狀態下,透過多位使用者來使用並反饋,將有助品質的把關與提升。
效能與穩定性測試
  App的效能與穩定性往往被視為測試重點。但影響穩定性與效能的因素很多,從載具本身,到App的反應、後端連結的伺服器利用率以及網路條件等,都有可能是問題的所在。效能測試可以透過不同工具來進行測試,如Keynote、Neotys、SDK Tools和LoadRunner等,可以根據需求與成本,來尋找不同段落所需的合適工具進行測試。
自動化測試
  由於App的某些部分必須陸續進行高度重複測試,特別是程式修改後往往須進行多次的回歸測試,以確認未因程式修改而衍生其他臭蟲(Bug)。為縮短重複測試的時間,並維持測試精準度,測試者須要透過工具來進行自動化重複測試,一般藉由自動化測試,可以縮短約25~30%的測試時間。目前市面上有免費與付費的自動化測試工具,如uiautomator、Sikuli、Eggplant等,有的透過錄製或介面擷取即可進行自動化測試,有的則須撰寫腳本,各有優缺點,測試者可根據所容許的資源,挑選合適的自動化測試工具。
安全測試
  安全測試可分三個層面來看,包含載具(端點設備)本身安全、載具企業級安全(Mobile Device Management, MDM)與應用安全。App本身安全測試,主要著重應用程式是否能防止敏感資訊儲存遭惡意應用、應用程式的應用程式介面(API)或元件(Component)是否以完整之權限保護,以及應用程式是否帶有惡意行為(運用於第三方測試)。
相容性測試
 
圖3 行動應用測試聚焦面向

行動載具的碎片化,導致載具分歧,尤以Android系統為最。Android作業系統碎片化特別嚴重,3年內就有二十多版本更新,而App在不同版本下,可能出現原定功能無法正常使用。此外,手機螢幕尺寸太多、產品碎片化(品牌與機型越來越多)等,在在都讓相容性測試困難度大幅增加。相容性測試除了須具備多種不同手機外,透過專業測試人員,運用撰寫測試腳本自動化測試,將可有效縮短測試時間。若時間與資源有限,也可順應國外測試的趨勢--運用第三方測試,降低測試成本。
Ad-hoc測試
  除了上述測試外,仍有項目是一般較容易被忽略的測試,如安裝測試、記憶體測試、網路連線測試與語言測試等,這些項目透過不同情境的測試案例進行測試,將有助完整測試App(圖3)。

自動化測試 降低測試成本

軟體開發的方法發展至今已相當多,例如瀑布式模型(Waterfall Mode)、V型(V Shape Mode)、螺旋型(Spiral Mode)等,而行動測試不論是搭配哪一種模式的軟體開發,可以透過及早參與專案,減少問題的產生,同時提高測試時效。在整個軟體開發的過程中設立不同的測試里程碑或查核點,將能具體促成測試與軟體開發兩者相輔相成、擴大綜效。

最後,再次倡導專業的軟體測試觀念:「軟體測試不同於硬體測試,軟體無法達到百分之百零缺陷,當然也沒有百分之百的覆蓋性測試。」在資源與時間都有限的情況下,專業測試者可先從影響使用者較大的可能錯誤進行測試,並且盡可能地把人工測試轉為自動化測試,以降低測試成本,並強化使用者體驗,讓測試達到最高效益。

(本文作者任職於資策會智通所)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!