軟件質量問題是本部門、本公司、整個業界都十分關注的問題,為了提高軟件質量,事業部EPG決定在各個項目中逐步把單元測試引入到研發流程。在C、C++和JAVA單元測試方面,已經有CUnit、CppUnit和Logiscope等測試工具能夠完成。在Web測試方面,也有許多工具能夠完成功能測試、性能測試和回歸測試,但是在Script的代碼覆蓋率收集方面,目前沒有一款全面的工具。
代碼執行的覆蓋率是衡量軟件測試好壞的一項重要指標,理想的狀態是語句覆蓋率達到100%,一般要求達到90%以上。為了達到這一目標,必須找到一種方法或者測試工具能夠度量覆蓋率指標,以便能夠根據測試結果不斷修改完善測試用例,從而提高覆蓋率指標。
二、實踐思路
針對Web Script代碼覆蓋率收集這一問題,我們確定了研究的重點在于找到一款合適的工具進行覆蓋率的收集工作。Web應用主要分為兩大陣營:一大陣營是ASP.net應用,一大陣營是JSP應用。針對這兩種不同的應用 ,我們必須找到支持這兩種應用的不同工具或者同時支持這兩種應用的覆蓋率測試工具。
因為國內在這方面的資料很少,所以我們主要是通過訪問專業的測試論壇去獲取專業技術資料,同時借助事業部EPG提供的指導,掌握最新的動態來完成此工作。
三、實踐情況
我們研究了多款工具,最后發現有兩款工具適合做Web Script覆蓋率的收集工作。
1.AQTime
我們首先研究的第一款工具是AutomatedQA公司的AQTime。AQtime運行在windows平臺下,它支持.net應用和非.net應用,但不支持JAVA應用。測試.net應用需要Microsoft .NET Framework 1.x 或Microsoft .NET Framework 2.0的支持。
AQtime提供了如下的八種監測器:
Ø Performance:監測應用程序的執行情況,發現其瓶頸所在
Ø Allocation:監測應用程序的內存分配情況,分析是否有內存泄漏存在
Ø Resource:監測程序對Windows資源的占用情況
Ø Coverage:代碼覆蓋率監測
Ø Exception Tracer:監測程序運行中出現的異常,并在Event View面板中顯示該異常的堆棧調用情況
Ø Static Analysis:顯示程序中的函數依賴與調用關系
Ø Sequence Diagram Link :自動生成表明函數間調用關系的UML時序圖
Ø Platform Compliance :報告源程序中的API調用適用于哪些版本的Windows
我們通過使用發現,其中的Coverage監測器能夠進行ASP.net應用的覆蓋率的收集,而且使用起來十分方便,只要將服務端的DLL文件導入,然后打開瀏覽器,輸入網址,整個收集工作就開始了。而且生成的測試報告給出了覆蓋率數據,清晰地反映了每個函數的執行情況,包括哪些行執行到了,哪些行沒有執行到,分別執行了幾次等重要信息。 [Page]
用AQTime能夠收集服務端C#和VB.net代碼的覆蓋率,但是不能收集客戶端Script腳本的覆蓋率,同時導入的DLL文件需要編譯器的Debug信息。
2.Web Script Coverage
我們研究的另一款工具是DevPartner Studio的Web Script Coverage工具。該工具主要是收集Web客戶端Script腳本覆蓋率的。
它使用起來也很簡單,只要啟動此工具,然后在瀏覽器中 輸入網址,收集工作就開始了。在形成的測試報告中清楚地反映了每個函數的實行情況,給出了覆蓋率數據,同時對于執行到的腳本和未執行到的腳本用不同的顏色表示,十分明了。
該工具唯一的缺陷就是不能收集服務端腳本的覆蓋率,同時存在中文字符無法正確識別的問題。
總結這兩款工具的優缺點,最后我們根據我們的實際情況,提出了一個可行的Web Script覆蓋率收集方案。對于ASP.net應用,我們可以采用AQTime+Web Script Coverage相結合的方式,用AQTime收集服務端C#或者VB.net的覆蓋率,用Web Script Coverage收集客戶端Script的覆蓋率;對于JSP應用,對于客戶端的Script,仍然可以用Web Script Coverage去收集覆蓋率,但是對于服務端的Scriptlet目前還沒有一款很好的工具去收集其覆蓋率,分析Scriptlet中的腳本多是調用JavaBean中的方法,進行諸如數據庫連接、查詢和數據顯示的工作,所以測試的重點應該放在對JavaBean的測試方面
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/