張嘉杰



摘要 為提高對營銷管理系統的測試效率,筆者使用QTP自動化測試軟件、VBS腳本語言等技術手段,開發自動化測試程序。程序采用模塊化設計,針對營銷管理系統的常用功能進行測試。
【關鍵詞】QTP 營銷 VBS
1 營銷管理系統
營銷管理系統是一款辦公自動化系統,其主要功能有整合客戶資源、策劃營銷活動、管理保單生命周期、管理保險出單全流程、服務產品化、集團一體化銷售、智能化銷售等。通過建立完整、準確的客戶數據集合,對多渠道、多來源數據進行清洗、整合,形成全公司唯一和權威的客戶數據庫。實現全國范圍內公司客戶資源的大集中、大整合,將分散于各個業務條線的客戶數據統一進行整合管理。
2 自動化測試
手工測試和自動化測試是常用的兩種測試方法。軟件測試的一個顯著特點是重復性,重復讓人產生厭倦的心理,重復使工作量倍增,因此,自動化測試可以用來解決重復的問題。自動化測試適宜用在需要重復執行機械化的界面操作、計算、數值比較、搜索等方面。測試人員應該充分利用自動化測試工具的高效率來完成一些基本的測試用例執行,從而實現更加快速的回歸測試,并且提高測試的覆蓋率。
3 開發過程
自動化測試的基礎是手工測試,而在手工測試之前,先要設計好測試用例和測試數據。結合自動化測試的優缺點,測試應該是針對系統較為穩定和核心的功能,根據實際業務操作流程,設計測試用例和數據,使用QTP軟件錄制整個操作流程,形成初步的測試腳本和對象庫。最后整理對象庫,重構優化測試腳本,形成最終版本的測試程序。整體開發過程如圖1所示。
4 測試數據
程序采用數據驅動的方式,良好的測試數據設計是測試程序開發的基礎。測試程序通過讀取測試數據中的是否測試字段,判斷是否進行相應功能模塊測試,從而達到測試數據控制測試流程走向的目的。另外,測試數據也用在測試過程當中信息的錄入。
5 對象庫
在完成測試腳本的錄制后,QTP會自動生成初步的對象庫,如圖2所示。
6 程序架構
根據實際業務情況,程序需要著重測試業務員使用頻率較高的報價、任務、流程功能。測試程序采用模塊化設計,遵循高內聚低耦合的原則,分成初始化模塊、主流程模塊、報價測試模塊、客戶測試模塊、流程測試模塊。程序采用數據驅動的方式,測試數據和程序代碼相分離,程序根據測試人員設計的測試數據來判斷執行邏輯,這樣可以很好地分離測試程序編寫人員和測試程序使用人員的工作。程序架構如圖3所示。
7 代碼介紹
根據程序架構,以下分別介紹各個功能模塊的關鍵代碼。
7.1 初始化模塊
初始化模塊主要完成程序環境的設置,如測試地址、用戶密碼、測試數據、日志文件等。初始化模塊顯示指定程序路徑,導入公共函數文件common.vbs,導入測試數據qtTestDataxls,指定并初始化Excel日志文件,根據公共函數文件提供的用戶名密碼,登錄系統。在完成對象庫的優化調整后,可以將其導出成對象庫文件,供每次測試時導入使用。
7.2 報價測試模塊
報價測試模塊根據導入的測試數據,錄入車輛、關系人、投保產品等信息,分別進行新車、轉保車、續保車的報價、轉投保、提交核保等操作測試。關鍵代碼如下所示:
Function maincourse(? )
If DataTable.Value(”報價”,”Global”)=”是”Then
Call readnextrow(0)
For i=jto sumAll
detaillog Null
Call deraillog2(“Pass”,”開始第“&i&”行報價測試”,“開始第”&i&”行報價測試:”&DataTable.Value(“說明”,“報價配置信息表”))
Call prepare(? )
If DataTable.Value(“報價配置名稱”,“報價配置信息表”)=“”Then
Exit For
End If
If DataTable.Value(“是否續保”,“報價配置信息表”)=“”Then
IfDataTable.Value(“傳統網銷”,“報價配置信息表”)=“傳統”Then
Call selectcar(? )
Call selectclient(? )
Call selectriskmain(? )
Call selectriskplus(? )
Call quoteproposal(? )
If flag=True then
sumPass=sumPass+l
else
sumFail=sumFail+l
End If
elself DataTable.Value(“傳統網銷”,“報價配置信息表”)=“網銷”Then
Call selectcar (? )
Call selectclient(? )
Call selectriskmain(? )
Call selectriskplus(? )
Call quotenetsale(? )
Iff[ag=True then
sumPass=sumPass+l
else
sumFail=sumFail+l
End If
End If
elself DataTable.Value(“是否續保”,“報價配置信息表”)=“是”Then renew()
quoteproposal()
If flag=True then
sumPass=sumPass+l
else
sumFail=sumFail+l
End If
End If
Call readnextrow(l)
fiag=False
Next
Call addsummary()
End If
End Function
7.3 客戶測試模塊
營銷管理系統給業務員提供導入客戶資料,并將客戶添加至營銷活動,用于跟進處理客戶投保情況的功能。相應地,客戶測試模塊針對此功能進行測試。關鍵代碼如下所示:
Function maincourse(? )
If DataTable.Value(“客 戶 導 入”,“Global”)=“是”Then
detaillog Null
detaillog”開始客戶導入測試”
Call Custlmp (? )
wait 2
Call CustSearch(? )
wait 2
Call Setlnvalid(? )
End If
End Function
測試模塊判斷如果進行客戶導入測試,則分別調用公共函數模塊中的客戶導入函數Custlmp()、客戶查找函數CustSearch()、置客戶狀態無效函數Setlnvalid()。
上述函數通過讀取初始化模塊導入的測試數據DaraTable,判斷應該進行怎樣的頁面操作。
7.4 流程測試模塊
營銷管理系統中的營銷活動任務跟進功能,是基于工作流程的,對于同一個工作流程,可以創建多個營銷活動,同時,系統提供工作流程的管理功能,如創建、修改、刪除等。流程測試模塊即針對此功能進行測試。關鍵代碼如下所示:
Function maincourse(? )
If DataTable.Value(“流程”,“Global”)=“是”Then
detaillog Null
detaillog“開始流程測試”
CalIAddProcess()
waitl
Call SearchProcess(? )
waitl
Call ModifyProcess(? )
waitl
Call DeleteProcess(? )
waitl
End If
End Function
測試模塊判斷如果進行流程測試,則分別調用公共函數模塊中的流程增加函數AddProcess(? )、流程查找函數SearchProcess(? )、流程修改函數ModifyProcess(? )、流程刪除函數DeleteProceSS(? )。
上述函數通過讀取初始化模塊導入的測試數據DataTable,判斷應該進行怎樣的頁面操作。
8 總結
根據實際工作需要,筆者使用QTP、VBS等技術手段,開發營銷管理系統自動化測試程序,用于替代部分手工測試。而在實際的開發過程當中,因為系統前臺頁面代碼編寫的不規范,筆者花費了較多時間在系統頁面元素識別的問題上,如頁面元素無法識別、重復頁面元素導致識別效率較低等,這從一個方面說明自動化測試程序的開發過程可以發現頁面代碼的開發問題,反向促成優化工作的開展。在完成程序的編寫工作后,筆者將其部署成每日執行的定時任務。經過一段時間的實際運行,程序運行情況良好,所設計的各個功能模塊很好地完成測試流程,并發現了各個被測功能的設計缺陷問題。限于筆者經驗所限,本文所述內容難免有錯漏之處,懇請同行批評指正。