FineArt News

軟體系統自動化測試取代人工測試

在軟體測試中,自動化測試指的是使用獨立於待測軟體的其他軟體來自動執行測試、比較實際結果與預期並生成測試的過程。在測試流程確定後,測試自動化可以自動執行的一些重複但必要的測試工作;也可以完成手動測試無法達成的測試。對於持續交付和持續整合的開發方式而言,測試自動化是至關重要的。

上述說明的重點有下面 3方面:

  1. 自動化測試工具,和待測的軟體,是 2 個不同的軟體
  2. 測試流程必須先行確定
  3. 自動化測試,可以取代人工測試重複但必要的動作

 

如何選擇自動化測試系統

自動化測試工具有很多種,很難有一種工具能滿足所有的需求,一般來說,我們在選擇自動化測試系統時,有下面的考慮。

  1. 待測程式的形態: Web APP,Windows APP,Android APP
  2. 待測程式適用平台: Windows,Android,iOS,LINUX,AZURE
  3. 操作自動化測試人員: 測試人員,程式設計師
  4. 自動化測試的案例,在那些條件下案例需要重工,如果重工多,代表示案例沒效率,我們會考慮投資自動化測試是否划算 ?
  5. 多久可以產生一個自動化測試的案例 ( 生產效益不能太差 )
  6. 待測程式支援多國語系? 例如: 中文繁體,日文,英文
  7. 是否結合產品版本控管 ? 例如: 偵測版本異動時,自動在晚上進行測試


自動化測試適合那些情境

有些情境適合自動化測試,因為只要測試的機台夠多,就可以大量的取代人工測試,所以很多公司都安排每天晚上進行自動化測試,第 2 天再將測試結果告知研發人員,研發人員也可以知道昨天的程式修正,是否有產生降級問題 ( 降級問題: 是指之前版本的功能正確,但新版本功能錯誤 ) 。

  1. 功能對應的測試流程已經確定 >  我們可以反覆使用此流程,驗證功能是否正確
  2. 需多人同時操作的壓力測試 > 例如: 千人同時登入網頁

 

自動化測試不適合那些情境

有些情境不適合自動化測試,最常見的情況是測試流程未能確定,例如: 新功能開發後,測試此新功能的流程,還未成熟,此時,如果將不成熟的測試流程,納入自動化測試的案例中,可能會導致此案例多次的進行重工,而每次重工自動化測試的案例,會造成不必要的人力浪費。,在操作上判斷正確的步驟。而且隨機測試的結果,也除此之外自由的隨機測試 ( 就是俗稱的 Monkey Test ),通常也不適合自動化測試,主要的原因是自動化測試系統通常沒有這聰明;無法模擬人的邏輯可能造成測試結果不穩定。

 

自動化測試的技術分類

不同的自動化測試工具,可能使用不同的技術,這些技術各有優、劣點。而自動化測試工具最重要的技術,就是如何模擬測試人員,精確定位每一次的操作步驟。例如: 使用檔案總管,Double Click C:\A.TXT,這樣簡單的動作,在我們來說,很容易使用滑鼠達成,但是自動化測試工具要如何做呢 ?

第 1 步,定位檔案總管的ICON 位置,將滑鼠移到 ICON上面,送出Double Click,啟動檔案總管
第 2 步,定位檔案總管的左方位置,例如: Windows(C) ,送出Click
第 3 步,定位檔案總管的右方 A.TXT 的位置,送出Double Click

 

上述說明,我們可知自動化測試,要先定位好位置,才能模擬人類使用滑鼠及鍵盤的動作

  • 定位方法 1 : 微軟的 UI Automation

    如果您的程式 A.EXE 是使用 Visual Studio開發,那就可以使用 Microsoft UI Automation。
    UI Automation 提供了一致的物件模型,可讓自動化測試系統透過 UI Automation API 存取 A.EXE 上所有的 UI 介面,例如: 我們設計在A.EXE 上的元件: 像是視窗、List Box、Comb Box…等,雖然我們在設計時,並未特別處理,但是 Visual Studio 會自動將這些元件的訊息存取起來,而自動化測試系統可以識別這些訊息,並且透過 UI Automation API定位這些元件。
  • 定位方法 2: 使用滑鼠、鍵盤的錄制及播放

    這方法最簡單,將使用者操作的滑鼠、鍵盤軌跡,記錄下來,然後重新播放相同的動作。
    通常來說,自動化測試儘量不用此種方案,因為 OS 的解析度,OS 更改版本,甚至待測程式的改版,都有可能會因為UI 的位置改變,而造成測試案例須要重工的情形,如果重工量太大,還不如人工測試,就會造成投資報酬率太低,最後大家都不想用自動化測試了。

  • 定位方法 3: 使用 OCR 定位字串

    這方法,主要是截取螢幕上的畫面,進行 OCR 辨識成字串,搜尋螢幕上 UI 的字串,使用字串位置來定位 ( 假設 UI 變動時,字串內容的變動較少 ),通常來說,如果 OCR 做得好,是不錯的定位方法,可惜的是,通常英文都辨識得不錯,但中文則慘不忍睹。

  • 定位方法 4: 使用影像的截圖,做為定位

    常見是 Sikuli ( SikuliX ),Sikuli 是一種可視化技術,它可以用在一個圖形用戶界面 ( GUI ) 上進行自動化的操作和測試。
    而 Sikuli 腳本就是實現這一過程的一種腳本語言。
    它透過截圖來識別需要操作的圖形界面組件,再透過 Jython 來完成操作動作從而實現自動化的操作( 或者測試 )。說得簡單一點,Sikuli 就是能通過截圖幫助我們自動操作電腦的一種便利方式。

 

我們說明選擇自動化測試系統要考慮的條件,而且說明了自動化測試的限制,有些情況下可以取代人工測試,有些情況則不行。自動化測試系統中的最重要的技術,定義待測程式的UI 技術,進行分析及介紹。也透過這些方式模擬使用者操作行為,加速驗證。