我的測試歷程—QTP之狹義的數據驅動模型
07年我參加了軟件測試工程師培訓課程(課程中包含自動測試工具,功能:QTP,性能:LR),QTP課程主要講解了QTP的關鍵字視圖相關的內容(專家視圖部分沒有涉及),培訓完以后,我對QTP的認識是:QTP使用起來很簡單,就是一個錄制、回放(不通過就調試)、細化腳本、再回放(不通過就再調試)、出報告的過程,那時候對QTP的認識很膚淺,也和一些朋友一樣對QTP產生過類似的質疑:QTP能滿足實際項目包羅萬象的需求嗎?當時感覺QTP只能應用在主要流程的驗證上,而且沒有真正意義上做到測試的自動化(當然以上都是07年對QTP的認識)于是我停止了繼續深入學習QTP……
09年9月左右,由于項目人手少,測試時間又短,所以每次版本更新后,只對新增功能和相關模塊進行測試,而比較穩定的模塊只走一個正常流程(甚至時間太緊連正常流程也來不及走了),另外由于我所在項目和另外一個項目都是一個大項目的子項目,所以另外一個項目的修改也可能導致本項目的一些功能不可用,下面有個實際項目中遇到的例子:有一次另外那個項目修改了數據庫結構,數據庫中刪除了一個字段,導致我這個項目的一些特別穩定的功能中查詢該字段的所有地方都報“黃頁”(當然這些地方都做了安全處理,只拋了個自定義的頁面,沒有把代碼拋出來),當時嚇出了一身“冷汗”,還好每次更新我都會挑一些沒有修改模塊進行抽查,這次運氣好,剛好抽到了,俗話說:“吃一塹長一智”,就算完全沒有修改的模塊也應該驗證一下,但是目前的時間和人力只夠對新功能的測試,我又想到了QTP,于是我安裝了QTP,將老功能的業務流程錄制成腳本,每次更新后,跑一下流程,驗證一下老功能是否可用,成功案例:有一次QTP回放當中發現2個地方報“黃頁”,后來才知道是因為另外一個項目更新了WEBSERVICE,而我這個項目的那2個地方剛好要調用那個WEBSERVICE,所以會報錯,由于這一次的經歷讓我忽然對QTP產生了興趣,對QTP腳本進行了更深入的學習,從07年的完全自動錄制到現在的手動寫腳本,從腳本依賴對象庫到脫離對象庫,從求助別人到幫別人寫實際項目的自動化測試腳本,從各個測試腳本相互獨立,到自己編寫自動化測試框架……2個月前自己寫了個測試框架,實現了運行一個VBS腳本,就可以打開QTP(脫離對象庫)并按照CASE優先級從高到低運行所有需要運行的CASE,運行結束自動將結果寫入文件中……2個星期前重新設計框架提高腳本開發效率和簡單易用性。
下面寫下現在我對QTP的看法:在沒有接觸自動化測試框架之前,我所有的腳本都是都是相互獨立的,即:每個功能作為一個TESTCASE,這樣就導致每次都要手動把每個腳本運行一遍,然后看報告,感覺自動化一點也不自動化,而且腳本的可重用性也很不好。于是我就在想,怎樣才能做到真正意義上的自動化呢?可不可以通過運行一個驅動腳本打開QTP然后自動運行所有指定的腳本用例呢?后來在網上查了相關資料,開始自己搭建自動化測試框架:
我的第一個框架:由依賴對象庫到脫離對象庫,由自動錄制到手動編寫測試腳本。這個框架思想是學習于51
論壇中的《輕量級自動化測試框架》,只不過在此基礎添加了一些功能,比如用例執行優先級。當時覺得這個框架很好用,全部使用描述性編程這樣可以使用例不依賴對象庫運行,提高了腳本的可移植性,但是隨著對QTP認識的不斷的深入,漸漸的發現描述性編程的弊端:腳本開發效率太低,同樣開發一個測試腳本,完全使用描述性編程和自動錄制+手動增強腳本相比,錄制一個同樣的功能,需要的時間大約3-4倍,甚至更長,因為使用描述性編程需要對對象的各個屬性特別熟悉,另外完全使用描述性編程的調試效率也很低,使用哪些屬性作為識別該對象的依據又需要一個判斷過程,這樣都會降低測試腳本的開發效率,還有描述性編程對編程基礎有一定要求,所以我覺得腳本開發應該以自動錄制+手動增強腳本為主,以描述性編程為輔。因為在有的項目中有些步驟可能通過自動錄制是錄制不到的,這時候描述性編程就起到很好的輔助作用。
我的第二個框架:由脫離對象庫到依賴對象庫,由手動編寫測試腳本到自動錄制+手動增強腳本(以描述性編程為輔)。由于第一個框架的弊端,所以我在想怎樣避免這個弊端,提高腳本開發效率,自動錄制是開發腳本最快的一種方式,而且對腳本開發人員的要求很低,于是我開始把目光回歸到QTP這一最簡單最基本的功能上。開始設計一個屬于我們“菜鳥”的測試框架。(其中借鑒了《QTP項目應用與進階》中測試用例模板)
這個框架(相對于第一個框架)的優點:1、降低人員素質的要求,使用例的腳本開發人員不需要懂得太多QTP方面的專業知識,只要掌握簡單的錄制回放過程和腳本增強就可以,這樣避免有些人整天忙有些人“沒事”做了,從而達到資源的充分利用。2、提高腳本開發效率。
這個框架(相對于第一個框架)的缺點:調用外部ACTION相對復雜一點,需要明確知道該ACTION所在腳本的位置,不過這一點可以通過文檔解決這個問題,制作一個 ACTION列表就可以了。2、對象+
由于這個框架寫在了“丫頭”的畢業論文中,目前她還沒答辯,為了避免不必要的麻煩,所以這里就不詳細寫了(大家看了附件的框架實例就應該能明白我的思路了)本實例是使用QTP10.0錄制的,重點闡述的是一種思想,腳本中很多功能未加入。例如:自動加載插件的功能,不過大家可以自己加一下(QTP自動化對象模型參考中有加載插件的代碼),另外QTP版本比較低的朋友可以自己錄制下腳本替換掉Script文件夾下對應的腳本試下。若要設置腳本運行時QTP可見,可以將函數driver()中的qtapp.visible=False修改為qtapp.visible=True
最后,如果哪位朋友有什么好的建議或覺得哪里需要改進,可以給我留言,如果有時間我會試著改進一下,另外寫的不好的地方也請多多指正,謝謝!
向大家推薦2本QTP相關的很不錯書:
《QTP項目應用與進階》 E測工作室(風過無息、斐明哲、黃先容、韓柳、俞戴龍 化學工業出版社
《QTP自動化測試實踐》 陳能技 電子工業出版社
第一本書我買了而且前段時間看了,感覺很不錯,思路很清晰,而且包含編碼規范等自動化以外的的知識,感覺寫的蠻好的。
第二本書最近才了解到這本書,不過沒看過,朋友說很不錯,正打算買呢,另外看了作者博客里的資料,感覺寫的很好,所以就推薦大家看看,希望能對大家有所幫助,謝謝!
版權聲明:本文由會員 feiyunkai 首發于51Testing軟件測試論壇 [軟件測試新手上路] 版塊。
原創作品,轉載時請務必以超鏈接形式標明本文原始出處、作者信息和本聲明,否則將追究法律責任。
相關文章:
posted on 2013-09-29 10:32 順其自然EVO 閱讀(285) 評論(0) 編輯 收藏 所屬分類: qtp