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

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
