自己動手寫Web自動化測試框架(6):自動化測試框架的規劃

Just4life發表於2013-07-31
這篇開始,我們正式進入自動化測試框架的編寫中。

  首先我們先進行需求分析:我們到底要什麼樣的自動化測試框架?

  正如第一篇《自己動手寫Web自動化測試框架(1):概述》 中提到的,我們要做的是一個簡單的自動化測試框架,沒有Ajax,沒有框架,沒有Windows對話方塊,我們捨棄這些較為複雜的功能,目的就在於,我們想要把注意力集中在自動化測試框架的架構上,以後我們可以慢慢加入這些功能,但是第一次,我們不要。

  這裡規劃一下,我們想要的自動化測試框架是什麼樣子的,那麼要從我們的自動化測試說起了。自動化測試程式碼一般是在什麼時候寫的呢?在微軟裡,自動化測試程式碼應該和被測試的網站的程式碼同步開發,因為有了Spec(Specification),我們就可以根據Spec來測試用例,然後把我們認為重要的,必須經常重複的用例自動化起來。

  但是問題在於,我們在沒有網站的情況下,如何進行自動化測試的開發呢?我們面臨的困難主要有以下的方面:

  * 沒有網站,就沒有網頁元素的ID之類的標識,沒有辦法按照上面的辦法獲取我們想要的網頁元素。

  * 網站建設初期,頁面元素不穩定,一個小小的ID的變更就可以使我們的自動化程式碼變的無用。

  * 即使是頁面元素不變,一個小小的業務邏輯的改變,也可能會很大的影響到我們的自動化測試程式碼。

  我們的自動化測試框架,一定要可以比較好的解決上面的問題。

  我想很多的讀者已經明白了,我們要做的就是把網頁的元素和網站的業務邏輯分開,這樣就可以比較好的解決這些問題。

  我們最終的目標是在一個類裡面去定義整個網站的架構,比如這個網頁上有一個文字框,有幾個按鈕。就像下面的這段程式碼:

public class Baidu
{
  WebBrowser wb = new WebBrowser("www.baidu.com");
  private Button submit;
  private TextBox keyword;
  public Button Submit
  {
    get{
      if (submit == null)
      {
        submit = new Button(wb, "sb");
      }
      return submit;
    }
  }

  public TextBox Keyword
  {
    get
    {
      if (keyword == null)
      {
        keyword = new TextBox(wb, "kw");
      }
      return keyword;
    }
  }
}

  上面的程式碼,我們定義了兩個屬性,一個是Button Submit,另一個是Textbox Keyword。這兩個屬性定義了百度首頁的兩個最重要的元素,我們也可以定義更多的比如登入的HyperLink或者其他的一些元素,但是我們現在以這個為例子來定義。

 

這裡的程式碼定義並不是最簡單的,讀者完全可以通過自己的努力對測試框架進行修改,把這個程式碼做到更簡單,不過我們這裡以這個程式碼為例,來講述自動化測試框架的架構等比較高層的東西。我們可以以後來細化這裡。

  經過以上的定義,我們的業務邏輯程式碼就可以被簡略到如下的語句:

 

Baidu b = new Baidu();
b.Keyword.Text = "生生不息";
b.Submit.Click();

  這裡我想很簡單,就是我們開啟一個百度的例項,然後輸入生生不息,然後點搜尋按鈕。我們以後還可以更多的建模,把驗證也放在裡面。

  怎麼樣?如果我們的的自動化測試框架可以達到這樣的效果,我們就可以很好的解決上面提出的問題,當Web的開發還沒有完全成型的時候,我們可以定義頁面的元素,空著ID不填,然後把業務邏輯做好,一旦Web開發完成,我們只需要填補上網頁元素的定義,自動化測試程式碼就可以完成。

  是不是已經摩拳擦掌了?我們從下一節開始,自動動手來做出這樣一個自動化的測試框架來。

 

相關文章