自動化測試和數據驅動之間的關系,十分鐘帶你弄清楚
?軟件測試是對項目研發過程的產物(文檔,代碼等)進行審查,保障產品質量的過程。我們可以通過手工測試,自動化測試,工具掃描等方法完成這個任務。其中,自動化測試是當前重要的一種測試方法,具有響應速度快、穩定性高、人工干預少的特點,很好的契合了高響應、海量數據驗證等需求的測試任務。數據驅動是自動化測試的靈魂,數據驅動的應用程度直接決定了自動化測試的水平和質量。
一、自動化測試和數據驅動
如果你有100畝麥子需要收割,你會怎么做?
- 方法一:拎起鐮刀或者雇幾個人拎起鐮刀割麥子。
- 方法二:制造或者購買一臺收割機,然后開著收割機割麥子。
顯然,這兩種方法都能完成任務,但是,方法二具有重資產、高效率的特點。
測試就如同這割麥子,完成麥子收割是測試任務,手工收割和收割機收割對應手工測試和自動化測試兩種方法。這兩種方法各有利弊,手工測試具有上手易(一把鐮刀就行),適應性強(不論平地、梯田,還是丘陵都ok)的特點,自動化測試具有效率高(收割速度快)、質量穩定(機器不容易犯錯)、不疲勞(機器不用休息)的特點。對于那種對測試質量要求穩定,測試反饋要求快,需要反復驗證和海量數據驗證的測試任務,自動化測試技術可以很好滿足這類測試任務的要求。
測試數據如同機油,是收割機運行的燃料。數據驅動是自動化測試的核心,如同機器的發動機,是機器運行的動力源。沒有測試數據這個燃料和數據驅動這個動力源,收割機就是一臺沒有靈魂的廢鐵無法運轉,自動化測試也就無從談起。
二、測試數據
測試數據作為測試的輸入,測試數據準備的質量直接決定到測試范圍是否全面,測試程度是否充分,最終影響測試過程的質量。
測試數據從來源可以概括為源自存量數據和源自新增數據兩類。源自存量數據是指利用原有系統運行積累的生產數據,經過脫敏、加工后生成的測試數據。這個原有系統可以是系統自身(升級優化前的系統、重構前的系統、手工記錄的業務數據等),也可以是業務關聯系統(業務上游系統、交互系統等)。這類測試數據的特點是數據已經存在,可以直接使用,缺點是這類數據是通過正常的業務邏輯積累產生的,通常是還是高頻交易產生的數據。這類數據天然具有局限性,無法覆蓋系統的所有業務場景,如:異常操作、低頻交易等。
源自新增數據是指根據業務需求、系統設計,創造出來的符合業務需求的數據。該類數據是測試人員通過分析業務需求、系統設計,針對項目業務需求(含高頻交易和低頻交易)、異常處理、邊界值檢驗等人為創造的數據。這類測試數據的特點是測試數據經過系統性分析,覆蓋面較廣,代表性較強。不足之處在于數據都需要人工創造,當系統較為復雜或者規模較大時需要的測試數量較多,人工制造成本較大。
基于這兩個數據來源,我們結合業務需求,就可以完成項目測試數據的準備工作,通過分析、篩選、提煉,最終沉淀為本次測試所需的測試數據。
三、數據驅動測試
數據驅動測試是自動化測試的靈魂,在數據驅動測試的思想中,自動化案例就是流水線,測試數據像水一樣通過流水線,觸發系統做出響應。然后,通過配置在流水線上的斷言,檢查點,比對系統響應是否符合預期響應。符合,則表示該功能場景正常,不符合,則預示該功能處理存在異常。顯而易見,測試數據是至關重要的。
那么自動化測試中的測試數據都從哪里獲取的呢?自動化測試數據本質上和手工測試數據類似。但是,由于自動化測試是程序自動運行,相較于手工測試數據天然具有需求量大、需求范圍廣、數據來源多等特點。傳統的手工準備數據從數量上和來源上無法滿足自動化測試運行所需的龐大數量要求,這時,我們需要在手工準備數據的基礎上引入自動化的數據生成方法。大體上自動化測試數據可以歸為四大類,八小類,詳見下表。
表-1 自動化測試數據來源
自動化測試所需要的測試數據部分仍可通過手工制作,主要為固定標簽類值和數據資源池兩類。固定標簽類值即該字段有明確的取值列表,如銀行卡賬戶類型(0-I 類、1-II類、3-III 類)、是否屬地(0-本地、1-異地)、客戶類型(G-政府、B-商戶、C-個人)等。數據資源池即將某些可以重復使用且數量少的數據,存儲在數據庫、CSV 文件、text 文件、ini 文件等介質中供程序反復抽取使用,這個數據池子我們稱為數據資源池。如身份證號、手機號、卡號、商戶號等這類離散數據。
通過自動化方式準備測試數據,主要可以分為查詢、修改、新增這三類。查詢類測試數據可以通過聯機查詢和sql查詢兩種方式獲得,查詢類測試數據說明測試數據本身是存在的,需要通過篩選條件甄別出本次需要的數據,作為測試數據。聯機查詢和 sql 查詢的區別就在于我們所需的數據是否有現成的查詢接口可用,若無,則需手動編寫 sql 語句完成數據篩選修改類數據也是一種已存在的數據,修改類數據和查詢類數據的區別在于查詢類測試數據的源數據滿足測試需要可以直接使用,而修改類測試數據的源數據無法滿足測試需要不能直接使用,需通過修改某些屬性才能滿足測試要求。因此需要通過修改操作對源數據進行二次修改,聯機修改和sql修改的區別在于是否有聯機修改接口可供使用。
新增類測試數據說明當前環境中無滿足測試需求的源數據或者修改源數據無法滿足測試要求時,需要新增測試數據。比如銀行賬戶類數據,由于涉及客戶信息校驗、記賬校驗等,單純的插入一條數據很難通過系統校驗,我們通常直接通過系統開戶交易直接新增數據。比如新建系統無存量數據,或者環境中缺乏某些稀有類型的數據時,我們需要新增交易添加鋪底數據。
四、結語
市面上有各種形形色色的自動化測試工具,諸如 jmeter、postman、metersphere 等等。測試人員在接觸自動化測試之處,容易沉迷于了解,掌握更多的測試工具,忽略提升自動化測試認知水平,而陷于初級自動化測試的陷阱,疲于學習而無法提升自我。本文致力于提升大家對自動化測試的認識,引導大家向更高層次的自動化測試發展,提升測試人員整體價值。?