軟件測(cè)試52講筆記--15 過(guò)不了的坎:聊聊GUI自動(dòng)化過(guò)程中的測(cè)試數(shù)據(jù)

這是我購(gòu)買(mǎi)的"極客時(shí)間"上的一套課程的筆記,總共52講,定期對(duì)其中的內(nèi)容做一筆記,鞏固學(xué)習(xí)內(nèi)容。

15 過(guò)不了的坎:聊聊GUI自動(dòng)化過(guò)程中的測(cè)試數(shù)據(jù)

測(cè)試數(shù)據(jù)準(zhǔn)備是實(shí)現(xiàn)測(cè)試用例解耦的重要手段。本篇從創(chuàng)建測(cè)試數(shù)據(jù)的技術(shù)手段和時(shí)機(jī)兩個(gè)方面,介紹GUI測(cè)試數(shù)據(jù)的準(zhǔn)備。

GUI測(cè)試中兩種常見(jiàn)的數(shù)據(jù)類(lèi)型

  • 第一大類(lèi):測(cè)試輸入數(shù)據(jù),也就是GUI測(cè)試過(guò)程中,通過(guò)界面輸入的數(shù)據(jù)。
  • 第二大類(lèi):為了完成GUI測(cè)試而需要準(zhǔn)備的測(cè)試數(shù)據(jù)。

創(chuàng)建測(cè)試數(shù)據(jù)的方法

  1. API調(diào)用
  2. 數(shù)據(jù)庫(kù)操作
  3. 綜合運(yùn)用API調(diào)用和數(shù)據(jù)庫(kù)操作

實(shí)際項(xiàng)目中,對(duì)于創(chuàng)建數(shù)據(jù)的技術(shù)手段而言,最佳的選擇是利用API來(lái)創(chuàng)建數(shù)據(jù)。當(dāng)API不能滿(mǎn)足需要時(shí),才使用數(shù)據(jù)庫(kù)操作的手段。

實(shí)際上,許多測(cè)試數(shù)據(jù)的創(chuàng)建時(shí)基API和數(shù)據(jù)庫(kù)操作兩者的結(jié)合來(lái)完成,即先通過(guò)API創(chuàng)建基本的數(shù)據(jù),然后調(diào)用數(shù)據(jù)庫(kù)操作來(lái)修改數(shù)據(jù),以達(dá)到對(duì)測(cè)試數(shù)據(jù)的特定要求。

創(chuàng)建的時(shí)機(jī)

  1. 測(cè)試用例執(zhí)行過(guò)程中,實(shí)時(shí)創(chuàng)建測(cè)試數(shù)據(jù)。通常稱(chēng)為 On-the-fly 。
  2. 測(cè)試用例執(zhí)行前,事先創(chuàng)建好“開(kāi)箱即用”的測(cè)試數(shù)據(jù)。通常稱(chēng)為 Out-of-box 。

而對(duì)于創(chuàng)建數(shù)據(jù)的時(shí)機(jī),實(shí)際項(xiàng)目中,往往是二者結(jié)合在一起使用。

下面作者結(jié)合具體的例子做出了說(shuō)明,我就不再?gòu)?fù)述例子了,簡(jiǎn)單總結(jié)一下:

基于A(yíng)PI調(diào)用創(chuàng)建測(cè)試數(shù)據(jù)

當(dāng)數(shù)據(jù)的創(chuàng)建和修改,可以通過(guò)API調(diào)用進(jìn)行的時(shí)候,就能夠基于A(yíng)PI調(diào)用創(chuàng)建測(cè)試數(shù)據(jù)。
實(shí)際項(xiàng)目中,通常會(huì)把對(duì)這些API的調(diào)用以代碼的形式封裝為測(cè)試數(shù)據(jù)工具。

基于A(yíng)PI的方式,優(yōu)點(diǎn)是,測(cè)試數(shù)據(jù)的準(zhǔn)確性直接由產(chǎn)品API保證,缺點(diǎn)是并不是所有的測(cè)試數(shù)據(jù)都有相關(guān)API來(lái)支持。
但是,對(duì)需要大量創(chuàng)建數(shù)據(jù)的測(cè)試來(lái)說(shuō),基于A(yíng)PI調(diào)用方式的執(zhí)行效率會(huì)比較低。

基于數(shù)據(jù)庫(kù)操作創(chuàng)建測(cè)試數(shù)據(jù)

當(dāng)數(shù)據(jù)的創(chuàng)建和修改直接在產(chǎn)品代碼內(nèi)完成,并且沒(méi)有對(duì)外暴露供測(cè)試使用的接口時(shí),就需要通過(guò)操作數(shù)據(jù)庫(kù)來(lái)產(chǎn)生測(cè)試數(shù)據(jù)。
同樣地,可以把創(chuàng)建和修改數(shù)據(jù)的相關(guān)SQL語(yǔ)句封裝成測(cè)試數(shù)據(jù)工具,以方便測(cè)試用例的使用。
有兩個(gè)思路:

  1. 手工方式。查閱設(shè)計(jì)文檔和產(chǎn)品代碼,找到相關(guān)SQL語(yǔ)句集合。
  2. 自動(dòng)方式。測(cè)試環(huán)境中,先在只有一個(gè)活躍用戶(hù)的情況下,通過(guò)GUI界面操作完成數(shù)據(jù)的創(chuàng)建、修改,然后利用數(shù)據(jù)庫(kù)監(jiān)控工具獲取這段時(shí)間內(nèi)所有的業(yè)務(wù)表修改記錄,以此為依據(jù)開(kāi)發(fā)SQL語(yǔ)句集。
    這兩種思路的前提,都是假定產(chǎn)品功能正確。

基于數(shù)據(jù)庫(kù)的方式,優(yōu)點(diǎn)是,可以直接創(chuàng)建和修改API不支持的測(cè)試數(shù)據(jù),并且執(zhí)行效率遠(yuǎn)高于A(yíng)PI調(diào)用方式。缺點(diǎn)是,數(shù)據(jù)庫(kù)表操作的任何變更,都必須同步更新測(cè)試數(shù)據(jù)工具中的SQL語(yǔ)句。
所以,在實(shí)際工程項(xiàng)目中,需要引入測(cè)試數(shù)據(jù)工具的版本管理,并通過(guò)開(kāi)發(fā)流程來(lái)保證SQL的變更能夠及時(shí)通知到測(cè)試數(shù)據(jù)工具團(tuán)隊(duì)。

綜合運(yùn)用API調(diào)用和數(shù)據(jù)庫(kù)操作創(chuàng)建測(cè)試數(shù)據(jù)

具體來(lái)講就是,可以通過(guò)API先創(chuàng)建一個(gè)基本的數(shù)據(jù),然后再通過(guò)修改數(shù)據(jù)庫(kù)的方式來(lái)更新這個(gè)數(shù)據(jù),達(dá)到創(chuàng)建特定測(cè)試數(shù)據(jù)的要求。

實(shí)時(shí)創(chuàng)建數(shù)據(jù) On-the-fly

GUI測(cè)試腳本中,在開(kāi)始執(zhí)行界面操作前,通過(guò)調(diào)用測(cè)試數(shù)據(jù)工具實(shí)時(shí)創(chuàng)建測(cè)試數(shù)據(jù),就是 On-the-fly 方式。
實(shí)際項(xiàng)目中往往會(huì)存在三個(gè)問(wèn)題:

  1. 用例執(zhí)行過(guò)程中實(shí)時(shí)創(chuàng)建數(shù)據(jù),導(dǎo)致測(cè)試的執(zhí)行時(shí)間比較長(zhǎng)。
  2. 業(yè)務(wù)數(shù)據(jù)的連帶關(guān)系,導(dǎo)致測(cè)試數(shù)據(jù)的創(chuàng)建效率非常低。
  3. 對(duì)測(cè)試環(huán)境的依賴(lài)性很強(qiáng)。比如創(chuàng)建數(shù)據(jù)相關(guān)的API需要處于可用狀態(tài),但是很有可能在測(cè)試用例執(zhí)行的時(shí)候它是不可用的(在采用微服務(wù)架構(gòu)的系統(tǒng)中很常見(jiàn))。

事先創(chuàng)建測(cè)試數(shù)據(jù) Out-of-box

在被測(cè)系統(tǒng)中預(yù)先創(chuàng)建好了充足的、典型的測(cè)試數(shù)據(jù)。

有效解決了實(shí)時(shí)創(chuàng)建數(shù)據(jù)的很多問(wèn)題,但是缺點(diǎn)也很明顯,主要體現(xiàn)在以下三個(gè)方面:

  1. 測(cè)試用例中需要硬編碼測(cè)試數(shù)據(jù),額外引入了測(cè)試數(shù)據(jù)和用例之間的依賴(lài)。
  2. 只能被一次性使用的測(cè)試數(shù)據(jù)不適合這種方式。
  3. “預(yù)埋”的測(cè)試數(shù)據(jù)的可靠性遠(yuǎn)不如實(shí)時(shí)創(chuàng)建的數(shù)據(jù)。

On-the-fly 和 Out-of-box 的互補(bǔ)

針對(duì)應(yīng)該選擇什么時(shí)機(jī)創(chuàng)建測(cè)試數(shù)據(jù),總結(jié)了如下三點(diǎn):

  1. 對(duì)于相對(duì)穩(wěn)定、很少有修改的數(shù)據(jù),建議采用 Out-of-box 方式。
  2. 對(duì)于一次性使用、經(jīng)常需要修改、狀態(tài)經(jīng)常變化的數(shù)據(jù),建議使用 On-the-fly 的方式。
  3. 用 On-the-fly 方式創(chuàng)建測(cè)試數(shù)據(jù)時(shí),上游數(shù)據(jù)的創(chuàng)建可以采用 Out-of-box 方式,以提高測(cè)試數(shù)據(jù)創(chuàng)建的效率。

【心得】
作者這一篇寫(xiě)的太清晰了有木有?。。?br> 仔細(xì)看看,作者提到的各種方式都有用到過(guò)。但是,可能由于經(jīng)歷的項(xiàng)目沒(méi)有作者公司的大,團(tuán)隊(duì)對(duì)于測(cè)試數(shù)據(jù)的準(zhǔn)備并沒(méi)有特別重視,只是覺(jué)得能用就好,有些時(shí)候效率低一點(diǎn)也能夠接受。所以從來(lái)沒(méi)有想過(guò)還可以這樣好好的總結(jié),并且在不同的時(shí)機(jī)選擇不同的方式,提升效率!
果然還是要做比較復(fù)雜的大項(xiàng)目,才能遇到更多的坑,從而提出更優(yōu)化的解決方式,然后才能有這么詳盡的總結(jié)和相關(guān)的心路歷程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容