最早接觸的自動化測試工具就是QTP和LoadRunner,其測試用例分別是:
QTP測試原理:
1.封裝被測對象到對象庫
2.對比對象庫里的對象屬性和運行時的真實被測對象的屬性
3.對比一致后找到相應的對象,按照腳本驅動對象
QTP多也是關注的是流程驅動,后來使用RIDE、 jmeter等工具進行自動化測試時,也多是流程驅動,但是流程驅動的話,有優點就有缺點,已固定的合法數據進行數據驅動,保證整個流程不會出錯或者報錯,但是對於功能點的測試則可能會造成流失,所以在一些bug修改或者是功能優化后,對於自動化腳本的維護成本較高。
從我自己的功能測試經驗來看,如果想將重復的功能進行自動化處理,重要的是功能細分,數據獨立,流程封裝這幾個方面。
功能細分:如果將功能模塊細分到一個組件,對一個組件的測試模型建立。
比如:對於內容文本輸入框的需求是:必須輸入數字,且值在0-100之間的整數,不能為空。
那么基於該頁面中對於該組件的測試數據有以下幾條:
1,只支持數字,輸入字符時應為無效,無論大小寫字符。
2,只支持數字,那么輸入特殊字符時,該輸入框應判定輸入的值為無效。
3,值在0-100之間的整數,那么輸入小數時,該輸入框應判定為該值無效。
4,值在0-100之間的整數,那么輸入小於0的負數時,該輸入框應判定該值為無效。
5,值在0-100之間的整數,那么輸入大於100的整數,該輸入框應判定該值為無效。
6,不能為空,那么輸入為空格時,該輸入框應判定該值為無效。
7,不能為空,那么該空格什么值都輸入時,該輸入框應判定該值為無效。
8,輸入合法數字,0-100 之間的任意整數(其中包括了邊界值等一些正常數據),保存后能正常保存到數據庫中。
譬如上述案例,將某一類組件獨立出來,可以將這些固定的判定數據作為一個獨立的方法,根據需求不同,而去選擇不同的方法。而對於此類功能的測試,僅需將該頁面中其他的組件進行“暫鎖”(輸入固定合法數據,或者某一組合法數據,在執行中可選項順序,隨機,唯一執行方式),然后僅修改該模塊的功能。執行該自動化程序,實現對某個功能模塊的自動化測試。
數據獨立:將可參數化的數據進行獨立,無論是從數據庫中、Excel等文檔工具或者是自動化工具本身的取數工具,一般自動化腳本在執行時,需在過程中調用,然后執行,數據獨立是指,在流程或者測試點執行之前,將數據從數據庫、Excel文檔工具或者自動化自身數據庫工具中取出來,放到一個容器中,那么在執行的時候,無需多次調用相應接口程序,對於執行過程中產生的數據也能有一個預判。其實數據獨立多用於 “合法性”數據。因為非法數據應有獨立的校驗,應在組件中進行校驗。
另一個數據獨立的好處在於,在執行檢查點的檢查時,有對比數據,校驗起來比較方便。
流程封裝:流程的封裝,主要是針對關聯頁面,無論是在過程中需進行上下級審批得流程,或者單證制作關聯的審批(兩個或者多個關聯頁面)。將流程分為節點進行封裝,每個節點取其可操作節點的按鈕(每個頁面在執行結束后都有一個對節點的可操作按鈕:比如下一步、上一步、保存、取消等)。在某一個節點需校驗頁面數據的正確性(從制作頁面帶到查看頁面或者審批頁面的數據的正確性),還需校驗節點的可操作按鈕的正確性(進行下一步操作后,是否進入下一個頁面,進行取消后,頁面是否消失,數據庫數據是否還原等)。
所以在做流程封裝時,將某個頁面進行獨立封裝(頁面所有可操作組件),可操作按鈕做為單獨的接口等待調用,根據分列出的場景不同,調用不同的接口,完成測試。
將上面頁面中的“請假原因描述”、“請假類型”、“請假天數”、“請假時間”、“審批人”,封裝為一個測試模塊,制作頁面中,校驗控件的合法性,查看和審批頁面中,校驗控件的正確性。然后,單獨把頁面中“保存”、“提交”、“取消”作為一個測試類,在該類中分別檢查對應的操作所產生的結果。