何秋蕓
(廣州杰賽科技股份有限公司,廣東廣州,510310)
基于圖像處理提高GUI程序自動化測試效率
何秋蕓
(廣州杰賽科技股份有限公司,廣東廣州,510310)
隨著軟件系統的規模和復雜度的增加,軟件測試在軟件開發中的作用也越來越重要,強化和簡化軟件測試更利于軟件質量的提高。軟件測試自動化在軟件測試的地位越來越重要,自動化測試是降低測試成本的重要途徑之一,同時在自動化程度、測試覆蓋率、測試成本等方面都具有優勢。本文針對自動化測試過程中鼠標空點擊、錯誤點擊的現象,提出利用圖像處理技術來精確鎖定鼠標點擊位置,減少其空點擊、錯點擊的概率的方法;進一步提高軟件的測試質量和測試效率,對軟件自動化測試技術的深入研究具有一定的借鑒意義。
GUI應用程序;自動化測試;錄制回放;圖像處理;圖像分割
通常,在設計了測試用例并通過評審之后,由測試人員根據測試用例中描述的流程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬件資源,提高測試效率,便引入了自動化測試的概念;即把以人為驅動的測試行為轉化為機器執行的一種過程。
隨著軟件系統的規模和復雜度的增加,軟件測試在軟件開發中的作用也越來越重要,在保質保量地完成測試任務的同時、盡可能做到降低人力成本、縮短測試周期讓很多企業認識到了軟件測試自動化的重要性,并漸漸將其納入日常生產。
軟件測試的自動化是軟件測試的發展趨勢[1]軟件自動化測試是使用計算機執行測試行為的軟件測試技術,即通過自動測試工具或者用某種程序設計語言編制的自動測試程序,控制被測軟件中的各種類和對象,模擬手動測試步驟,完成測試工作[2]軟件自動化測試的實現離不開自動化測試工具的輔助比如:基于GUI應用程序自動化測試的類似方案有WinRunner、Rational Robot、Macro Recorder等自動化測試軟件;相對于手工測試來說 , 自測試工具具有如下優點。
(1)提高了測試效率
在軟件測試中對于回歸測試中的動作和用例是已經完全設計好的,同時可以完全預知測試期望和結果,從而可以極大提高測試效率,縮短回歸測試時間。
(2)可以運行更多更繁瑣的測試
許多不可能同時讓足夠多的測試人員同時進行測試的大量用戶測試,實行自動化測試可模擬出同一時間的許多用戶,更好的利用資源,同時達到測試的目的。
(3)具有一致性和可重復性
由于測試是自動執行的,每次測試的結果和執行的內容的一致性是可以得到保障的,從而達到測試的可重復效果。自動化測試還存在著復用性的優點,自動測試通常采用腳本技術,只需要對腳本做少量的甚至不做修改,實現在不同的測試過程中使用相同的用例。
本文在自動化測試工具的基礎上優化了鼠標點擊數據的保存和使用,進一步提高自動化測試質量和效率。該方法是基于圖像處理的為提高GUI應用程序自動化測試過程中鼠標點擊精確度的方法就是在這個場景下提出來的:在完成自動化測試腳本錄制的情況下,進一步提高腳本回放(重復測試)的有效執行率、減少鼠標無效點擊錯誤點擊事件的出現。
1.1 自動化測試腳本錄制和回放中圖像處理插件的詳細流程
目前的自動化測試軟件的自動化測試過程是:根據設計好的測試用例錄制好自動化測試腳本,然后使用錄制完成的腳本進行重復性測試;但在使用過程中發現:錄制好的腳本在回放過程中,鼠標空點擊、錯點擊經常出現;特別是回放過程中新窗口的絕對位置、窗口大小和錄制時的絕對位置、窗口大小不一致時,錄制腳本就失去了測試意義。
而現有的幾種相關的自動化測試工具或鼠標自動點擊工具,其鼠標的點擊位置確定是單一的參照物(基于桌面),所有當桌面大小發生變化或者彈出窗口位置發生變化時,制作好的腳本進行回放時就會出現無效點擊、錯誤點擊等狀況。
受限于錄制腳本時作者使用的算法:錄制過程中,鼠標點擊位置的坐標記錄可能是基于桌面(窗口)的絕對位置等。
本文的優化方法就是在窗口位置發生變化時、鼠標能夠找到變化后的相應點擊位置,以進一步提高回放腳本的有效執行率。
(1)腳本錄制過程中,遇到鼠標點擊事件時,調用本方法。
(2)本方法設計成一個獨立的模塊,只提供簡單的輸入和輸出接口,以方便加載到軟件的錄制功能模塊。
(3)本方法的流程是:根據輸入的窗口名稱、大小和鼠標點擊位置在窗口中的絕對位置;首先截取窗口圖像,分割出鼠標點擊位置所在的按鈕圖像,同時以相同大小分割出毗鄰按鈕圖像的上、下、左、右;然后根據圖像處理得出按鈕、上、下、左、右圖像的直方圖;最后輸出按鈕、上下左的直方圖數值備用。
(4)錄制完成后,在腳本回放過程中時,遇到鼠標點擊事件時,先驗證鼠標點擊所在按鈕的直方圖,如果一致(在誤差范圍內),就執行點擊;如果不一致,就進行圖像處理窗口,分割窗口截圖,找到其上、下、左的分割圖像都和對應鼠標操作的上、下、左的直方圖一致的分割圖像塊,然后返回其在窗口中的絕對位置;最后操作點擊操作。
1.2 圖像處理插件在自動化測試流程中的邏輯關系
圖像處理插件的關鍵點是在鼠標點擊事件發生前確認點擊位置的準確度,誤差過大時進行糾正處理,從而在保證鼠標點擊事件的有效性,進一步提高自動化測試的質量;圖二為圖像處理插件在錄制流程中的邏輯位置。

圖2 圖像處理插件在自動化測試中的邏輯位置

圖1 腳本錄制和回放時點擊事件的圖像處理插件的位置確認流程圖
軟件技術的發展迅速,針對現在程序的規模及復雜度,正確使用軟件測試工具可以增強軟件測試的自動化程度。借助自動化測試工具 , 可以助軟件開發和測試人員提高測試效率和軟件的質量[3],降低測試成本,更好地輔助完成軟件開發工作; 從而彌補手工測試時重復勞動的缺點。
自動化測試軟件有很多都是完整的開源軟件測試套件,具有腳本錄制功能,并且能很方便地將腳本轉換成編程語言,生成這些語言開發環境下的測試用例。本文通過研究自動化測試軟件的內部邏輯及其缺點,研究出基于圖像處理的在腳本回放過程中確認和糾正鼠標點擊位置的方法:根據多個分割圖像信息保存鼠標點擊位置的信息,在回放時根據多個分割圖像信息進一步確認(誤差過大時糾正)鼠標點擊位置,從而減少了自動化測試中腳本回放時鼠標無效點擊、錯誤點擊事件的發生,提高自動化測試的效率和質量。
[1]孫惠杰,楊曉紅.軟件測試的自動化[J].哈爾濱師范大學自然科學學報,2003,19( 5) : 47-49.
[2]宋波,張忠能.基于系統功能測試的軟件自動化測試可行性分析[J].計算機應用與軟件,2005,22( 12) :31-33.
[3]韓麗娜.黑盒測試及測試工具 Rational Robot 的應用[J].計算機工程與設計,2006,27( 2) : 359-361.
Improving the efficiency of GUI program’s automated testing by Image processing
He Qiuyun
(Guangzhou GCI Science & Technology Co., Ltd.,Guangzhou Guangdong,510310)
With the increasing of scale and complexity of software systems, software testing was becoming more and more important in software development, strengthened and simplified the software testing was more conducive for the improvement of software’s quality Automated Testing was important in software testing,Automated Testing was one of the important ways to reduce the test cost, at the same time had advantages in such aspects such as the degree of automation, test coverage, and test cost. For the empty click of the mouse in the process of automated testing, and the phenomenon of error click, the image processing technology was proposed to lock the mouse to click position precision, reduce the probability of the empty click,click on the wrong solution, improved the quality of software testing and test efficiency, in-depth study of software Automated Testing technology had a certain reference significance
GUI Application;Automated Testing;Record-Playback;Image Processing;Image Segmentation