為什么要拓展接口測試能力
上一篇文章 測試那些事兒(十)- 接口測試(上) 我們講了什么是接口測試能力及如何鍛煉自己獲得這些能力赵誓,今天我們來講下如何利用學(xué)會的接口測試能力繼續(xù)拓展蕊苗,讓它的功效發(fā)揮到最大。
提前聲明一下拜姿,和上期一樣峻汉,我們還是不講工具贴汪。做接口測試的工具有很多储藐,Jmeter、Postman什么的比比皆是嘶是,選擇什么來進行接口測試根據(jù)每個人和每個公司的口味而不同钙勃。
有同學(xué)會問了,接口測試能力功效提升到最大是什么意思聂喇?就兩個字:提效辖源。具備了接口測試的能力,意味著來了需求后你能夠進行業(yè)務(wù)級的接口測試希太,但是在一次一次的接口BUG修改后克饶,你需要不停的重復(fù)驗證;而且誊辉,如果本次需求對之前的接口有影響矾湃,你還不得不找到之前的接口再執(zhí)行一遍。長此以往堕澄,人不累死才怪邀跃。說到這里,大家肯定已經(jīng)有了答案 - 做自動化巴茏稀拍屑!
沒錯,小編團隊也已經(jīng)有了一套成熟的接口自動化體系坑傅,但是本期的目的不是來宣揚它的僵驰,而是聲明創(chuàng)造和使用它的目的。在我看過的無數(shù)簡歷中唁毒,都寫著“使用python搭建接口自動化測試框架”等等描述蒜茴,但是面試的時候一問,不是接口測試能力偏弱浆西,就是開發(fā)的框架太過簡單粉私,根本無法進行深入的接口測試。
為什么室谚?
我想這個是和現(xiàn)在測試行業(yè)內(nèi)的一些現(xiàn)象有關(guān)系毡鉴,如:
- 招聘JD和薪資上輕手工重自動化
- 有編程經(jīng)驗敲門磚會比較硬
這些其實只是表象,最終公司要的一定是具備真才實學(xué)的人秒赤,要盡量避免只會皮毛猪瞬,不明就里。
在我看來入篮,手工測試和自動化測試的主要區(qū)別在于效率陈瘦,但核心目的相同,都是保證系統(tǒng)的正確性和穩(wěn)定性潮售。我在帶領(lǐng)團隊痊项、培養(yǎng)人的過程中深刻的體會到锅风,一個能夠把功能手工測試(用例設(shè)計、評審鞍泉、測試皱埠、復(fù)盤)做到優(yōu)秀閉環(huán)的測試人,很快就能上手接口測試咖驮。而一個脫離了功能手工測試的人边器,往往設(shè)計不好接口測試用例!所以托修,核心還是測試思維&能力的沉淀忘巧。在此基礎(chǔ)上做的提升,一定要記住自動化不是目的睦刃,提效才是砚嘴。千萬不要為了做自動化而去做自動化!
又有同學(xué)會問了涩拙,做接口自動化測試框架往往需要編程基礎(chǔ)际长,沒有代碼基礎(chǔ)怎么變得優(yōu)秀?別忘了我之前說的吃环,那是工具的事兒也颤,現(xiàn)在有很多工具都是開源的,做出一款既有UI又有接口測試功能的框架也不是什么難事兒郁轻。而且,剛才說的并不是說具有編程能力會怎么怎么樣文留,而是強調(diào)不能只關(guān)心編程能力而忽略了測試核心能力好唯,否則就本末倒置了。我認為具備基礎(chǔ)的編程能力是很有必要的燥翅,因為它能幫助你更好的做接口自動化測試骑篙。
業(yè)務(wù)級自動化接口測試需要什么
這里插一嘴,之前分享過如何做性能測試森书,我認為也屬于接口測試提效的一個分支靶端,所以在這里給下鏈接:測試那些事兒(七)- 性能測試
業(yè)務(wù)級自動化接口測試要想形成規(guī)模,需要幾個必備的東西 - 接口請求&返回值驗證工具凛膏、參數(shù)腳本生成器杨名、接口返回值提取器、結(jié)果查看器猖毫、發(fā)送郵件功能台谍、框架、CI等吁断。
接口請求&返回值驗證工具
這個是最基礎(chǔ)的功能趁蕊,要做接口測試我們起碼要能夠發(fā)出請求并獲取到返回值吧坞生。并且返回值獲取后,起碼要保證里面的值要能夠進行自動斷言驗證吧掷伙。
接口返回值提取器
由于是業(yè)務(wù)級的接口測試是己,所以一個接口的返回值中的一個 key-value 往往是下一個或者下幾個接口的參數(shù),那我們就需要能夠從任意一個接口返回值中隨意獲取數(shù)據(jù)的組件任柜, 也就是提取器赃泡。
參數(shù)腳本生成器
這個用的機會較少,但是會成為能不能自動化接口測試的攔路虎乘盼。比如有些接口需要給出當(dāng)時的時間升熊,不能是一個寫死的時間,怎么辦绸栅?我們就需要通過編寫腳本來生成一個參數(shù)级野,調(diào)用這個接口時,使用腳本生成為當(dāng)時的時間即可粹胯。
結(jié)果查看器
這個主要是調(diào)試的時候用蓖柔,我們需要在調(diào)試接口自動化測試用例時不停的觀察參數(shù)和結(jié)果的數(shù)據(jù)來保證高效的完成用例編寫。
發(fā)送郵件功能(參考 Python發(fā)送郵件的實現(xiàn))
整個業(yè)務(wù)功能的接口測試用例寫完后风纠,完整執(zhí)行一遍况鸣,光能夠在結(jié)果查看器上看到結(jié)果是不行的,還需要通知到各個干系人竹观,如測試镐捧、開發(fā)等。所以臭增,要做好郵件通知的功能懂酱,做到結(jié)果不遺漏。
框架
也就是將上述所有功能都連接起來進行自定義組合的一套系統(tǒng)誊抛,包括上面的所有組件功能列牺。
CI(持續(xù)集成)
持續(xù)集成是最終的提效工具,它可以讓每次開發(fā)提交完代碼后都出發(fā)你的相關(guān)業(yè)務(wù)接口測試拗窃,做到接口測試的全面覆蓋和監(jiān)控瞎领!
舉個栗子
還記得在 測試那些事兒(十)- 接口測試(上) 中我們說的購物車功能的接口測試用例嗎?簡化一點共涉及添加商品到購物車接口随夸、刪除購物車中商品接口九默、修改購物車中商品數(shù)量接口、查看購物車列表接口等四個接口逃魄,這四個接口可以組合成閉環(huán)接口測試用例如下:
- 調(diào)用查看購物車列表接口保證購物車中商品為空
- 調(diào)用添加商品到購物車接口添加一個商品
- 調(diào)用查看購物車列表接口保證購物車中商品已添加
- 調(diào)用修改購物車中商品數(shù)量接口增加(或減少)商品數(shù)量
- 調(diào)用查看購物車列表接口保證購物車中商品已修改
- 調(diào)用刪除購物車中商品接口刪除商品
- 調(diào)用查看購物車列表接口保證購物車中商品為空
OK荤西,那我們就套用今天講的這幾個做接口自動化的組件來用這個實例走一遍吧~
- 調(diào)用查看購物車列表接口保證購物車中商品為空
這一步用到了接口請求&返回值驗證工具,需要按照查看購物車列表接口的文檔來輸入相應(yīng)的參數(shù)來進行接口請求,且在請求得到返回值后能夠進行斷言邪锌,判斷出里面的商品列表為空勉躺。這一步進行請求時除了要基礎(chǔ)的會需要用到鑒權(quán)數(shù)據(jù),比如用戶token觅丰。為了得到它饵溅,可以在此之前先調(diào)用登錄接口來獲取token,在進行接下來操作妇萄。 - 調(diào)用添加商品到購物車接口添加一個商品
這一步用到了接口請求&返回值驗證工具蜕企,調(diào)用添加商品到購物車接口時會用到商品id等信息并驗證返回值數(shù)據(jù)正常,這些信息可以保留為參數(shù)來做之后接口的接口返回值校驗冠句。如果業(yè)務(wù)系統(tǒng)對商品id做了轉(zhuǎn)化并在返回值中返回轻掩,且會在之后接口中用到的話,需要用接口返回值提取器來將這個值存為參數(shù)懦底。 - 調(diào)用查看購物車列表接口保證購物車中商品已添加
這一步用到了接口請求&返回值驗證工具唇牧,調(diào)用獲取列表后拿到返回值來進行對比,用到了上一個接口中記錄的參數(shù)們聚唐,因為我們要看到列表用真實存在了剛剛添加的商品丐重。 - 調(diào)用修改購物車中商品數(shù)量接口增加(或減少)商品數(shù)量
這一步用到了接口請求&返回值驗證工具,調(diào)用修改購物車中商品數(shù)量接口增加(或減少)商品數(shù)量杆查,并驗證返回值正確扮惦。 - 調(diào)用查看購物車列表接口保證購物車中商品已修改
這一步用到了接口請求&返回值驗證工具,調(diào)用獲取列表后拿到返回值來進行對比亲桦,保證商品數(shù)量正確崖蜜。 - 調(diào)用刪除購物車中商品接口刪除商品
這一步用到了接口請求&返回值驗證工具,調(diào)用刪除購物車中商品接口刪除商品烙肺,并驗證返回值正確纳猪。 - 調(diào)用查看購物車列表接口保證購物車中商品為空
這一步用到了接口請求&返回值驗證工具,調(diào)用獲取列表后拿到返回值來進行對比桃笙,保證購物車為空。
在寫這些用例的過程中和最后沙绝,我們需要整體運行用例并觀察結(jié)果查看器看進行用例調(diào)試搏明,并保證在運行完用例后可以通過發(fā)送郵件功能通知各個干系人。最后使用CI(持續(xù)集成)部署我們的用例闪檬,實現(xiàn)每次開發(fā)提交接口代碼修改時即觸發(fā)我們的用例星著。
測試人需關(guān)注
本章講了接口測試提效 - 自動化的一些知識和思想。和其他文章不同粗悯,也是讓很多小伙伴百爪撓心的是虚循,我自始至終沒有講用什么工具,還是那句話 - 用什么實現(xiàn)不是關(guān)鍵横缔,你的測試思想和目的才是!>ジ铡! 大家可以去深入的了解下 Postman膛锭、Jmeter粮坞、Jenkins等工具初狰,也許會有意外的收獲。