【软件测试】自动化测试到底怎么做(单元测试自动化,接口自动化,UI自动化)
文章目錄
- 前言
- 軟件測試三層金字塔
- 單元測試
- 接口測試
- UI測試
- 自動化測試三種類型
- 單元自動化測試
- 接口自動化測試
- UI自動化測試
- 結(jié)束語
前言
大家好,我是洋子,自動化測試已經(jīng)是測試領(lǐng)域老生常談的話題了,今天給大家分享自動化測試到底該怎么做
軟件測試三層金字塔
在講自動化測試前,先看下軟件測試的分層模型,如下圖所示的“三層金字塔”,分為單元、服務(wù)和UI三個層級。盡管大家對此的具體描述各不相同(有人將三層分別定義為單元、接口、集成測試;也有人將整個金字塔劃分為4-5個層級),但金字塔自底向上的結(jié)構(gòu)是大家公認(rèn)和遵循的
單元測試
單元測試是針對代碼單元(通常是類/方法)的測試,單元測試的價值在于能提供最快的反饋,在開發(fā)過程中就可以對邏輯單元進(jìn)行驗(yàn)證。好的單元測試可以幫助改善既有設(shè)計,在團(tuán)隊(duì)掌握 TDD的前提下,單元測試能輔助重構(gòu),幫助提升代碼整潔度。
接口測試
接口(API)測試是針對業(yè)務(wù)接口進(jìn)行的測試,主要測試內(nèi)部接口功能實(shí)現(xiàn)是否完整。比如內(nèi)部邏輯是否正常、異常處理是否正確。
接口測試關(guān)注的重點(diǎn)更多在于數(shù)據(jù)層面,如數(shù)據(jù)處理,數(shù)據(jù)狀態(tài),數(shù)據(jù)傳遞
接口測試的主要價值在于接口定義相對穩(wěn)定,不像界面或底層代碼會經(jīng)常發(fā)生變化,所以接口測試比較容易編寫,用例的維護(hù)成本也相對較低。在接口層面準(zhǔn)備測試的性價比相對較高。手動進(jìn)行接口測試的常用工具有Postman,瀏覽器F12調(diào)試工具
UI測試
UI測試從用戶的角度驗(yàn)證產(chǎn)品功能的正確性,測的是端到端的流程,并且加入用戶場景和數(shù)據(jù),驗(yàn)證整個過程是否流暢。有時候在UI測試時,還會進(jìn)行集成測試,集成測試的業(yè)務(wù)價值最高,它驗(yàn)證的是一個完整的流程,但因?yàn)樾枰?yàn)證完整流程,在環(huán)境部署、準(zhǔn)備用例及實(shí)施等方面成本較高,實(shí)施起來并不容易。
自動化測試三種類型
前面我們了解到了軟件測試的三層模型,所以自動化測試也是基于這三層模型進(jìn)行展開的,我們可以在單元測試階段進(jìn)行單元自動化測試,接口測試階段進(jìn)行接口自動化測試,在UI測試階段進(jìn)行UI自動化測試。
單元自動化測試
因?yàn)閱卧獪y試關(guān)注的重點(diǎn)更多在于代碼的實(shí)現(xiàn)與內(nèi)部邏輯,所以要想進(jìn)行單元自動化測試,對測試開發(fā)工程師的代碼能力要求比較高。對于不同的開發(fā)編程語言,有對應(yīng)的單元測試框架,比如Java 有Junit、testNG 。C#有Nunit 。Python 有UnitTest 、Pytest 。Go 有 testing 、GoConvey 、
GoStub、GoMock、GoMonkey。運(yùn)用這些測試框架,再結(jié)合一些自動化測試(腳本)平臺,CI流水線運(yùn)行單測插件等我們就可以進(jìn)行單元自動化測試了。
接口自動化測試
接口自動化當(dāng)中,可以構(gòu)造三種接口自動化case,分別是單接口、場景、diff 自動化case
單接口自動化case顧名思義就是對單個接口構(gòu)造自動化case,包含請求方式,接口名和接口路徑,傳參,預(yù)期返回結(jié)果。在校驗(yàn)預(yù)期返回結(jié)果時通常是會進(jìn)行斷言,常用的斷言方式可以選擇鍵值對(鍵為返回的字段名,值為返回的數(shù)據(jù)),JSON Schema和Yaml
場景自動化case則是將多個單接口自動化case根據(jù)業(yè)務(wù)場景集成起來,能夠發(fā)現(xiàn)業(yè)務(wù)場景下的接口問題,比如超時,上下游異常等
diff測試簡單來說就是比對相同接口在不同版本/不同環(huán)境下面的返回內(nèi)容是否符合預(yù)期,diff測試目前很多互聯(lián)網(wǎng)大廠已經(jīng)在采用,我們在寫自動化case同樣要構(gòu)造diff自動化case,構(gòu)造的方法和單接口自動化case相同,只是我們需要不同的環(huán)境URL地址進(jìn)行對比
如果使用Java語言,可選擇TestNG或者REST Assured 作為測試管理框架,搭配Maven+HttpClient+Jenkins+Allure/ReportNG測試報告+MyBatis+mock+springboot 可以開發(fā)一套基于Java的接口自動化測試平臺。如果使用Python語言,接口自動化測試管理框架可以是Pytest/Unitest/Airtest/Robot Framework 四選一 。搭配Requests庫+PyMySQL+Allure測試報告+Flask/Django可以開發(fā)一套基于Python的接口自動化測試平臺
UI自動化測試
無論是Web端還是App端,UI自動化測試都是基于頁面元素的識別和定位來模擬用戶行為。UI自動化測試工具常見的有Appium,Selenium,搭配Pytest或者Airtest測試管理框架,可以開發(fā)出一套UI自動化測試平臺。
結(jié)束語
自動化測試是一種比手工測試更快發(fā)現(xiàn)問題的手段,它能夠提高測試效率和質(zhì)量,近幾年來互聯(lián)網(wǎng)大廠針對人工智能領(lǐng)域,利用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法做了許多探索,如用例自動生成,問題自動分析等等,學(xué)會自動化測試還是很有必要性。
總結(jié)
以上是生活随笔為你收集整理的【软件测试】自动化测试到底怎么做(单元测试自动化,接口自动化,UI自动化)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android ota更新app,企业
- 下一篇: 三角形外接球万能公式_任意四面体的外接球