摘要:本文分享自華為云社區(qū)測試金字塔,你在哪一層,作者敏捷的小智。測試金字塔中間層接口測試隨著微服務(wù)架構(gòu)的廣泛普及,也成為大勢所趨。相對(duì)比單元測試,服務(wù)接口測試的覆蓋范圍要大一些。
摘要:軟件質(zhì)量是衡量一個(gè)軟件是否成功的重要標(biāo)準(zhǔn),在軟件的生命周期中,自動(dòng)化測試金字塔給大家提供了一種測試策略,根據(jù)項(xiàng)目具體的情況,優(yōu)化測試活動(dòng),最終讓軟件質(zhì)量得到提升。
本文分享自華為云社區(qū)《測試金字塔,你在哪一層?》,作者:敏捷的小智 。
軟件質(zhì)量是衡量一個(gè)軟件是否成功的重要標(biāo)準(zhǔn),在軟件的生命周期中,如果沒有良好的質(zhì)量管控,很容易造成產(chǎn)品質(zhì)量不滿足客戶預(yù)期,最終導(dǎo)致項(xiàng)目交付困難。軟件質(zhì)量可以通過規(guī)范化的研發(fā)流程、系統(tǒng)的軟件測試等方式進(jìn)行保障,本文我們就聊點(diǎn)測試相關(guān)的內(nèi)容。
軟件測試是伴隨著軟件開發(fā)一同誕生的,隨著軟件規(guī)模大型化,結(jié)構(gòu)復(fù)雜化,軟件測試也從最初的簡單“調(diào)試”,發(fā)展到當(dāng)今的自動(dòng)化測試。原始的“調(diào)試”,在這里就不細(xì)聊了,那自動(dòng)化測試是什么呢?自動(dòng)化測試是把以人為驅(qū)動(dòng)的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程,自動(dòng)化測試通常會(huì)借助某些工具或者框架。雖然不能完全取代手工測試,但相比手工測試來講,自動(dòng)化測試可以減少人力成本,降低重復(fù)工作,從而更快速、高效的進(jìn)行測試活動(dòng)。
測試金字塔是一種自動(dòng)化測試過程的金字塔形策略結(jié)構(gòu),用來指導(dǎo)軟件開發(fā)過程中,各層自動(dòng)化測試的投入比例,其最早由Mike Cohn在2009年的著作《Scrum敏捷軟件開發(fā)》中提出。Mike Cohn在書中指出:測試金字塔從上到下分為三層,分別是UI測試、服務(wù)/接口測試、單元測試,越接近金字塔底部的測試活動(dòng),投入的工作量應(yīng)該越多,即單元測試投入工作量最多,接口測試次之,UI測試投入最少。
單元測試屬于代碼級(jí)別的測試,編寫成本低,執(zhí)行速度快,能夠快速定位問題,極限編程中的TDD測試驅(qū)動(dòng)開發(fā)很多時(shí)候都是圍繞單元測試開展。單元測試可以說是最低級(jí)別的測試活動(dòng),關(guān)于單元測試的內(nèi)容也很多,在這不做過多介紹。
隨著微服務(wù)架構(gòu)的廣泛普及,API也成為大勢所趨。因而,對(duì)API進(jìn)行持續(xù)測試成為DevOps的關(guān)注點(diǎn)之一,如果沒有API接口測試,微服務(wù)架構(gòu)的實(shí)施對(duì)于企業(yè)將會(huì)成為一場災(zāi)難。
接口測試是測試系統(tǒng)組件間接口的一種測試,主要用于測試系統(tǒng)與外部其他系統(tǒng)之間的接口,以及系統(tǒng)內(nèi)部各個(gè)子模塊之間的接口。接口測試既可關(guān)注單個(gè)接口的參數(shù)取值和參數(shù)取值組合的合理性,也可以驗(yàn)證產(chǎn)品功能的完整性和正確性。相對(duì)比單元測試,服務(wù)/接口測試的覆蓋范圍要大一些。
接口測試的重點(diǎn)如下:
Swagger是一種可生成、描述并調(diào)用RESTFUL風(fēng)格API的框架。Swagger官網(wǎng)的樣例Demo——petstore(寵物商店)對(duì)外提供一系列可以對(duì)寵物信息進(jìn)行增刪改查的接口,本文使用這些接口進(jìn)行接口測試。
首先,通過華為云DevCloud的云測功能中的“測試用例”,創(chuàng)建接口測試的測試用例。
將petstore項(xiàng)目的網(wǎng)址設(shè)為默認(rèn)環(huán)境變量,這里給他命名為“pethost”,測試用例可通過“$$petstore”的形式,直接調(diào)用該變量。
環(huán)境變量也可以不設(shè)置,但每次測試都需要輸入petstore的域名,很麻煩,設(shè)置成環(huán)境變量可以減少工作量,云測中輸入“$$”可以直接關(guān)聯(lián)預(yù)設(shè)的環(huán)境變量。
petstore項(xiàng)目中,“添加寵物信息”是通過post請(qǐng)求完成的,該請(qǐng)求的請(qǐng)求體如下所示
創(chuàng)建“URL請(qǐng)求”,將請(qǐng)求類型設(shè)置為“POST”,請(qǐng)求地址為“$${pethost}/v2/pet”,在請(qǐng)求體中輸入上圖Json字符串,請(qǐng)求部分設(shè)置完成。
接下來,我們?cè)O(shè)計(jì)我們預(yù)期的檢查結(jié)果,期望返回值是200,即成功,如果返回其他響應(yīng)碼則測試失敗。
同時(shí),還要對(duì)響應(yīng)體中的某些參數(shù)做提取,便于后續(xù)業(yè)務(wù)的測試使用。在這里我們提取相應(yīng)體中category.id的值,并將他賦給局部變量“id”。
請(qǐng)求設(shè)置完成后,我們執(zhí)行用例,可以看到響應(yīng)碼是200,結(jié)果是成功的。如果想看到測試不成功的場景,可以試試不按照參數(shù)列表規(guī)定,使用其他參數(shù)。
通過“近一次的結(jié)果”中“響應(yīng)”,可以看到這次請(qǐng)求的返回值,返回值中提供的各類參數(shù)都可以通過上文提到的“響應(yīng)提取”功能進(jìn)行提取,供其他測試使用。
寵物信息創(chuàng)建完成后,我們通過Get請(qǐng)求查詢寵物是否真的添加完成。
創(chuàng)建“URL請(qǐng)求”,將請(qǐng)求類型設(shè)置為“GET”,請(qǐng)求地址中,通過“$id”直接調(diào)用之前接口返回的id(同“$$”,“$”可以直接關(guān)聯(lián)預(yù)設(shè)的局部變量)。
響應(yīng)碼設(shè)置為200,預(yù)計(jì)測試通過。
執(zhí)行用例后可以看到響應(yīng)碼是200,和預(yù)期相符,測試成功。
通過“id”查詢到的寵物信息也和之前創(chuàng)建的寵物信息一致,表示這兩個(gè)功能是OK的。
測試完成后,需要?jiǎng)h除測試數(shù)據(jù)。
創(chuàng)建“URL請(qǐng)求”,將請(qǐng)求類型設(shè)置為“DELETE”,同樣通過“$id”刪除對(duì)應(yīng)的寵物信息。
響應(yīng)碼設(shè)置為200,預(yù)計(jì)測試通過。
執(zhí)行用例后可以看到響應(yīng)碼是200,和預(yù)期相符,測試成功。
通過響應(yīng)體也可以看出,寵物信息刪除完成。
以上就是一個(gè)簡單的接口測試的例子,體現(xiàn)了接口測試既可以測試單個(gè)接口的功能,也可以測試產(chǎn)品多個(gè)模塊聯(lián)動(dòng)的功能。
在測試金字塔中,UI測試的覆蓋范圍廣,接近業(yè)務(wù)側(cè),但是編寫成本高、執(zhí)行速度和穩(wěn)定性都會(huì)下降,問題定位也很難。所以在測試設(shè)計(jì)中,要減少界面層的測試。如果是下層測試可以覆蓋的場景和邏輯,為了提高測試的速度和節(jié)省資源,盡量放到下層去進(jìn)行。
軟件想要有一個(gè)好的質(zhì)量,嚴(yán)謹(jǐn)?shù)臏y試活動(dòng)必不可少,自動(dòng)化測試金字塔給大家提供了一種測試策略,我們要根據(jù)項(xiàng)目具體的情況,優(yōu)化測試活動(dòng),最終讓軟件質(zhì)量得到提升。
最近華為云與高校聯(lián)合發(fā)起的開學(xué)季活動(dòng),邀請(qǐng)了華為專家、斬獲21offer的優(yōu)秀學(xué)長,采用線上直播+賽道闖關(guān)+豐厚獎(jiǎng)品的形式進(jìn)行,旨在讓同學(xué)們了解華為前沿研發(fā)理念和先進(jìn)技術(shù),體驗(yàn)用華為云不同產(chǎn)品進(jìn)行場景應(yīng)用的開發(fā),加深高校學(xué)生對(duì)企業(yè)技術(shù)應(yīng)用的了解,讓校園學(xué)習(xí)與企業(yè)技術(shù)應(yīng)用接軌,為高校學(xué)生的擇業(yè)就業(yè)進(jìn)行助力賦能。
獎(jiǎng)品多多,了解一下:華為云DevCloud&AI&IoT新學(xué)期挑戰(zhàn)賽
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119613.html
摘要:九安卓中如何取出日志信息把安卓系統(tǒng)日志信息實(shí)時(shí)導(dǎo)入到本地運(yùn)行使用某個(gè),實(shí)時(shí)獲取該的日志信息里面的返回信息接口自動(dòng)化面試題一按你的理解,軟件接口是什么答就是指程序中具體負(fù)責(zé)在不同模塊之間傳輸或接受數(shù)據(jù)的并做處理的類或者函數(shù)。 ...
摘要:事件冒泡階段,從目標(biāo)元素出發(fā),向外層元素冒泡,最后到達(dá)頂層或,依次執(zhí)行綁定再其上的事件。在中,利用第三個(gè)參數(shù)控制其是從哪個(gè)階段開始,是從捕獲階段開始,而則是跳過捕獲階段,從冒泡階段開始。 花一天時(shí)間研究完了DOM2級(jí)事件中addEventListener的執(zhí)行機(jī)制,作為開山第一帖,和大家講講多個(gè)addEventListener同時(shí)添加時(shí)的執(zhí)行先后規(guī)律:showImg(https://s...
摘要:有一句名言計(jì)算機(jī)科學(xué)中的任何問題都可以通過加上一層間接層來解決,一層不夠就再加一層。計(jì)算機(jī)科學(xué)的確是靠著一層又一層的抽象與封裝解決了巨量的問題。 David John Wheeler有一句名言計(jì)算機(jī)科學(xué)中的任何問題都可以通過加上一層間接層來解決,一層不夠就再加一層。后半句是我加的 (* ̄︶ ̄) ,雖然有點(diǎn)玩笑的意思,但是也的確能說明一些問題。計(jì)算機(jī)科學(xué)的確是靠著一層又一層的抽象與封裝解...
摘要:那么哪個(gè)先彈呢由于此時(shí)事件處于第二階段,即處于目標(biāo)階段,彈出順序取決的也不再是捕獲或冒泡,而是誰在代碼中先注冊(cè),因此,在這段代碼中,彈出的是捕獲冒泡。 這是本人的第一篇文章,歡迎大家多多批評(píng)指正! DOM2級(jí)事件中addEventListener的執(zhí)行機(jī)制,多個(gè)addEventListener同時(shí)添加時(shí)的執(zhí)行先后規(guī)律: W3C的DOM事件觸發(fā)分為三個(gè)階段:1.事件捕獲階段:即由最頂層元...
閱讀 1681·2021-09-22 15:21
閱讀 2898·2021-09-09 09:32
閱讀 2746·2021-09-02 09:52
閱讀 3336·2019-08-30 14:02
閱讀 2252·2019-08-26 13:25
閱讀 1496·2019-08-26 13:24
閱讀 1639·2019-08-26 10:31
閱讀 1593·2019-08-26 10:16