盧建軍,蘇 寧
LU Jian-jun1, SU Ning2
(1.西安郵電學院 通信學院,西安 710061;2.西安科技大學 通信學院,西安 710054)
隨著科技的進步,手機與我們的關系已經到了密不可分的地步,手機扮演著通訊工具、多媒體、網絡等多方面的角色。同時,用戶對手機軟件的質量、性能也提出了更高的要求。在商業模式的驅動下,手機的開發周期不斷的縮短,更要確保手機軟件質量。產品的軟件質量與手機廠商的切身利益、市場競爭力和信譽度息息相關[1]。目前我國的手機軟件測試的發展還處于剛剛起步的階段。國內的手機廠商對手機軟件測試的理解不夠,在軟件測試上投入的精力不夠,因此不能制定出詳盡的手機軟件測試流程及測試策略來完成手機的軟件測試工作。本文針對這一現象結合作者的實際工作經驗,對手機軟件測試的流程和策略進行的初步的探討。
手機軟件測試是一個迭代的循環往復的過程。事實證明,測試工作的早期介入,可提早發現錯誤,避免不必要的生產花費和資源投入,因此手機軟件測試將會從開發初期開始伴隨整個手機軟件開發的生命周期。手機軟件開發采用的是面向對象的開發方法,它的生命周期模型是迭代生命周期模型(Iterative Lifecycle Model)。
1.2.1 需求分析階段
測試人員與設計人員一起參加需求調研,編寫軟件質量需求,制定測試計劃,盡早發現軟件設計上存在的缺陷和任務書上不合邏輯的地方。
1.2.2 設計階段
與設計人員一起參加軟件結構設計和詳細設計,熟悉設計方案,制定測試方案。
1.2.3 實現階段
即是軟件編碼與單元模塊測試階段,對于手機測試而言,每個功能模塊即是軟件測試的最小單位劃分,測試人員編寫測試用例對某一功能模塊進行測試。
1.2.4 回顧階段
開發人員同測試人員一起對該階段軟件進行評估,回顧軟件需求、改變或增加新的需求說明。自此,一個開發測試迭代完成[2]。
在完成兩到三個模塊的迭代及單元測試以后,將開始集成測試。把各模塊集成在一起時,測試它們是否正常運行。集成測試介于單元測試和系統測試之間,起到“橋梁作用”[3]。迭代次數增加,軟件逐步成熟的時候,測試將轉入系統測試。系統測試一般由獨立測試人員執行,通常采用黑盒測試方式。粒度最大,主要測試系統是否符合“需求規格說明書”[4]。循環到當在一段時間內測試出來的缺陷穩定維持在一個較少的水平線上,且出現的問題足以忽略時,可認為系統已初步穩定,即交付驗收測試[5]。
在測試一款產品的時候編寫的測試用例要緊扣需求上描述的基本功能,少量的涉及到使用頻率較高的功能交互,不涉及界面布局等GUI元素。這樣做的好處是測試用例沒有跟某一款產品的關聯太緊,支持在同一個系統平臺衍生出不同的很多款手機,完成同一系列的用例可以完全或部分復用于整個平臺的其他產品,從而減少勞動力,縮短開發周期,降低商業成本[6]。當然,不同的硬件產品一定要有不同的測試側重點,由于硬件不同引起的問題不同的例子也不在少數。
設計的所有用例將形成一個測試用例庫,在每個迭代開始的時候,測試組長都會選取一部分用例組成測試用例集進行測試,選取的用例通常分兩部分:一部分是基本功能的用例,保證這次迭代的軟件能夠實現最基本的功能;還有一部分是上次迭代時發現錯誤比較多的模塊,在開發人員修改以后做一次比較集中的回歸測試。
手機軟件是一個比較復雜的系統,僅僅靠測試用例里針對基本功能的測試是遠遠不夠的,用戶經常會在不知情或有需要的情況下打開很多個應用程序,或正在運行某個應用程序的時候有其他的手機跟他進行交互,這就產生了交互測試。這部分測試主要是通過測試人員常年積累的測試經驗和對錯誤的敏感度來發現錯誤的。
在測試中發現問題固然重要,但是在發現之后編寫錯誤報告同樣不可忽視。一個好的錯誤報告可以引導開發人員找到問題根源,及時解決問題。編寫錯誤報告時一定要做到客觀,真實,詳細。詳細描述問題發生的環境,步驟,版本,重現率,等等,并且只做到客觀的描述問題現象,不做任何沒有根據的猜測,以免誤導開發人員。在有能力的情況下,提供錯誤記錄,協助開發人員重現問題,確定問題本質。
報告錯誤以后要定期追蹤所報錯誤狀態,與開發人員溝通,確定錯誤修改進程。若錯誤修正,及時在新版本上對錯誤進行回歸測試。
在白盒測試中交叉使用黑盒測試,在黑盒測試中交叉使用白盒測試的方法稱為灰盒測試。灰盒測試就是介于白盒測試和黑盒測試之間的測試,最常見的灰盒測試是集成測試[7]。測試人員可以在既通過用戶界面測試又了解軟件功能的源代碼程序怎樣設計的情況下,有的放矢的進行某種確定的條件/功能測試[8,9]。
當手機的某些可用資源達到或者超過理論允許的極大值時,在手機上繼續進行某種操作時候的測試,此時手機的行為應該是友好的,可被用戶接受的。
手機功能眾多,回歸測試工作量大,且測試中常碰到很多重復性高的工作,手動執行的話費時費力,也容易讓測試人員產生疲倦甚至是厭倦心理,很容易造成測試的遺漏。如果能有一套自動執行的機制,將能大大提高測試的效率。
性能測試主要測試手機的反應速度是否達到標準。它通過計算手機在完成一個操作所用的時間來衡量[10]。
手機軟件自動化測試工具Brat是一個手機自動化測試的平臺,它通過手機驅動端口連接手機與PC,由Tcl腳本語言搭載其中,完成測試化腳本的開發。Brat具有腳本可視化顯示、控制腳本循環操作批量操作、判斷測試用例是否通過和產生運行日志的功能。
3.2.1 測試用例的編寫、執行
如表1測試用例。

表1 測試用例
3.2.2 測試結果
Brat運行完發送短信500遍以后的結果如圖1所示,可見測試Pass。Brat還可提供運行的日志記錄,以便在運行Fail的時候查找問題原因。

圖1 自動化用例執行結果
本文通過對在實際工作中總結的手機軟件測試的流程和策略的探討,給予我國手機軟件測試流程和策略一定的參考,說明了規范流程和拓展策略的重要性。并采用自動化測試方法進行了實測應用,實踐證明基于自動化測試工具的平臺,搭載開發的測試腳本,并結合一定的測試經驗進行的自動化測試,完全可以達到軟件壓力測試標準,保證壓力測試質量,縮短測試周期,提高測試效率。
[1] 秦燁,康偉,韓佳.淺談黑盒測試技術在手機軟件測試中的應用[J].今日科苑, 2008.
[2] 趙會群.通信軟件測試技術基礎[M].人民郵電出版社,2004.
[3] 豐彥.軟件測試的系統測試方法[J].引進與咨詢,2005.
[4] Grenford J.Myers The Art of Software Testing[M].機械工業出版社,2005.
[5] 林寧,孟慶余.軟件測試實用指南[M].清華大學出版社,2004.
[6] 劉海鵬.手機軟件測試簡介[J].科技咨詢導報,2007.
[7] 古樂,史九林.軟件測試技術概論[M].清華大學出版社,2004.
[8] 路金良.手機軟件開發的質量控制[J].中國科技信息,2009.
[9] 葉振宇.智能手機軟件開發中的質量控制策略[J].紹興文理學院學報,2005.
[10] William E.Perry Effective Methods for Software Testing[M].清華大學出版社,2008.