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