減少軟件測試的時間和成本(二)
接上一篇
要求具備測試數(shù)據(jù),以確保每個系統(tǒng)層次的需求都得以測試和驗證。審查測試數(shù)據(jù)需求可以解決許多數(shù)據(jù)關(guān)注的事情,如下面所列舉的,而且以手動方式進行這些審查都是不可行的。這就是自動化測試數(shù)據(jù)生成的回報。
深度
測試團隊必須考慮為了支持測試所需的數(shù)據(jù)庫記錄的量或規(guī)模。他們需要確定一個數(shù)據(jù)庫或特定表格中的10條記錄是否足夠,或是否有必要使用10 000條記錄。在生命周期早期的測試,如單元測試或構(gòu)建驗證測試,應(yīng)該使用手動創(chuàng)建的小數(shù)據(jù)庫,這樣可以提供最大的控制粒度和最小的干擾。在不同測試階段和不同類型測試過程中,數(shù)據(jù)庫應(yīng)該增長到一定規(guī)模,以適合特定的測試。比如,當產(chǎn)品環(huán)境數(shù)據(jù)庫會包含1 000 000條記錄時,針對只包含100條記錄的數(shù)據(jù)庫進行性能及容量測試是沒有意義的。
廣度
測試工程師需要考察數(shù)據(jù)值的變體(比如,10 000個不同的賬戶和大量不同類型的賬戶)。設(shè)計良好的測試將包括各種測試數(shù)據(jù)的變體,而且對所有類似的數(shù)據(jù)進行的測試生成有限的結(jié)果。例如,測試時可能需要考慮賬戶余額為負的賬戶、余額非常低的($100)、中等范圍的( $1 000)、大范圍的($100 000),以及非常大范圍($10 000 000)的賬戶。同時測試還應(yīng)該反映平均水平的數(shù)據(jù)。對于銀行賬戶來說,客戶賬戶可以按不同方式歸類,包括按儲蓄、支票、貸款、學生、聯(lián)名和商業(yè)。所有數(shù)據(jù)類別都需要考慮。
范圍
測試團隊需要調(diào)查數(shù)據(jù)的相關(guān)性。測試數(shù)據(jù)的范圍與數(shù)據(jù)的準確性、相關(guān)性和完整性相關(guān)。比如,當測試用于確定各種類型的銀行賬戶的查詢(根據(jù)賬戶余額是否多于100美元)時,不僅要考慮到滿足這一標準的賬戶數(shù)量,而且該測試還應(yīng)反映出額外的數(shù)據(jù),例如原因代碼、聯(lián)系歷史和賬戶所有者的人口統(tǒng)計數(shù)據(jù)。完整的測試數(shù)據(jù)集包括的東西能使測試程序充分驗證和使用系統(tǒng),支持對結(jié)果的評估。測試工程師同樣需要驗證,作為一個查詢的結(jié)果返回的記錄對特定目的仍然有效(如超過90天逾期),且該記錄不是遺失或不適當?shù)膬r值的結(jié)果。另一個關(guān)鍵是,對業(yè)務(wù)邏輯或最終用戶的權(quán)利和特權(quán),需要不同類型的數(shù)據(jù)不同路徑模擬。
測試執(zhí)行數(shù)據(jù)完整性
測試團隊需要考慮測試數(shù)據(jù)的另一方面是在執(zhí)行測試時需要維護數(shù)據(jù)的完整性。測試團隊需要能夠分開數(shù)據(jù),修改所選擇的數(shù)據(jù),并在測試操作后將數(shù)據(jù)庫恢復到初始狀態(tài)。測試團隊需要確保當多個測試工程師同時執(zhí)行測試時,一個測試不會對其他測試需要的數(shù)據(jù)產(chǎn)生不利的影響。比如,當測試團隊的某個成員正在運行一個查詢時,另一個成員修改了數(shù)據(jù)值,這樣查詢的結(jié)果可能不是期望的,因為記錄被其他測試人員修改了。為避免一個測試人員的測試過程影響其他測試人員的測試結(jié)果,應(yīng)給測試人員分配不同的測試任務(wù),要求每個測試人員關(guān)注功能的特定方面,不與其他測試人員的工作重疊。使用自動測試腳本可以簡化這一過程并使得數(shù)據(jù)自動保持完整。
條件
應(yīng)該創(chuàng)建能反映應(yīng)用領(lǐng)域的特定“條件”的數(shù)據(jù)集,意思是數(shù)據(jù)的某種模式只能通過單次執(zhí)行或隨時間推移多次執(zhí)行后才能獲得。例如,金融系統(tǒng)通常執(zhí)行年終處理(year-end closeout)。以年終條件方式存儲數(shù)據(jù),使得測試小組可以測試系統(tǒng)的年終狀態(tài),而不需要進入全年的數(shù)據(jù)。有了這些已創(chuàng)建的數(shù)據(jù),并準備投入測試,可簡化測試工作,因為這種情況下只是簡單地載入測試數(shù)據(jù),而不是執(zhí)行許多操作來獲得數(shù)據(jù)的年終狀態(tài)。同樣,自動測試工具可以在這里發(fā)揮作用。
作為確定測試數(shù)據(jù)需求過程的一部分,開發(fā)一個包含一列測試過程列表和一列測試需求列表的矩陣是非常有益的。前面已經(jīng)提到過,小的數(shù)據(jù)子集對于功能測試足夠了,而性能測試則需要一個產(chǎn)品規(guī)模的數(shù)據(jù)庫。如果手動建立數(shù)據(jù)庫很可能要幾個月的時間。自動化測試則能快速填充測試數(shù)據(jù)庫。
一旦提出了測試數(shù)據(jù)的需求,測試團隊還需要對獲取、生成、開發(fā)測試數(shù)據(jù)和刷新測試數(shù)據(jù)庫到原始狀態(tài)的方法做出計劃,以便進行所有測試活動,包括回歸測試。這個時候就需要自動化的方法。
測試之前通常需要提前準備好數(shù)據(jù)。數(shù)據(jù)準備包括原始數(shù)據(jù)或文本文件的處理、一致性檢查以及對數(shù)據(jù)元素的深度分析(其中包括根據(jù)測試用例標準定義數(shù)據(jù),解釋數(shù)據(jù)元素的定義,確定主鍵,以及定義可用的數(shù)據(jù)參數(shù))。測試團隊需要獲得并修改任何測試數(shù)據(jù)庫,這一數(shù)據(jù)庫是執(zhí)行軟件應(yīng)用程序和開發(fā)環(huán)境安裝腳本和測試臺腳本中所必需的。
理想情況下,可利用已有的客戶或系統(tǒng)數(shù)據(jù),這些數(shù)據(jù)包括了實際的數(shù)據(jù)場景的組合和變體(假設(shè)數(shù)據(jù)已經(jīng)清理過,移除了所有私有的或個人的信息)??蛻魯?shù)據(jù)同樣包括測試團隊沒有考慮到的有些組合或使用模式,因此,測試過程中使用已有的真實客戶數(shù)據(jù)對于應(yīng)用來說是一個非常有用的實際檢驗。
手動生成測試數(shù)據(jù)將很繁瑣、費時且易出錯。
【編輯推薦】