首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 軟件評測師 > 正文

2010軟件評測師:記錄/回放工具的缺陷與解決

軟件評測師考試輔導:記錄/回放工具的缺陷與解決方法

  當前大部分的測試工具是軟件的功能性測試功能(也被稱為記錄/回放工具),如Rational的Robot和Mercury 的Winrunner等。記錄/回放工具的缺陷使我們在測試中不能過分依賴它。

  缺陷:

  記錄/回放工具能夠記錄下用戶和應用程序交互時的擊鍵和鼠標的移動。擊鍵和鼠標的移動都被記錄成一個腳本,然后可以在測試執(zhí)行期間“回放”。雖然這種方法對特定的情形是有益的,但是記錄/回放功能大約僅僅是其全部功能的1/10。記錄/回放腳本在首次記錄生成之后必須要進行修改。對功能性測試的修改主要集中在通過GUI進行驗證的測試,也稱為黑箱測試。只是通過記錄/回放直接創(chuàng)建腳本有一些嚴重的局限和缺點。

  1.硬編碼的數(shù)值。記錄/回放工具根據(jù)用戶的交互動作來生成腳本,其中也包含了從用戶界面輸入或者接受的任何數(shù)據(jù)。讓數(shù)值在腳本中“硬編碼”會給以后的維護工作帶來問題。如果應用程序的用戶界面或則其他方面發(fā)生了變化,那么硬編碼的數(shù)值會導致腳本非法。例如:在記錄期間生成腳本的時候,輸入值、窗口坐標、窗口標題和其他值可能也被記入生成的腳本代碼中。如果在應用程序中,這些值中任何一個發(fā)生了變化,那么測試執(zhí)行期間這些固定的數(shù)值就成了罪魁禍首:測試腳本與應用程序的交互是錯誤的,或者徹底失敗。另一個可能出問題的硬編碼數(shù)值是日期戳。如果測試工程師在測試過程中記錄了當前日期,那么幾天后再次運行這個腳本會導致失敗,因為腳本中包含了硬編碼的數(shù)值不再和當前的日期匹配。

  2.非模塊化的、不易維護的腳本。測試工具產生的記錄/回放腳本通常不是模塊化的,維護起來非常困難。例如:可能許多測試過程都引用了一個WEB應用程序中特殊的URL,如果腳本中使用了硬編碼的URL,那么這個URL的改變將會導致大量的腳本作廢。在一個模塊化的開發(fā)方法中,只有一個函數(shù)中引用,或則包裝了這個URL。隨后各個是引用它的腳本會調用這個函數(shù),這樣URL的任何變化只需要改動一處就可以了。

  3.缺乏可重用性的標準。測試過程開發(fā)面臨的最重要的課題之一是可重用性。如果測試創(chuàng)建專門的標準,明確地要求開發(fā)可復用的自動測試過程,那么就會極大地提高測試組的工作效率。如果把用戶界面部分的測試封裝進模塊化的、可重用的腳本文件,供其他腳本調用,那么當用戶界面經常不斷變化的時候,腳本的維護工作量就會大大降低。

  創(chuàng)建一個可重用的函數(shù)庫時,最好把諸如數(shù)據(jù)讀取、寫入和確認、導航、邏輯以及錯誤檢查功能分別歸到不同的腳本文件中。自動測試開發(fā)的指導方針應該大量的借用高效的軟件開發(fā)工作所遵循的原則。遵循與測試工具生成腳本的開發(fā)語言最接近的開發(fā)語言的指導方針,這是一個很好的時間。例如:如果工具生成的腳本類似于C語言,那么應該遵從C語言的開發(fā)標準;如果工具生成的腳本類似于BASIC語言,那么應該遵從BASIC語言的開發(fā)標準。

  在自動測試開發(fā)中,只使用記錄/回放方法生成的測試腳本是很難維護和重用的,這是明顯的事實。雖然也有少數(shù)的情況,可使用未經加工的腳本,但是對于大多數(shù)情況,如果不在記錄之后修改腳本,那么在測試執(zhí)行期間,測試工程師會由于正在測試的應用程序的變化而反復記錄腳本。使用記錄/回放工具可能帶來的潛在收益,一定會被不斷重建測試腳本的無奈所抵消。這會使測試人員產生很強的挫折感,并且會對自動測試工具感到不滿。

  為了避免未經加工的記錄/回放腳本帶來的問題,應該建立可復用的測試腳本的開發(fā)方針。未經過加工的記錄/回放腳本并不表示有效的自動測試。

  解決方法:自制開發(fā)一個測試工具

  為了去除自動測試工具的局限性和對核心組件進行更深入的測試,可以自制開發(fā)一個測試工具。這種定制的測試工具一般用健壯的程序語言編寫,例如:獨立的C++或則Java程序,定制的測試工具一般比自動測試工具生成的腳本運行的速度更快,也更靈活,因為這些腳本受限于測試工具的特定環(huán)境。

  我們舉一個適合用定制測試工具來測試任務的例子,假設一個應用程序的用途使根據(jù)用戶提供的信息進行計算,并且把計算的結果生成報告。計算過程可能是復雜的,并且可能對各種輸入?yún)?shù)的不同組合是敏感的。這可能會有數(shù)百萬種潛在變化,這些變化會產生不同的結果,因此,對計算過程進行全面的測試才能保證計算的正確性。

  手工開發(fā)和驗證大量的計算性測試用例是非常浪費時間的。在大多數(shù)情況下,通過界面執(zhí)行大量的測試用例也是非常緩慢的。此時一個更高效的方法是自制開發(fā)一個測試工具,它會直接針對應用程序的代碼(一般是直接針對用戶界面層之下的核心組件)執(zhí)行測試用例。

  另一種使用自制測試工具的方法是:對照遺留組件或者系統(tǒng)來比較新組件。兩個系統(tǒng)通常使用的數(shù)據(jù)存儲格式是不同的,用不同的技術實現(xiàn)的用戶界面也是不同的。此時,為了在兩個系統(tǒng)上運行相同的測試用例并且生成比較報告,自動測試工具需要一種特殊的機制來復制自動測試腳本。在最壞的情況下,單個測試工具不能同時兼容兩個系統(tǒng),此時兩套測試腳本必須用兩種不同的自動測試工具來開發(fā)。一個更好的替代方案是自制生成一個定制的、自動測試工具,它把兩個系統(tǒng)之間的差異封裝進獨立的模塊,這樣我們就能夠設計出同時適用于兩套系統(tǒng)的測試。自制的自動測試工具可以把遺留系統(tǒng)產生的測試結果作為基線,并且通過比較兩套結果和輸出它們之間的差異來自動地驗證新系統(tǒng)產生的結果。

  達到上述目的的一種方法是使用自制工具適配器模式。自制測試工具適配器是一個模塊,它通過轉換或者改造正在測試地每個系統(tǒng)使之和自制測試工具兼容,這樣自制測試工具可以通過適配器在系統(tǒng)種執(zhí)行預定義地測試用例,并且把結果存儲為相互之見可以自動比較地標準格式。對于每個開發(fā)出來地適配器必須能夠直接和系統(tǒng)進行交互和針對系統(tǒng)執(zhí)行測試用例。用一個自制測試工具測試兩個系統(tǒng)需要不同地適配器并獨立調用兩次自制測試工具,每個系統(tǒng)調用一次。兩次調用的結果應用保留起來并進行比較。圖示描述了針對遺留系統(tǒng)和新系統(tǒng)執(zhí)行測試用例的定制測試工具。

  通過為每個系統(tǒng)使用不同的適配器,相同的測試用例可以用于多個系統(tǒng)。針對遺留系統(tǒng)的適配器來產生一組基線結果,這個結果用于和新系統(tǒng)的結果比較。

  為了完成他們的任務,自制的測試工具適配器首先獲得一組測試用例,然后按照順序執(zhí)行這些用例,從而直接測試每個系統(tǒng)的邏輯,繞過了用戶界面。繞過用戶界面使性能得到了優(yōu)化,使得測試用例的吞吐量最大化。它還具有更高的穩(wěn)定性。如果自制測試工具依賴于用戶界面,那么用戶界面的任何變化(在開發(fā)生命周期種,用戶界面經常會經過多次修改)都可能導致自制測試工具對缺陷的漏識別。檢查這樣的結果會浪費大量寶貴的時間。

  每個測試用例的執(zhí)行結果被存儲在一個或者多個結果文件中,存儲的格式使相同的。與正在測試的系統(tǒng)無關。保存結果文件是為了與隨后運行的測試產生的結果進行比較。比較可以有一個定制生成的結果工具來完成,這個工具按照一定的規(guī)則讀取和評估結果文件,并且輸出發(fā)現(xiàn)的所有錯誤或者差異。如果我們把結果格式化,那么也可以通過標準的“file diff”(比較文件差異)工具對它們進行比較。

  與所有的測試類型一樣,自制測試工具使用的測試用例可能使相當復雜的,特別是當自制測試工具所測試的組件使用于數(shù)學計算或者科學計算的時候,利用自制的測試工具就可以覆蓋大部分的測試。

  相關推薦:考試吧策劃:2010年軟件水平考試完全指南
       2010年11月計算機軟件水平考試備考寶典匯總
文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。