【前言】
網上看到很多關于用qtp、winrunner等工具來進行頁面自動化測試的應用,但隨著軟件產業的發展,越來越多更大型的系統得到應用,隨之變化的就是后臺的變換,比如unix、linux、solaris、aix等。早期的很多系統都是基于windows server的應用和部署,qtp等工具很好的解決了自動化回歸測試的問題,但對于unix平臺下的測試,它就有點無能為力。而截止目前,還沒有出現unix下的自動化回歸測試工具,所以,我們工作中的自動化測試工具或腳本都是自己分析、設計、編碼和測試,最終達到我們自己測試的需求,目的就是要提高在后臺測試工作中的效率,讓計算機幫我們完成大部分的手工勞動。筆者根據工作的過程和體會,把工作中unix平臺下自動化測試應用的經驗跟大家分享,希望能夠起到拋磚引玉的效果。閑話少說,我們“挨踢”人喜歡直接,還是用例子來說明一下。
【舉例1】
背景:
某應用系統T作為一個信息處理平臺,要接收處理各種外部系統的電子單,而這種電子單是根據一定協議進行發送和接收、并處理返回的,但這種協議不是基于通用的TCP、UDP等協議,是各系統之間統一定制的特殊行業協議。而在這種電子單中,包含了各種各樣的業務信息,系統會根據這些不同的信息進行不同的處理,得到的處理結果自然也是不同的。
應用系統T的前身是應用系統N,系統N所管理的外部系統比較分散,所用的協議與系統T也有差別,但有一個共同點就是,它們對于同樣的業務信息所處理的結果應是一樣,而且都會持久化保存數據庫。下面的圖是系統T的大概業務邏輯圖:
工作平臺:
OS:HP_UNIX
DB:Sybase
WebService:Tomcat
Develop Language:Java
測試工作場景:
1、 按照不同業務制造大量電子單,然后發送到系統T的指定端口;
2、 發送電子單后,將系統T執行的結果與系統N的結果進行對比,檢查系統T的結果是否執行正確;
測試困難分析:
1、 我們沒有外部系統,如何模擬外部系統發送電子單?
2、 系統T管理了7中業務類型,而每種業務類型大概有100種業務,如果全部覆蓋,大概需要700多條測試數據,手工制作不太現實;
3、 大量的電子單的處理結果,難道都用肉眼比對?
需求分析:
1、 編寫模擬外部系統的發單客戶端(基于socket協議);
2、 使用系統N的海量電子單,然后按系統T的協議進行轉換,用第一步的客戶端發送(能保證覆蓋所有業務);
3、 編寫程序,對系統N的處理結果和系統T的處理結果進行比對,然后打印出詳細的對比結果,以供開發員定位錯誤問題所在;
工具實現步驟:
1、 由于開發平臺都是java,為了跟系統T銜接的更好,我們選用java編寫自動化測試工具。當然,測試工具編寫人要對Java比較熟悉;
2、 對于需求1,我們需要知道如何進行socket數據的收發(網上資源大把,可以參考);
3、 對于需求2,我們需要知道如何進行數據庫的操作(JDBC資源網上也是大把)。數據庫操作的目的,就是要從系統N的數據庫中把舊的電子單取出來;
4、 對于需求3,在基于上面的第2和第3點上,當電子單發送后,系統T中會記錄處理結果,然后就是要編寫算法,對新舊結果進行比對;
5、 對于測試工具還應該實現可配置化,比如服務器IP、服務端口,舊數據庫的IP、用戶名、密碼,新數據庫的IP、用戶名、密碼,業務類型等,這就要求引入第三方的jar包,對xml文件進行解析;
原文轉自:http://www.anti-gravitydesign.com