軟件測試52講筆記--14 更接近業(yè)務(wù)的抽象:讓自動化測試腳本更好地描述業(yè)務(wù)

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

14 更接近業(yè)務(wù)的抽象:讓自動化測試腳本更好地描述業(yè)務(wù)

這一篇介紹了GUI自動化測試中“業(yè)務(wù)流程(business flow)”的概念、核心思想以及應(yīng)用場景。

操作函數(shù)的粒度:一個操作函數(shù)到底應(yīng)該包含多少操作步驟才是最合適的。
很大程度上取決于項(xiàng)目的實(shí)際情況,以及測試用例步驟的設(shè)計(jì)。
可以遵循的設(shè)計(jì)依據(jù):以完成一個業(yè)務(wù)流程為主線,抽象出其中的“高內(nèi)聚低耦合”的操作步驟集合,操作函數(shù)就由這些操作步驟集合構(gòu)成。

銜接兩個操作函數(shù)之間的頁面
完成一個業(yè)務(wù)流程操作,往往會需要依次調(diào)用多個操作函數(shù),但是操作函數(shù)之間會有頁面銜接的問題。

業(yè)務(wù)流程抽象

基于操作函數(shù)的更接近于實(shí)際業(yè)務(wù)的更高層次的抽象方式。基于業(yè)務(wù)流程抽象實(shí)現(xiàn)的測試用例往往會靈活性非常好,可以很方便地組裝出各種測試用例。

基于業(yè)務(wù)流程抽象的測試用例偽代碼

在這段偽代碼中,調(diào)用了4個業(yè)務(wù)流程,每個都是作為獨(dú)立的類封裝的。類的內(nèi)部實(shí)現(xiàn)通常是調(diào)用操作函數(shù)。而操作函數(shù)內(nèi)部,則是基于頁面對象模型完成具體的頁面控件操作。

對于每一個業(yè)務(wù)流程類,都會有相應(yīng)的業(yè)務(wù)流程輸入?yún)?shù)類與之一一對應(yīng)。具體的步驟通常有如下幾步:

  1. 初始化一個業(yè)務(wù)流程輸入?yún)?shù)類的實(shí)例;
  2. 給這個實(shí)例賦值;
  3. 用這個輸入?yún)?shù)實(shí)例來初始化業(yè)務(wù)流程類的實(shí)例;
  4. 執(zhí)行這個業(yè)務(wù)流程實(shí)例。

執(zhí)行業(yè)務(wù)流程實(shí)例的過程,其實(shí)就是調(diào)用操作函數(shù)來完成具體的頁面對象操作的過程。

分析偽代碼發(fā)現(xiàn),每個業(yè)務(wù)流程都可以接受不同的起始頁面。通過這種方式可以很方便地完成兩個業(yè)務(wù)流程之間的頁面銜接。
這就需要在它的內(nèi)部對不同的初始頁面做出相應(yīng)的處理,以保證這個業(yè)務(wù)流程真正開始的頁面是在所傳入的頁面。

由于業(yè)務(wù)流程存在分支的可能性,每個業(yè)務(wù)流程執(zhí)行完成的最終頁面也不是唯一的,可以使用getEngPage方法拿到這個業(yè)務(wù)流程執(zhí)行結(jié)束后的最后頁面。

具體的,查看原文中作者對代碼的詳細(xì)解讀,就可以很清楚的理解,業(yè)務(wù)流程之間的頁面銜接是如何實(shí)現(xiàn)的。

業(yè)務(wù)流程的優(yōu)點(diǎn):

  1. 業(yè)務(wù)流程的封裝更接近實(shí)際業(yè)務(wù);
  2. 基于業(yè)務(wù)流程的測試用例非常標(biāo)準(zhǔn)化,遵循“參數(shù)準(zhǔn)備”、“實(shí)例化Flow”和“執(zhí)行Flow”這三個大步驟,非常適用于測試代碼的自動生成;
  3. 由于更接近實(shí)際業(yè)務(wù),所以可以很方便地和BDD結(jié)合。BDD就是行為驅(qū)動開發(fā)。

業(yè)務(wù)流程的核心思想是,從業(yè)務(wù)的維度來指導(dǎo)測試業(yè)務(wù)流程的封裝。由于業(yè)務(wù)流程封裝通常很貼近實(shí)際業(yè)務(wù),所以特別適用于組裝面向終端用戶的端到端(E2E)的系統(tǒng)功能測試用例,尤其適用于業(yè)務(wù)功能非常多,并且存在各種組合的E2E測試場景。

【心得】
以前做GUI自動化測試的時候,沒有用到這種方法,基本上是按照操作步驟一溜煙的走下來,對每個操作步驟及獲取元素的方式進(jìn)行了封裝,使得用例編寫人員無需編寫真正的代碼,而只要根據(jù)規(guī)則編寫操作步驟即可。
壞處就是可讀性沒有這么高,當(dāng)操作十分復(fù)雜的時候,操作步驟會特別多而且繁瑣,并且整個系統(tǒng)的用例中,存在大量重復(fù)的操作步驟(雖然引入了子用例的方式,不必每個用例都從頭開始寫所有的操作步驟),可讀性并不是很強(qiáng),僅適合比較小型,且相關(guān)人員對系統(tǒng)功能都比較熟悉的情況。
當(dāng)時自己也比較困惑,有沒有更好的方式。由于種種原因,自己并未在這個方向上進(jìn)行更深一步的探索,僅僅是完成了當(dāng)時的項(xiàng)目,但是相關(guān)的疑問一直沒有得到解答。
再來看作者的方法,適用性比我之前做過的那個要強(qiáng)很多,雖然用例編寫人員仍然需要編寫真正的代碼,但是由于做到了標(biāo)準(zhǔn)化,稍加培訓(xùn),也不是特別難的事情。
當(dāng)然,重點(diǎn)還是在操作函數(shù)的編寫以及業(yè)務(wù)流程的抽象上,這就需要在具體的項(xiàng)目中進(jìn)行實(shí)踐了。

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,591評論 19 139
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,367評論 2 126
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,875評論 5 101
  • 日念家人一好處念力加持享幸福! 【先生好】早飯做了地方飯小米干飯酸菜炒土豆片!然后一起去世宇買了些回來! 【自己好...
    風(fēng)瀟瀟blj閱讀 183評論 0 0
  • 李木強(qiáng)閱讀 157評論 0 0

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