一、線性腳本
線性腳本的優點:
1.線性腳本不需要深入的工作或計划,只需坐在計算機前利用自動化測試工具錄制手工測試任務即可。
2.線性腳本可以快速開始自動化,測試工程師只需理解測試流程即可開展自動化測試工作,同時也是樹立測試工程師開始對自動化感興趣最快速的方法和技術。
3.線性腳本對實際執行操作可以進行審計跟蹤。
4.使用線性腳本技術,用戶不必是編程人員(假設不需修改腳本,用戶不必關心腳本本身)。
5.線性腳本提供良好的演示效果。
線性腳本的缺點:
1.過程繁瑣:產生可行的自動化測試(包括比較)的時間比運行手工測試要長2到10倍。
2.一切都依賴於每次測試所捕獲的內容。
3.測試輸入和比較,以及測試的數據和業務都是‘捆綁’在腳本中的,不便於修改測試數據和測試步驟。
4.腳本不能共享和重用。
5.由於線性腳本要求測試的對象相對比較的固定,因此容易受軟件變化的影響。
6.線性腳本修改代價大(維護成本高)。
7.如果回放腳本時發生了錄制腳本時沒有發生的事情,如來自網絡的意外錯誤消息,腳本很容易與被測試軟件發生沖突,引起整個測試失敗。
線性腳本的適用范圍:
1.當測試事例只使用一次時,則無需對將要丟棄的腳本花費太多的功夫,線性腳本便非常方便使用。
2.線性腳本適合在做培訓或演示時,可以回放錄制好的腳本來代替擊鍵動作。
3.線性腳本可以用於轉換。如系統的某一部分發生變化,但從用戶的角度不能影響系統的工作,可以錄制有用數據,替換軟件或硬件,然后回放錄制過程可以使新系統恢復到初始狀態。
4.線性腳本可以用自動編輯來修改自動測試,任何特定的修改只做一次,因此一次性的腳本足以滿足需求。
5.線性腳本可用於設置和清除測試,通過回放輸入序列操作文件或數據庫進行相應的記錄的設置和清除。
二、結構化腳本
目前所有測試腳本支持三種基本控制結構如下:
順序結構(即前面的線性腳本,依次執行每行的指令)。
選擇結構:使腳本具有判斷功能,即加入類似“if,switch”類型的語句來使腳本的執行具有跳躍能力,按照判斷條件執行相關的指令。
疊代/循環結構:可以根據需要重復執行一個或多個指令序列如加入像“for,while”等語句。
結構化腳本類似於結構化程序設計,腳本中含有控制腳本執行的指令,這些指令或為控制結構或為調用結構。結構化腳本可以進行嵌套調用另一個腳本,執行完后在返回到當前腳本。
結構化腳本的優點:
1.結構化腳本健壯性更好,對一些容易導致測試失敗的特殊情況和測試中出現的異常情況可以進行相應的處理。
2.結構化腳本可以像函數一樣作為模塊被其他腳本調用或使用。
3.結構化腳本可以提高腳本的重用性和靈活性,使得代碼易於維護,可以更好的支持自動化測試。
結構化腳本的缺點:
1.腳本變得非常復雜,在一定程度上增加了另外的維護工作量。
2.腳本還是在錄/播的基礎上實現的,因此腳本內仍然捆綁着測試的數據和邏輯,即鍵盤、鼠標動作表示的輸入被固化在腳本中,測試修改和定制非常復雜困難。
三、共享腳本
共 享腳本意味着腳本可以被多個測試事例使用,即腳本語言允許一個腳本被另一個腳本調用,這樣可以節省生成腳本的時間。當重復任務發生變化時,只需修改一個腳 本。共享腳本可以是在不同主機、不同系統之間共享腳本,也可以是在同一主機、同一系統之間共享腳本。此腳本開發的思路是產生一個執行某種任務的腳本,而不 同的測試要重復這個任務,當要執行這個任務時只要在適當的地方調用這個腳本便可以了。
共享腳本的優點:
1.共享腳本使得實現類似的測試花費的開銷較少。
2.共享腳本的維護開銷低於線性和結構化腳本。
3.共享腳本中刪除明顯的重復代碼,這樣代碼更加簡潔易懂。
4.可以在共享腳本中增加更智能的功能,如認為的等待一定時間再次運行某個功能。
共享腳本的缺點:
1.需要跟蹤更多的腳本、文檔、名字以及存儲。如果管理不好,很難找出適合的腳本。
2.對於每個測試用例仍需一個特定的測試腳本,因此維護成本比較高。
3.共享腳本通常是針對測試軟件的某一部分,不能實現真正意義上的共享。
共 享腳本的編寫需要更高的編程技能,提高了對測試工程師的要求數據驅動腳本是當前廣泛應用的自動化測試腳本技術,它是將測試輸入數據存儲在數據文件里,而不 是繼續放在腳本本身里面。腳本里只存放控制信息,執行測試時,從文件中而不是從腳本中讀取數據輸入,從而使得同一個腳本可以執行不同的測試,實現了數據與 腳本的分離,但測試邏輯依然與腳本捆綁在一起。
四、數據驅動腳本
數據驅動腳本的優點:
1.在數據驅動腳本的層次上,自動化測試可以真正從中獲益,可以以較小的額外開銷實現很多測試事例的自動化,不需要編寫更多的腳本。
2.在數據驅動腳本中,數據文件的格式對於測試者而言非常易於處理,甚至可以在數據配置文件里添加很多方便維護的注釋來增加數據的可理解性。
3.數據驅動腳本技術使得測試工程師可以將更多的時間和精力放在自動化測試和維護測試上。
4.數據驅動腳本技術對於測試事例的數據輸入和維護帶來了極大的方便。
5.在數據驅動腳本中,甚至連期望結果都可以從腳本中提取出來,使得腳本的維護工作變得更為簡單。
6.對於一組功能強大靈活的數據驅動腳本,測試者本人甚至不需具有腳本編程技能,而只需掌握數據文件的配置方法,便可輕松的使用腳本完成自己的測試
數據驅動腳本的缺點:
1.需要具有一定編程背景知識的人員加入到腳本編寫里面。
2.因為腳本變得邏輯性更強,引入更多的控制指令,初始腳本建立時間和開銷較大。
3.如果開發出的腳本不規范,則后期的管理和維護會帶來巨大的工作量,對於測試工程本人來說需要的技能也更高。
五、關鍵字驅動腳本
關鍵字驅動腳本實際上是較復雜的數據驅動腳本的邏輯擴展。數據驅動腳
本 的限制是每個測試事例執行的導航和操作必須一樣,測試的邏輯知識建立在數據文件和控制腳本中。關鍵字驅動腳本將數據文件變為測試事例的描述,用一系列關鍵 字指定要執行的任務。關鍵字驅動腳本的一個特點是它看起來更像描述一個測試事例做什么,而不是如何做。前面四種腳本是說明性方法的腳本,只有關鍵字驅動腳 本是描述性方法,因而它更容易理解。描述性方法是將被測軟件的知識建立在測試自動化環境中,相關的知識包含在支持腳本中,這些支持腳本了解被測軟件,但是 不需要了解測試事例。
核心思想為三個分離
1)界面元素名與測試內部對象名的分離在被測應用程序和錄制生成的測試腳本之間增加一個抽象層,它可以將界面上的所有元素映射成相對應的一個邏輯對象,測試針對這些邏輯對象進行,界面元素的改變只會影響映射表,而不會影響測試。
2)測試描述與具體實現細節的分離
把測試描述和測試的具體實現細節分離開來。測試描述只說明軟件測試要做什么以及期待什么樣的結果,而不管怎樣執行測試或怎樣證實結果。這樣做是因為測試的實現細節通常與特定的平台以及特定的測試執行工具有着密切的聯系。這種分離使得測試描述對於應用實現細節是不敏感的,而且有利於測試在工具和平台間的移植。
3)腳本與數據的分離 最后,可以把測試執行過程中所
需的測試數據從腳本中提取出來,在運行時測試腳本再從數據存放處讀取預先定制好的數據,這樣腳本和數據可以獨立維護。
以上這三個分離各司其職、互相獨立,最大程度地減少相互之間的影響。從關鍵字驅動的思想可以看出,該種測試框架不僅實現了將數據和腳本相分離,而且實現了測試邏輯和數據的分離,大大提高了腳本的復用度和維護性,從而更大限度地實現了測試工具的自動化
根據測試用例得出自動化測試框架的典型要素
1)公用的環境
不同測試用例也會用到相同的測試環境,將該測試環境獨立封裝,在各個測試用例中靈活調用,可以增強腳本的可維護性。
2)公用的對象
成功的框架開發需要確定領域專用的“熱點”(Hot spot)。所以在開發過程中必然存在大量相同的對象(如窗口、按鈕、頁面等)。將對象抽取出來形成一個獨立的可重用強的個體,當對象的屬性需要變更時做到只需修改對象屬性而無需修改腳本。
3)公用的方法
將方法封裝成獨立的函數,通過參數的形式調用,盡量做到和數據無關。