• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件自動化測試腳本的編寫方法

    發表于:2011-06-16來源:未知作者:娃娃點擊數: 標簽:軟件測試自動化測試
    軟件自動化測試項目也像普通的軟件開發項目一樣,有編碼階段,自動化測試的編碼階段主要是編寫測試腳本實現所設計的自動化測試用例。自動化功能測試腳本地開發方法主要有以下幾種:1.線性的 2.結構化的 3.共享的 4.數據驅動的 5.關鍵字驅動的 線性腳本

     

      自動化測試項目也像普通的軟件開發項目一樣,有編碼階段,自動化測試的編碼階段主要是編寫測試腳本實現所設計的自動化測試用例。自動化功能測試腳本地開發方法主要有以下幾種:1.線性的 2.結構化的 3.共享的 4.數據驅動的 5.關鍵字驅動的

      線性腳本的編寫方法是使用簡單的錄制回放的方法,測試工程師使用這種方法來自動化地測試系統的流程或某些系統測試用例。它可能包含某些多余的、有時候并不需要的函數腳本。

      結構化腳本編寫方法在腳本中使用結構控制。結構控制讓測試人員可以控制測試腳本,或測試用例的流程。在腳本中,典型的結構控制是使用“if-else”,“switch”,“for”,“while”等條件狀態語句來幫助實現判定、實現某些循環任務、調用其他覆蓋普遍功能的函數。

      共享腳本編寫方法是把代表應用程序行為的腳本在其他腳本之間共享。這意味著把被測應用程序的公共的、普遍的功能的測試腳本獨立出來,其他腳本對其進行調用。這使得某些腳本按照普遍功能劃分來標準化、組件化。這種腳本甚至也可以使用在被測系統之外的其它軟件應用系統。

      數據驅動腳本編寫方法把數據從腳本分離出去,存儲在外部的文件中。這樣,腳本就只包含編程代碼了。這在測試運行時要改變數據的情況下時是需要的。這樣,腳本在測試數據改變是不需要修改代碼。有時候,測試的期待結果值也可以跟測試輸入數據一起存儲在數據文件中。

      關鍵字驅動腳本編寫方法把檢查點和執行操作的控制都維護在外部數據文件。因此,測試數據和測試的操作序列控制都是在外部文件中設計好的,除了常規的腳步外,還需要額外的庫來翻譯數據。關鍵字驅動腳本編寫方法是數據驅動測試方法的擴展。

      總結起來看,對于開發的成本來說,隨著腳本編寫方法從線性倒關鍵字驅動的改變而不斷地增加;對于維護成本來說,隨著腳本編寫方法從線性倒關鍵字驅動的改變而在下降。對于編程技能要求來講,隨著腳本編寫方法從線性倒關鍵字驅動的改變,對一個測試員的變成熟練程度的要求在增加。對于設計和管理的需要來說,隨著腳本編寫方法從線性倒關鍵字驅動的改變,設計和管理自動化測試項目的要求在增加。因此,應該合理地選擇自動化測試腳本開發方法,在適當的時候,使用適當的腳本開發方法。

      第一、最典型的就是消息驅動,自動化工具通過腳本錄制和編寫,保存為測試腳本。在回放的過程中,將這些腳本轉換成為Windows消息,發送給我們應用程序的窗體和各種控件。

      這種方式的好處在于,自動化工具和應用程序之間能夠做到完全的隔離。但是,由于使用了Windows消息,它也擁有了一個非常致命的缺點。那就是消息隊列的異步性與程序的順序性之間的矛盾。很多消息發送給了應用程序,但是應用程序的處理可能已經和消息隊列錯位了。有一些關于代碼的時間片等待,就是因為這個問題。

      另外,就是由于完全的隔離,對于操縱控件數據的能力大大降低。畢竟,擁有大量數據的控件都不是標準控件。

      第二、嵌入式。TestComplete就是這類工具。它有支持不同語言的版本。大概思路,就是在程序編譯的時候,注入自己的控件代理。腳本的回放,直接可以通過代理,操縱到應用程序。

      可惜的是,這類軟件開發的時候,更多的是考慮平臺的兼容性。對于特有平臺上的支持不是十分完美。特別是對自定義控件(比如Delphi中,除了VCL的標準控件)支持也沒有做到最好。不過,我這里必須承認,TC的內部實現機制可能十分強大,我不能窺探所有。如果有人清晰,可以指點一二。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>