v0.9是Hitchhiker在2017農(nóng)歷年的最后一個(gè)版本售滤,而起點(diǎn)正是剛過完2016農(nóng)歷年罚拟,農(nóng)歷2018即將到來,一年輪回完箩,今天寫點(diǎn)東西稍微回顧下hitchhiker的2017赐俗。
先還是說v0.9,這次版本發(fā)布主要帶來一個(gè)新的輔助測試功能:免腳本的斷言測試嗜憔,這是一個(gè)攜程的朋友提出來的需求秃励。
之前Hitchhiker支持在test腳本里寫 tests['assert'] = value 這樣來斷言,但很多QA其實(shí)并不會編程吉捶,或者會其他語言但對js不熟夺鲜,這樣斷言寫起來就不太方便,所以這次應(yīng)朋友的需求加了這個(gè)功能:
上面動(dòng)圖已經(jīng)展示了功能和用法呐舔,具體就不多說了币励。
回頭看下Hitchhiker的2017,一年過來珊拼,對這個(gè)項(xiàng)目來說結(jié)果還不錯(cuò)食呻,大小版本發(fā)了14個(gè),github上有了1k+的star,我也因此認(rèn)識了一些朋友仅胞,對技術(shù)上有也不少提升每辟,總體看對我來說是成功了。
https://github.com/brookshi/Hitchhiker
起初干旧,大概是2016年年中渠欺,我開始負(fù)責(zé)公司一個(gè)API項(xiàng)目,因?yàn)槭墙鹑诠咀得校瑢?shù)據(jù)準(zhǔn)確性要求很高挠将,所以產(chǎn)生想法,做一個(gè)工具來輔助這個(gè)API項(xiàng)目的測試编整,減少溝通成本以及QA做regression時(shí)的壓力舔稀。后面準(zhǔn)備了下,在2016年農(nóng)歷年后掌测,也就是17年的3月份内贮,正式開始編碼實(shí)現(xiàn)功能。
由于不懂設(shè)計(jì)赏半,所以UI上參考了比較熟悉的一個(gè)成名已久的測試工具:Postman贺归,這也導(dǎo)致:即使后來除了UI外,實(shí)現(xiàn)了很多Postman沒有的功能也還是擺脫不了Postman的影子断箫,不少人一看跟Postman一樣,覺得沒有意義秋冰,在這點(diǎn)上算是一個(gè)敗筆仲义。不過也因?yàn)轭怭ostman UI的易用性,讓使用Hitchhiker的人很容易上手剑勾,這又是一大優(yōu)勢埃撵,算是兩者抵消吧。
當(dāng)時(shí)虽另,想要通過這個(gè)工具解決的問題只有2個(gè):
減少開發(fā)的溝通成本暂刘,原因是我們的API是面向用戶的,依賴公司其他Team的眾多API捂刺,我們寫一個(gè)接口可能要調(diào)用公司好幾個(gè)API才能整合出想要的數(shù)據(jù)谣拣,這就需要開發(fā)去和好幾個(gè)team打交道,溝通成本很大族展。而如果要所有開發(fā)都做一遍同樣的事情森缠,浪費(fèi)的時(shí)間可想而知。
減少浪費(fèi)QA人力做無聊的數(shù)據(jù)對比仪缸,這個(gè)算是自動(dòng)化的一部分贵涵,上面說了,金融數(shù)據(jù)的準(zhǔn)確性是非常關(guān)鍵的,我們的產(chǎn)品又是直面用戶的宾茂,有問題第一個(gè)找到我們頭上瓷马,所以QA在這方面也非常頭痛,以往都是依賴人眼去對比線上和UAT兩個(gè)版本的報(bào)表是否匹配跨晴,容易疏忽不說决采,時(shí)間有效的情況下,覆蓋率也很難達(dá)到要求坟奥,且對QA來說树瞭,這類事情是最應(yīng)該自動(dòng)化的。
解決這2個(gè)問題的方案是:
很多工具需要互相share爱谁,有更新就share的話也很麻煩晒喷。 Hitchhiker支持多人同時(shí)在線維護(hù)同一份API,支持實(shí)時(shí)更新访敌,一個(gè)開發(fā)在完成溝通后凉敲,把依賴的API都整理在一起,寫好case寺旺,其他開發(fā)就可以直接借鑒使用了爷抓,只花一個(gè)人的時(shí)間,成果所有開發(fā)共享阻塑。
使用Schedule來實(shí)現(xiàn)Case的自動(dòng)化運(yùn)行蓝撇,以及用腳本做斷言來判斷數(shù)據(jù)是否正確,但金融數(shù)據(jù)上經(jīng)常有動(dòng)態(tài)值陈莽,比如求上個(gè)月的回報(bào)渤昌,對今天來說,上個(gè)月是1月走搁,但過一個(gè)月后独柑,上個(gè)月就是2月了,數(shù)據(jù)很可能就不一樣了私植,所以對這類動(dòng)態(tài)值用斷言方式很難解決忌栅,Hitchhiker支持在做自動(dòng)化測試時(shí)對比不同環(huán)境的數(shù)據(jù),我們以線上的數(shù)據(jù)為準(zhǔn)的話就可以知道沒上線環(huán)境的API運(yùn)行是否正常了曲稼。
這兩個(gè)功能在17年7月左右先后實(shí)現(xiàn)索绪,我的API項(xiàng)目的接口測試也陸續(xù)加了進(jìn)去,基本上滿足了需求躯肌。
由于項(xiàng)目的API的并發(fā)量比較大者春,在服務(wù)器有限的情況下,需要盡量提前優(yōu)化來提高吞吐清女,避免上線后出問題钱烟,所以需要在測試階段給到服務(wù)器壓力,然后在10月份時(shí)用Go語言為Hitchhiker實(shí)現(xiàn)了壓力測試。
在0.5版本時(shí)用gitbook重寫了文檔: Hitchhiker使用文檔
接下來的一個(gè)版本又大幅加強(qiáng)了腳本功能拴袭,支持require读第,支持上傳腳本庫和數(shù)據(jù)文件,標(biāo)志著 NPM 里幾十萬的js庫盡可以拿來用了拥刻。
不過可惜的是基于Go語言寫的壓力測試由于對js支持有限怜瞒,不得不放棄,轉(zhuǎn)而使用Node重寫了一份壓力測試的功能并在v0.6版本上線般哼。
其實(shí)到這時(shí)為止吴汪,Hitchhiker已經(jīng)滿足我的API項(xiàng)目的需求了,但隨著使用者越來越多蒸眠,需求不斷出現(xiàn)漾橙,后續(xù)的版本基本都在實(shí)現(xiàn)這些需求了:
v0.7:支持自定義smtp,為請求生成各種語言的code楞卡,schedule數(shù)據(jù)不同時(shí)的diff展示
v0.8: 自動(dòng)化測試結(jié)果統(tǒng)計(jì)
v0.9: 基于UI的斷言測試
還有很多功能想要實(shí)現(xiàn)霜运,文檔,Mock蒋腮,管理平臺等等淘捡,將會在接下來的2018里陸續(xù)實(shí)現(xiàn)。
在線體驗(yàn): http://www.hitchhiker-api.com/池摧, 可以用 try without login
來免登錄使用 (在線演示不支持壓力測試和上傳js庫焦除,虛擬機(jī)單核的,撐不紫栈妗)踢京。