張嘉杰



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