目前很多互聯網軟件應用,除了應用程序本身外,后台都會有數據庫做支撐。軟件款測試人員在測試這種類型的應用軟件時,除了需要設計測試用例外,還需要准備相應的測試數據。可以說准備測試數據也是作為軟件測試的一項必須的工作。如果沒有正確的測試數據,測試過程有時候就無法很好的執行,測試結果也會不准確。在實際工作中創建測試數據的過程,往往需要很長的時間,有時候多影響到項目的進度。下面將從平時測試一些實際應用出發,整理了如何准備測試數據的方法,和大家分享下,期待對大家有所幫助。
測試數據的格式和內容是來源於我們設計的測試用例提取出的需求和被測軟件的接口入參。一般創建測試數據的方法分為手動創建和采用程序的自動化創建兩種方法。下面我們結合實際分別來談談這兩種方法。
手動創建測試數據的一般有如下幾種方法:
1) 手動創建訂單測試數據:在測試環境下,我們根據下單流程和業務需求,來模擬用戶購買下單,選擇貨到付款或者在線支付,從而得到自己想要的一個訂單的數據,這種方式適合於需要的測試數據少的情況,基本常在聯調測試或者系統測試完成后的驗收測試階段。
2) 通過SQL語句修改數據庫的方式:一般我們被測應用程序后台都有數據庫來存儲數據,這樣我們可以通過一些SQL語句來創建屬於我們的測試數據。首先我們登錄測試環境下的數據庫主機,可以用where查詢條件來篩選定位部分符合某些條件的測試數據庫記錄,然后利用update方法來更新我們想要的字段名和對應的字段的value,從而創建了符合條件的一批測試數據。
3) 測試數據的備份導入:在我們本地機器上存儲了一些符合條件的保存在excel文件或者DB文件的備份,我們可以通過導入數據的方式,來實現創建合適的測試數據。
4) 線上數據導入到測試環境:涉及到線上環境,這個要謹慎。一般要求事先進行調研,先確定線上的數據是否可以按照自己設置的條件准確地分流到測試環境,同時這些數據是直接使用還是需要加工后才能使用。一般都有專門用於測試的預發布環境(線上的測試環境),以及分流條件的配置,可以控制分流到預發布環境的數據數量。
自動化創建測試數據的方法
自動化創建測試數據基本上都是用自動化程序來實現的,下面以Python來說明下常見的幾種情況:
1) Web頁面創建測試數據:如果我們需要手動在web頁面上點擊一系列操作,才能完成下單的操作,我們可以考慮用Python加selenium的腳本是實現,當需要下單的時候,只需要運行一下腳本即可;實例代碼如下:
from selenium import webdriver
import time
driver = webdriver.Firefox()
##下面定義一些操作和處理方法,舉例:
driver.find_element_by_id("kw").send_keys("money is coming")
time.sleep(2)
driver.find_element_by_id("su").submit()
time.sleep(3)
driver.quit()
2) 數據中包含數字(要求不重復)參數的處理方法:當我們創建的測試數據中,需要不重復的數字作為參數的時候,我們可以考慮用Python自帶的random函數,舉例如下:
import random
#用for循環指定數據的多少
for i in xrange(1,5):
#生成隨機數的大小可以由上下限指定,
num = random.randint(1,20000)
#也可以直接是 data=num,看你的數據模板是什么
data = “abc d%def” %num
print data
3) 數據中字符串(要求不重復)的處理方法:當我們創建的測試數據中,需要不重復的字符串作為參數的時候,我們可以考慮用Python自帶的uuid函數,舉例如下,
import uuid
#用for循環指定數據的多少
for i in xrange(1,5):
str = uuid.uuid1()
#也可以直接是 data=str,看你的數據模板是什么
data ="abc s% def" % str
print data
4) 數據庫中批量數據的修改方法:也可以通過Python腳本加SQL語句來完成,舉例如下:
import pyodbc
conn=pyodbc.connect('DRIVER={SQLServer};SERVER=192.168.1.1;DATABASE=TEST;UID=XXXXX;PWD=XXXX)
sql = "update tablename set productID =xxxx,quantity=xxxxx where orderID in( X1,X2,...Xn)"
cursor = conn.cursor()
cursor.execute(sql)
resultRows = cursor.fetchall()
nums=len(resultRows)
print nums
以上僅僅列舉了一些常用的創建測試數據的方法,實際工作中,遠遠不止這些方法。在平時的項目測試過程中,有時候並不是單一的運用某種方法去創建測試數據,可以將手工方式和自動化方式結合起來,靈活運用多種方式去創建不同測試階段需要的測試數據。同時,有經驗的測試工程師平時都會保存一些常用的測試數據(比如,訂單id,數據庫備份,數據模板等等)。
隨着互聯網軟件應用越來越多,針對不同場景的測試用例也日益復雜化,很多情況下需要專門的測試數據來支持。在不久的將來,如何快速地創建測試數據,也是測試工程師的重要能力之一。 將來的IT時代,將是數據的時代,測試人員也要與時俱進,做一個Data達人。