摘要:Lotus Domino系統是一種廣泛應用的郵件服務器,Trend Micro郵件掃描系統提供對Lotus Domino服務器的實時保護。該文提出了一種自動化測試方案,利用Lotus Domino系統提供的接口開發出自動化測試工具,滿足了郵件掃描軟件的自動化測試需求。
關鍵詞:自動化測試;domino;郵件服務器
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)30-0657-04
Automation Software Design Based on Scan Mail for Domino
JI Long
(College of Software Engineering,Southeast University,NanJing 210096,China)
Abstract:Lotus Domino is a widely used mail server.Scan mail for domino is a Trend Micro product,it provide a real time protect for Lotus Domino.This paper proposes an automation scenario.Use domino provides interface develop an automation tools,this tools will fulfill automation requirement.
Key words:Automation Test;Lotus domino;mail server
1 前言
隨著Internet的發展,電子郵件傳播病毒已經成為主流方式。各大安全廠商也紛紛推出了自己的安全產品。網關級電子郵件掃描軟件的出現將大大增強電子郵件服務器的安全性。同時應對互聯網病毒的迅速發展,如何在較少的時間內發布產品,并保證產品的質量是在擺在各廠商面前的重要問題問題,這對測試工作提出了更高的要求。
自動化測試就是希望能通過自動化測試工具或其他手段,按照測試工程師的預定計劃進行自動的測試,目的是減輕手工測試的勞動量,從而達到提高軟件質量的目的。自動化測試的目的在于發現老缺陷。而手工測試的目的在于發現新缺陷。自動化測試涉及到測試流程、測試體系、自動化編譯、持續集成、自動發布測試系統以及自動化測試等方面的整合。自動化測試可以減少或消除一些手工測試中的重復和煩瑣,節約測試所必需的時間和提高測試的一致性和可重復性。自動化測試可以提高產品質量并盡可能在軟件生命周期的早期發現缺陷。并非任何測試自動化都可以起到預期效果,只有好的自動化測試體系才能揚長避短,達到建立自動化測試體系的初衷,在質量保障方面有所作為。否則測試自動化可能會由于其建立和維護等方面的負擔造成延誤工期、成本浪費,甚至最終被完全放棄。
2 郵件掃描系統的發展
隨著Internet的發展,電子郵件越來越普及,與此同時,電子郵件病毒也開始出現并迅速蔓延開來。現在,電子郵件已經成為發展最快的病毒傳播手段,象著名的歡樂時光、尼姆達等都是通過電子郵件傳播。而且新的病毒大多利用了微軟的漏洞,當用戶一瀏覽郵件就會中毒。加上已經中毒的用戶不停的給其他用戶發送帶毒的電子郵件,這些都使傳統的基于客戶端的防毒手段難于應付,也使得電子郵件病毒更為盛行。因此,如何有效的控制和消滅電子郵件病毒,就成了反病毒廠商面臨的一個難題。
傳統的基于客戶端的反病毒軟件只能保護客戶機不受病毒感染,對于不停向自己發送帶毒郵件的染毒者無能為力;如果有誰沒有安裝反病毒軟件,或者沒有更新最新的版本,就很可能成為新的病毒的犧牲者。而且大量的病毒通過附件的形式保存在電子郵件服務器上,使得電子郵件服務器成為一個巨大的病毒容器,大量的病毒隨時可能在用戶收取郵件的時候傳播到用戶的機器上,造成病毒殺之不盡。
為了全面的殺除所有的郵件病毒,必須在電子郵件服務器上增加查殺毒的功能,將這個病毒的避風港徹底清除干凈。另外可以使帶毒郵件在進入用戶系統之前就被查殺,御敵于國門之外,使用戶的系統更加安全。對于已經染毒的用戶,電子郵件殺毒可以將它發出的帶毒郵件及時清除,阻止病毒的蔓延,也減少對其他用戶的影響。
3 自動化測試的發展
軟件的自動化測試在過去一段時間中有長足的進步。每一代的產品都成功解決了某些重要的挑戰,但是同時也引進了不同的問題等待解決。
第一代的自動化測試大概在15年前開始,通過硬件的方式錄制鍵盤的輸入并播放,但缺少檢查點(checkpoint)的功能,而且測試腳本很難維護。
第二代的自動化測試則大約在10年前開始的,這時已經由硬件轉變成通過軟件錄制/播放(capture/playback)的方式產生測試腳本(script),并且也增加了檢查點的功能,可以對軟件做驗證,測試的范圍也比硬件方式的自動化方式大了許多。比較大的問題是測試腳本也是一種程序語言,所以測試人員也需要懂程序語言,換句話說就是要會寫程序。而且當軟件有變動時,測試腳本也需要同步更新,這對測試人員來說是一大挑戰,測試人員常常就是整個測試腳本再重新錄制一遍。
在2001年開始了第三代的自動化測試稱為「測試框架(test framework)」,主要是把測試腳本給抽象化(abstraction)(注:如Keyword-Driven Test),讓非技術人員(如系統分析師、使用者等)即使不懂測試腳本,不會寫程序的情況下,也可以使用自動化測試工具建立自動化測試個案。
4 面向郵件掃描軟件自動化測試方案
第三代的自動化測試階段,測試框架階段的主流驅動方式。針對軟件質量,可維護性、可靠性、效率、可復用性、健壯性、可移植性、易用性的比較。在業務驅動方式中,各方面的性能都很優異,是以后自動化測試的方向。本次研究也將基于關鍵字和業務驅動結合的方式進行自動化測試。
4.1 測試理論基礎
比較預期結果和實際結果,一致的情況為正確。
如圖1所示,自動化測試工具要實現的就是以上測試要素,除測試目標外。在郵件掃描安全領域自動化測試環境中這些要素具體分別為:
被測目標:郵件掃描系統SMD (趨勢科技scan mail for domino)
測試輸入:郵件(包含病毒樣本、垃圾郵件樣本)
預置條件:配置數據和用戶數據;(郵件系統投遞方式、郵件掃描軟件掃描策略)
測試輸出:掃描軟件數據庫日志、經過掃描軟件處理后的電子郵件
預期測試輸出:掃描軟件數據庫日志、經過掃描軟件處理后的電子郵件
通過準則:實際業務響應消息=預期業務響應消息;實際用戶數據=預期用戶數據;
測試結果:通過/不通過
4.2 自動化測試流程
自動化測試系統分為測試需求階段、測試設計階段、測試架構階段、測試執行階段,測試分析階段、其它階段。
在測試需求階段,測試需求的變更往往根據需求管理軟件進行管理,測試人員根據自己需要提起測試需求申請。
在測試設計階段,設計人員需要根據當前的自動化測試狀況進行自動化測試分析。如果以前已經實現這個功能則直接滿足用戶需求,如果不能完全通過程序實現則具體分析情況進行測試設計,最終設計出測試方案。
在測試構建階段,主要進行測試樣本設計,本文論述的自動測試方案是基于基于框架的自動化測試,在測試執行過程中用戶不需要編寫測試代碼,只需要錄入相關的關鍵字以及參數。具體的工作將由測試引擎實現。
在測試執行階段,測試框架調用測試引擎讀取測試用例,執行測試用例。
在測試分析階段,測試框架調用測試引擎讀取測試結果和預期的測試結果比較,得出測試結果并保存在數據庫中。
在其它階段,可以滿足用戶將當前的測試結果復制為預期結果。
4.3 自動化測試詳細設計
自動化測試系統分為測試框架部分和測試引擎部分和測試樣本三個部分。
4.3.1 測試樣本
在過去的二十幾年里,電子郵件已經成為世界領先的通信媒體之一,其速度甚至都超過了電話和傳統的郵件服務。不幸的是,也就是在這段時間里,電子郵件已被證明易于受到外界的影響和攻擊,這包括那些企圖實施技術破壞或希望以一種非法形式獲利的個人和組織。結果,安全性已成為所有電子郵件用戶日益重要的一個問題。雖然電子郵件的安全經常被看作是一個獨立的問題,實際上它是幾種不同威脅的混合物,這些威脅都可以單獨地破壞計算機及欺詐收件人,而且可以損害E-Mail的有效性、可靠性及人們對郵件系統的信任。電子郵件威脅可被分為幾種不同的種類:
1) 病毒、蠕蟲、特洛伊木馬:這三種罪大惡極的惡意代碼可以作為電子郵件附件誘使用戶打開或運行,它們就可以破壞一臺主機系統的數據,將計算機變成可被遠程控制的網絡僵尸,甚至可以導致收件人經濟上的巨大損失。舉個例子來說,有一種特洛伊木馬稱為鍵盤記錄器,它可以秘密地記錄系統活動,可以導致外部的惡意用戶訪問公司的銀行賬戶、企業的內部網站及其它的私密資源。
2) 網絡釣魚:釣魚攻擊可以利用社交網絡工程竊取個人的信息和財務金融數據。這種攻擊主要依賴“偽造”郵件將收件人指引到欺詐性站點,誘騙用戶輸入機密的金融數據,如信用卡號、賬戶名、口令等。釣魚活動的詐騙者典型情況下通過假冒的身段來隱藏自己,這些身份是通過從銀行、在線交易商、信用卡公司等竊取的。
3) 垃圾郵件:垃圾郵件雖然不像病毒感染一樣是一種明顯的威脅,垃圾郵件可以極快地淹沒用戶的收件箱,這就使得用戶難于查看合法的電子郵件。垃圾郵件問題已經相當嚴重,以至于用戶會放棄某個由垃圾郵件摧毀的電子郵件賬戶。垃圾郵件還是釣魚者和病毒制造者喜歡的傳播媒介。
本自動化測試系統是針對郵件服務器掃描掃描軟件的測試,需要編寫出滿足特定需求的測試樣本。根據對電子郵件威脅的分類,將樣本分為兩種類型的樣本,病毒樣本和郵件樣本。郵件樣本有6種類型:垃圾郵件、消息郵件、內容型郵件、附件型郵件、病毒型郵件、腳本郵件。病毒樣本根據病毒的種類有多種類型:其中包括病毒、蠕蟲、特洛伊木馬。郵件樣本采用郵件掃描軟件識別出的具有上述6種類型的電子郵件,經過分類后作為電子郵件的樣本。病毒樣本采用Eric實驗室提供的病毒樣本進行測試。
4.3.2 測試框架
關鍵字驅動的自動化測試(也稱為表驅動測試自動化),是數據驅動自動化測試的變種,可支持由不同序列或多個不同路徑組成的測試。它是一種獨立于應用程序的自動化框架,在處理自動化測試的同時也要適合手工測試。關鍵字驅動的自動化測試框架建立在數據驅動手段之上,表中包含指令(關鍵詞),而不只是數據。這些測試被開發成使用關鍵字的數據表,它們獨立于執行測試的自動化工具。關鍵字驅動的自動化測試是對數據驅動的自動化測試的有效改進和補充。關鍵字驅動的自動化測試的整個過程所包含的功能都是由關鍵字驅動的,關鍵字控制了整個測試過程。測試框架執行到配置表的最后一行,整個測試用例結束執行。需要注意的是,雖然這種自動化測試方法同時適合手工和自動執行,但并不意味著只要應用程序準備好可以執行,這些測試就能自動地執行[1]。
如圖3所示為針對郵件掃描軟件自動化測試的架構,這個架構是基于關鍵字驅動技術。測試框架導入測試配置表,根據配置表中的信息。調用測試引擎執行配置驅動讀取配置表的第一條記錄的信息,然后根據記錄中指定的信息讀取策略和病毒樣本。測試框架繼續調用測試引擎執行策略驅動上傳策略信息,成功后測試引擎調用郵件驅動發送郵件樣本和病毒樣本。成功后進行測試結果收集和測試結果分析。測試框架循環執行配置測試表中的記錄,直到最后一行結束。
4.3.3 測試引擎
測試引擎由JAVA開發,使用domino提供的API實現對domino數據庫文檔的讀寫以及郵件投遞的動作。
如圖4流程圖所示,根據測試關鍵字表的設計,抽象出具體實現的測試API分為以下幾種類型。
1) 初始化環境:進行測試環境的預置,初始化系統變量,清空用戶郵件箱。
2) 讀取數據庫配置:測試框架調用讀取數據庫配置獲取測試需要的信息,比如測試循環測試、測試相關目錄、日志和測試結果位置等等。
3)上傳郵件策略:測試框架根據讀取數據庫配置信息后會進行上傳郵件策略動作。這個固定的動作被抽象為上傳郵件策略。上傳策略后,郵件掃描軟件可以讀取當前的策略,更新對電子郵件的處理。
4) 郵件發送驅動:測試框架根據讀取數據庫配置信息確定電子郵件樣本的位置,在郵件策略上傳之后進行電子郵件發送的動作。電子郵件的發送分為三種類型:SMTP郵件的發送,notes郵件的發送、inotes郵件的發送。
5) 結果收集:使用Lotus domino提供的API進行服務器上電子郵件的收集到本地數據庫。
6) 結果比較:將收集后的測試結果和預期結果進行比較。
4 結束語
軟件測試自動化由于效率高、能快速全面實行回歸測試等優點,正成為國內外軟件界熱點之一。本文從軟件自動化測試的概念出發,介紹了自動化測試的設計和實施,討論了如何實現良好的測試自動化,好的腳本技術進行測試用例的自動化測試可以節省測試時間,同時具有良好的維護性。最后,介紹了自動化測試的用途。回顧自動化測試發展的過程,以往的經驗告訴我們,無法依靠簡單的錄制/回放的測試方法或傳統的測試腳本工具來完成測試,因為錄制產生的腳本維護困難,而且生存期很短。因此,為了減少實現和維護的成本,使測試人員可以把精力集中在應用程序的測試用例設計上,關鍵字驅動自動化框架加上數據驅動的腳本是現階段自動化測試實踐中最好的解決方法。
參考文獻:
[1] 崔麗.軟件測試自動化框架[J].電子與電腦,2006(6).
[2] 楊亞南,孫忠林,李艷.軟件自動化測試淺談[J].科技信息,2001(24):503.
[3] 潘文峰.基于內容的垃圾郵件過濾研究[M].北京:中國科學院,2004:22.
[4] Richard S W.MIME (Multipurpose Internet Mail Extensions)[Z]. 1993,2:22.
[5] Chandrinos K V. Sparse binary polynomial hashing and the CRM114[Z]. 2000:9-17.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文