邱長云
摘要:如今,軟件應用范圍變得越來越廣泛,軟件結構也變得更加的復雜。在這種情況下,要確保軟件產(chǎn)品的質(zhì)量,就必須要對軟件進行測試。自動化測試因為有著高效率、低成本的優(yōu)勢得到了推廣。該文主要針對基于WPF的UI自動化測試系統(tǒng)進行介紹。
關鍵詞:WPF;UI;自動化測試系統(tǒng)
中圖分類號:TP311 文獻標識碼:A
隨著計算機技術的迅速發(fā)展,軟件的應用范圍越來越廣泛,軟件結構也越來越復雜。為了保證軟件產(chǎn)品的質(zhì)量,軟件測試特別是自動化測試越來越受到人們的重視。自動化測試的最大優(yōu)勢就是高效率、低成本,但是自動化測試如果沒有經(jīng)過良好設計,不但耗資大,而且后續(xù)還有大量的維護工作。而設計良好的自動化測試框架不但維護成本低。而且效率很高。因此對自動化測試框架的研究具有很重要的意義。
目前市面上免費和商業(yè)的自動化測試系統(tǒng)對WPF應用程序的支持存在一些難以解決的問題以及使用不方便的問題,比如等待時間難以判斷,錄制過程不可靠以及操作繁雜,執(zhí)行過程中性能低等問題。本文試圖對其中一些具體問題提出具體的解決方案。
1對比分析
對于支持WPF應用程序的自動化測試系統(tǒng),我調(diào)研了商業(yè)收費的QTP和免費的CodedUI這兩套UI自動化測試系統(tǒng),發(fā)現(xiàn)它們普遍存在部分控件無法識別,開發(fā)和維護用例成本較高等問題,為了解決這些問題,我對現(xiàn)有的基于WPF的自動化測試技術進行研究,結合實際的測試項目,探索出了一套全新的基于WPF的接口UI自動化測試框架的方案設計和實現(xiàn)。
可以看出無論是QTP和Coded UI,在WPF應用程序的自動化測試方面對于一些基礎功能都有一定的支持,QTP相對而言走的更遠一些。但是兩者都存在一些缺陷,QTP存在著一些致命的情況,比如運行過程中不穩(wěn)定,錄制過程中不穩(wěn)定等;Coded UI存在運行不穩(wěn)定,發(fā)現(xiàn)的問題調(diào)試代價高等缺陷。
2功能設計
而我們自主研發(fā)一套基于WPF的接口UI自動化測試系統(tǒng),需要克服它們的缺陷,同時需要具備如下功能:
1)初始化自動化測試環(huán)境。
2)生成測試用例,錄制參數(shù),添加檢查點。
3)調(diào)度執(zhí)行自動化測試用例。
4)實時監(jiān)測和記錄當前自動化測試用例執(zhí)行情況和整體狀態(tài)。
5)輸出日志,截屏信息,運行結果,清理執(zhí)行現(xiàn)場緩存文件。
6)設置,包括超時時間,截屏信息輸出路徑等。
7)測試用例備份和恢復,上傳和下載。
3總體架構設計
框架開發(fā)語言使用C#,界面使用WPF,數(shù)據(jù)庫選型使用免費的MySql,同時為了提高開發(fā)效率,也為了后期能夠方便切換數(shù)據(jù)庫,使用了.NET提供的EntityFramework來進行數(shù)據(jù)庫的接口的封裝。
這些功能中,“調(diào)度執(zhí)行自動化測試用例”是屬于這個系統(tǒng)的最關鍵的功能。
3.1系統(tǒng)架構
Containee是一個可執(zhí)行程序進程,CaseTool,Driver,Appl,App2等模塊最后最終都在Containee進程內(nèi)執(zhí)行。Containee之間的交互可以通過Socket通信來完成。
3.2測試用例管理模塊
CaseTool是測試用例管理工具,其中的功能有生成測試用例,添加檢查點,設置超時時間,截屏信息輸出路徑等,測試用例備份和恢復,上傳和下載。其中如何生成測試用例是比較重要的功能。這個可以借鑒當前QTP或者CodedUI的實現(xiàn)然后改進。通過分析基于CodedUI錄制的用例可以發(fā)現(xiàn),CodedUI記錄的是用戶每次操作的絕對坐標值,所以可以改進的一個方向是記錄對于當前操作控件的相對坐標值。