去年11月,我加入了N記,緊接著進入新員工訓(xùn)練營。
開始一次簡單的中間件測試工具編寫任務(wù)。
這次訓(xùn)練營體驗給我的感覺就是:大公司不愧是大公司,這回我終于可以安心學(xué)點核心技術(shù)了。
?
任務(wù):
這個訓(xùn)練營有兩個任務(wù),一是熟悉這邊的敏捷開發(fā)流程;二是在訓(xùn)練營里做一定的編碼,用python編寫一個測試工具(樁,stub)。
我們要做的這個工具,是用來測試我們一種通信設(shè)備(B)上運行的程序(某種中間件),這個工具模擬另一種通信設(shè)備(A),發(fā)送一些按特定協(xié)議編碼的消息給另一種通信設(shè)備B,并能反編碼設(shè)備B返回的消息,也就是說要測設(shè)備B上的程序在收到一些消息時能否做出正確的回應(yīng)。
設(shè)備B對于不同消息的不同回應(yīng)有一系列的業(yè)務(wù)場景,每種業(yè)務(wù)場景可能包含幾種正確的情況,幾種異常的情況。這些場景,類似于我們做黑盒手工測試時經(jīng)常看到的業(yè)務(wù)場景。
?
而我們的工具要做的事情,就是:
1.讀取用戶輸入
2.把用戶輸入組裝成待編碼的文本
3.對待編碼的文本以需求規(guī)定的協(xié)議進行編碼,編碼成特定的由0101構(gòu)成的8位元組串,通常就是類似這樣:0101010111010000110101011010100 一大串大家肉眼看不懂的東東
4.讓我們工具跟指定的ip地址通過3次握手建立TCP鏈接
5.在建立好TCP鏈接后,通過發(fā)送/接收指定的登錄消息完成兩種設(shè)備在我們自定義的協(xié)議層面上的連接
6.把第3步編碼好的消息發(fā)到目標ip,并且接收對方返回的消息,把收到的消息壓入消息隊列。最后從消息隊列中提出我們期望收到的反饋消息
7. 再把結(jié)果反饋給用戶。
?
整個過程,這么多步驟,以一定的規(guī)則分別封裝成robot關(guān)鍵字,以便自動化測試組成員進行調(diào)用。
所有以上這些步驟,均以python實現(xiàn)。
?
此外,還有附帶的單元測試腳本,也是必須的。
?
現(xiàn)有代碼大概三四千行的樣子,實現(xiàn)了兩種設(shè)備之間通信的模擬,我們這一期,除了要增加一些這兩種設(shè)備之間的消息類型和場景之外,還要實現(xiàn)第三種設(shè)備的模擬器。
當然,第三種設(shè)備C和待測設(shè)備的通信B的通信,同樣遵循A和B的通信的那套協(xié)議和規(guī)則,只是客戶端和服務(wù)端的角色有所變化。
也就是說,A是B的服務(wù)端,B是A的客戶端。一個A可以和多個B同時通信。同時B又是C的服務(wù)端,C是B的客戶端。
?
有一個導(dǎo)師幫我們解答一些疑難問題,幫了大忙了~
還有一份詳細定義了協(xié)議和消息場景的文檔也幫了不少忙。
就算這樣子,我們還是遇到了不小的困難:
1.是進入這個訓(xùn)練營的時間,大家是不同的,也就是說我們按入職先后分別進入了訓(xùn)練營,并且有的人會提前離開訓(xùn)練營。
第一批人進入之后有一周時間學(xué)習(xí)和熟悉python并聽一些其他各方面的培訓(xùn)課程。(技術(shù)、業(yè)務(wù)、流程)
然后又有一周時間學(xué)習(xí)和熟悉這個工具的現(xiàn)有代碼。
第二批人也就是我進來之后已經(jīng)是整個流程的第三周,就是說要開始真實寫代碼了。我基本上沒時間熟悉python和讀代碼。
而且這一周一開始,第一批人就要走掉3個,他們基本不能參與寫代碼了
2.是訓(xùn)練營成員的編程基礎(chǔ)大不相同。但基本都不熟悉python。
這個訓(xùn)練營新員工里有開發(fā)也有測試,開發(fā)基本上都是C出身,測試都是黑盒出身。。。只有我是自動化測試出身的還學(xué)了雜七雜八一大堆語言。
所以我的優(yōu)勢是我學(xué)的亂七八糟的語言多,基本上再學(xué)個python達到能寫這個工具的程度是用不了一兩天的。
但問題是其他測試一開始基本寫不了代碼。而所有人在我進入這個team的時間點上,還沒有搞明白整個工具的內(nèi)部邏輯。
大部分人仍是一頭霧水,兩個C程序員基本搞懂一兩個模塊。(按我的劃分一共4個模塊)
所有人還沒有成功從git上拿代碼,也沒有人成功執(zhí)行單元測試。。。。這個我進入team當天就幫大家搞定了,主要是其他所有人都沒用過git,也不了解python的單元測試框架怎么運行,當然對我們專門搞自動化測試的人來說,不管什么語言的單元測試框架,都是那么的相似。
3.是我由于不是第一批進入,沒有時間參加其他課程的學(xué)習(xí),但是我還必須參加其他課程的考試。。。
以及被安排了很多網(wǎng)上學(xué)習(xí)課程必須盡快完成。。。
?
按照我對自己的要求,我既然參加了這個訓(xùn)練營,那么這個小工具的代碼我必須讀完。讀完的標準,我定的是:必須做到這東西就跟全部是我親手寫出來的一樣。(慚愧的是最后離開訓(xùn)練營,還沒做到百分百跟親手寫出來一樣,大概達成了95%吧,剩下5%是對按某協(xié)議規(guī)則編碼的第三方類庫的內(nèi)部原理還沒看過)。不然如果我參加完訓(xùn)練營回到team,team的人問我學(xué)了什么,我怎么說呢,脫產(chǎn)兩周去訓(xùn)練營做工具,竟然還不能把一個三四千行的工具全部搞懂搞透,我不知道別人怎么看,首先我自己這關(guān)我也過不了。
于是我定下的學(xué)習(xí)重點就是:
1.迅速完成現(xiàn)有代碼的閱讀,運行并調(diào)試所有的單元測試,理解所有第三方庫的調(diào)用和使用他們的原因,理解所有這個工具的底層原理。
2.迅速按照要求實現(xiàn)出至少一個我們要做的關(guān)鍵字,完成一種消息的收發(fā),并測試通過。然后這個代碼拿給其他人做參考,因為有的人真心不適合寫代碼,沒東西參考基本可以保證他們的模塊完不成。
3.迅速完成所有我拿下來的關(guān)鍵字編寫任務(wù)。然后看誰的來不及就給他搞定。并多給大家做code review。
總之雖然我沒不是scrum master或其他什么特殊角色,但我直覺知道這個sprint我不出大力氣的話,一定失敗。然后我估計了一下如果全部代碼由我一個人完成,差不多也能做完。不過還是給大家一點空間,讓大家自己做比較符合上面的期望。
下一篇分享讀代碼的個人心得、我對敏捷的理解、關(guān)鍵字驅(qū)動的自動化測試、git基礎(chǔ)、等知識是如何應(yīng)用在這個簡單的中間件測試工具上。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

