<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          測試人如何高效地設(shè)計自動化測試框架?

          共 2141字,需瀏覽 5分鐘

           ·

          2021-09-18 16:38



          關(guān)于測試框架的好處,比如快速回歸提高測試效率,提高測試覆蓋率等這里就不討論了。這里主要討論自動化框架包含哪些內(nèi)容,以及如何去設(shè)計一個測試框架。


          什么是自動化測試框架?


          它是由一個或多個自動化測試基礎(chǔ)模塊、自動化測試管理模塊、自動化測試統(tǒng)計模塊等組成的工具集合。以常見的前端UI測試為例,一個測試框架大概包括測試對象,測試組件,基礎(chǔ)類和函數(shù),工具類,測試數(shù)據(jù),異常處理,測試日志,斷言和測試報告等這些模塊。在設(shè)計測試框架的時候,我們要盡可能的將這些模塊有機的結(jié)合起來,將腳本能夠有效的組織、連貫應(yīng)用起來,提高測試腳本的可維護性和可讀性。



          好框架的定義


          由于應(yīng)用系統(tǒng)技術(shù)五花八門,幾乎沒有測試框架能應(yīng)用在多個項目上并體現(xiàn)出應(yīng)有的價值,所以一般情況都需要根據(jù)項目自身情況來定制化我們的測試框架,常用的有數(shù)據(jù)驅(qū)動,關(guān)鍵字驅(qū)動和兩種方式的混合。

          a. 數(shù)據(jù)驅(qū)動 (DDT):如果被測系統(tǒng)業(yè)務(wù)邏輯固定不變或變動較小,我們可以使用數(shù)據(jù)驅(qū)動,通過不同數(shù)據(jù)來保證測試覆蓋率,通常數(shù)據(jù)都是保存在外面文件或數(shù)據(jù)庫中,運行時自動獲取。特點是數(shù)據(jù)與測試腳本分離,基于模塊化的測試庫,一個驅(qū)動腳本可以執(zhí)行多個相似測試,這樣非常容易建立新測試。
          b.關(guān)鍵字驅(qū)動 :將數(shù)據(jù)與關(guān)鍵字結(jié)合來描述如何使用數(shù)據(jù)執(zhí)行測試。這種方法具備數(shù)據(jù)驅(qū)動的優(yōu)勢,同時非編程人員也能建立新類型測試。




          設(shè)計框架的思路


          1
          高內(nèi)聚低耦合:



          高內(nèi)聚就是每個模塊盡可能獨立完成自己的功能,不依賴于模塊外部的代碼;低耦合就是模塊與模塊之間接口的復(fù)雜程度,比如在類內(nèi)部盡可能減少方法之間的調(diào)用,否則一個方法的變動會影響調(diào)用它的另一個方法。
          比如,你要做兩個功能:對文本文件的讀寫,對 word 讀寫,同是IO你可以放在一個類里的不同方法,高內(nèi)聚。

          比如,寫了一個類,“人”類,“人”有自己的名字年齡等屬性,每個“人”又有一條狗做為自己的屬性,你可以把“人”類的屬性和“人”的狗的屬性都寫在“人”類里,這就成了高耦合。


          而把狗的屬性剝離出來,寫成“狗”類,在“人”類里只放一個對“狗”的對象做引用,這個“狗”類,即可做為“人”的屬性,也可以做它用,即 低耦合。



          2
          腳本分離


          對象、測試數(shù)據(jù)、業(yè)務(wù)邏輯相互剝離、靈活調(diào)用,在前端UI測試上可以得到明顯的效果,我們可以使用PageObject設(shè)計模式來實現(xiàn)對象和業(yè)務(wù)邏輯的剝離,使用DataProvider來實現(xiàn)數(shù)據(jù)業(yè)務(wù)邏輯分離。

          安裝相應(yīng)的環(huán)境依賴:

          • 安裝python3.7(要保證pip能用,一般安裝python3.7會自動安裝pip)
          • 安裝pytest框架---- pip install pytest
          • 安裝request庫---- pip install request
          • 安裝openpyxl庫(測試數(shù)據(jù)保存在excel中,需要依賴讀取excel的庫)---- pip install openpyxl
          • 安裝pycharm(編寫python腳本工具)



          3
          模塊化設(shè)計用例


          如果時間充裕且項目提供支持,可以遵循以下順序進行測試:頁面對象 - 功能點 - 業(yè)務(wù)邏輯 - 業(yè)務(wù)流程。

          從實現(xiàn)來說就是:先測試底層的頁面操作對象,通過調(diào)用操作對象、及業(yè)務(wù)邏輯實現(xiàn)對功能點的驗證,再通過調(diào)用業(yè)務(wù)邏輯組合功能點實現(xiàn)對業(yè)務(wù)流程的驗證。不同的業(yè)務(wù)流程,對于底層的操作組件、中間層的功能點函數(shù)是完全可以復(fù)用的,只是調(diào)用的業(yè)務(wù)邏輯的差異,或者是測試數(shù)據(jù)的差異性。這樣的好處是腳本相互獨立性,代碼復(fù)用,易維護,如有新的業(yè)務(wù)流程可以調(diào)用已有代碼來組合。

          • common:存放公共方法;
          • config:存放環(huán)境配置信息;
          • lib:存放第三方庫;
          • main:框架主入口;
          • report:存放allure測試報告;
          • test_case:存放測試用例;
          • test_data:存放測試數(shù)據(jù);



          4
          封裝基礎(chǔ)方法


          對于一些較通用的方法,可以封裝,比如log,assert,異常處理,文件讀寫操作,數(shù)據(jù)庫讀寫操作,保存頁面截圖等等,在需要的時候直接在測試用例里調(diào)用即可。



          如何開展自動化測試


          自動化測試實施思路:

          1.項目準(zhǔn)備:安裝相應(yīng)的環(huán)境依賴;

          2.設(shè)計基于pytest的測試框架結(jié)構(gòu):

          3.實現(xiàn)接口公共文件:封裝http請求;

          4.抽離測試環(huán)境配置信息:獲取不同環(huán)境的URL,放到config目錄;

          5.創(chuàng)建conftest.py放置一些公共的fixture;

          6.將測試數(shù)據(jù)放到excel中;

          7.編寫自動化測試業(yè)務(wù)代碼;

          8.集成allure;

          9.自動化執(zhí)行生成結(jié)果;

          10.Jenkins環(huán)境搭建;


          自動化開展建議:

          抓住業(yè)務(wù)測試工作中的痛點和領(lǐng)導(dǎo)的痛點,多溝通多交流,優(yōu)先解決基層的工作痛點,相信一個好的領(lǐng)導(dǎo)會看到你的責(zé)任心和付出;

          技術(shù)選型和方案可行性調(diào)研,多投入時間和精力,有的人性子急,前期做的很快,如果一開始的方向錯了,最終會得不償失;
          如果是比較復(fù)雜的解決方案,盡量前后端分離、保證各模塊的獨立性、可融合性、解耦不解體,做到靈活可擴展,要有下一盤大棋的準(zhǔn)備。


          end



          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久久久久AV少妇 | 日日摸日日搞 | 亚洲中文婷婷 | 国产黄色视频免费网址 | 伊人网小说一人一轮一乱一按 |