您現在的位置是:首頁 > 農業
測試員,你遇到過哪些自動化致命難題?3步教你搬走這些絆腳石
svn衝突怎麼解決
在自動化測試的過程中,你是否遇到過以下問題?
1、一個人做自動化的時候挺和諧的,啥毛病沒有,多人自動化的時候就發現有很多衝突。
2、指令碼到底是拆分好,還是合在一起好,如果拆,要怎麼拆?
3、自動化指令碼做好了,但是做持續整合後,發現有的地方卻又不那麼自動化,還是很繁瑣。變成了一個假的自動化,這也往往導致自動化指令碼執行的次數少,價值沒有體現的問題。
這些問題在走自動化路上的童鞋應該多少都遇到過,那麼如果順利的去搬走這些絆腳石呢?
搬走法一:搭設框架並制定多人協同的規則
1、我們在做自動化時,確認要用什麼框架,比如說採用Python的UnitTest框架
2、由一個人來負責搭設框架,如下圖
2。1、配置檔案不可少,經常要變動的引數,不能寫死在腳本里的引數,都可以放到data下面,比如說伺服器地址,由於多個迭代並行開發,經常會分配不同的ip地址,如果寫死ip就會導致在其他迭代中不能正常執行,所以要先提煉出來放配置檔案中。當配置檔案中的引數一多時,那麼命名規則就尤為重要了,配置檔案的規則要有明確定義,比如說我們把伺服器地址統一配置成URL=192。168。*。*,而不要出現多個表示伺服器地址的配置名,如又出現一個叫IP=192。168。*。*。
2。2、寫一個指令碼的時候會用到很多方法,此時不要寫到具體的case裡面,而是要實現公共的類和函式,放到public。當不同的人去寫case時,就可以不用重複程式碼,去public找就可以,日積月累,將越來越豐富。
2。3、執行具體case時,我們必須要有前置條件,比如說我的case要在登入後才能執行,那麼這個登入的帳號我必須確保它是存在的,如果不存在我就自動新增進去,這樣指令碼的回訪率就很高了,所以這個inital。py 就是幹這個的。
2。4、在執行指令碼的過程中,我們產生了一些資料,但是這些資料是我們不想要保留的,那麼我還可以進行場景恢復,這個restore。py就可以幹這個。
3、具體的框架出來後,接下來就是各位自動化測試的工程師們按照既定的規則進行填充用例,覆蓋更多的場景。
千萬不要零散的寫指令碼,你一指令碼我一個指令碼,沒有規範,這樣其實對做持續整合來說會是一個非常難的事情,你可能會花很多的時間去調整指令碼,所以一開始就要先搭設框架。
搬走法二:指令碼會經歷拆拆合合,不斷的整合出最適合
指令碼case還不多的情況下,往往是整在一起比較方便,一個指令碼測試一個專案,感覺維護起來很方便,但是當case多了以後,發現會出現維護難,甚至是效能有問題,比如SoapUI會出現out of memeroy的情況,此時就不得不拆。還有當指令碼過於龐大時,一旦出現問題時,就要開啟一大段程式碼進行除錯,著實也讓人很頭疼。
那是不是拆的很細呢,一個 case 一個指令碼?這個也有弊端,那麼多指令碼,維護也不方便。所以還是要把握一個度,可能一開始這個度把握不準,那就慢慢的進行拆或整合,就像程式設計師也要經常的進行重構是一樣的道理,總結出一個合適的度,就可以。比如說我們要做網頁的自動化測試 case,可以根據頁籤或者抽屜來拆分指令碼,這樣會更加清晰一些。
搬走法三:不斷的最佳化,從半自動變成全自動
之前做 SoapUI 介面時,將配置的引數寫到了 SoapUI 腳本里面,這樣導致每次修改配置檔案,都要去開啟具體的指令碼,然後修改,非常麻煩。所以就進行了解耦,把需要配置的引數放到 Global,這樣只要改這個檔案即可,無需開啟指令碼檔案,維護和操作性帶來大大的便捷。但是問題來了,當整合到 jenkins 上後,很多的團隊在同一臺測試機器上跑指令碼,SoapUI 只有一個,所以 Global 經常被改的面目全非。這樣每次在 jenkins 上跑之前,還要去遠端測試機,把 Global 改成正確的才行,很繁瑣,且也無法利用 jenkins的功能,實現一旦程式碼更改就觸發執行指令碼的自動化機制。所以導致腳本回放次數低,每次手動執行。對於這個問題大家雖然覺得麻煩,但都習以為常。變成了一個半自動化的自動化測試。
事實上自動化測試不僅僅是 case 的自動化測試,讓整個流程都自動化,順暢的跑起來才是真正的自動化。對於這個問題的解決方案其實很簡單,我們把手動遠端修改配置檔案的操作讓它自動化掉,每次在執行這個指令碼前,都去修改配置檔案,也就不會怕其他人改了配置檔案影響到自己的指令碼執行。
熟悉 SoapUI 的同學應該不難發現,Global 其實是存在 soapui-settings。xml 檔案裡面,路徑為C:\Users\Administrator\soapui-settings。xml,那麼其實我們只要把需要的配置檔案放到svn上,然後透過py指令碼去讀取svn上的配置檔案,然後將內容進行拼裝成xml的格式寫入這個soapui-settings。xml即可,當然最後要在jenkins上配置好這個py指令碼,就能全自動了。
自動化測試路上的一些絆腳石確實有時候讓人很頭疼,但解決每一個測試路上的絆腳石後,都能讓自己成長一點,對自動化有了更加深入的理解和認識。追求卓越,讓自動化變的更自動化,讓測試效率提升,一起收穫滿滿的成就感。
關注我,每天分享軟體測試技術乾貨&求職面試經驗技巧~~
下一篇:薅羊毛是什麼意思?
推薦文章
- control要不要雙寫l?
單詞解析control一、含義1、作動詞的時候,表示:控制...
- 高能之作《斗羅大陸:開局獲得神級武魂》,都是老書蟲誠心推薦
其實蕭天陽也是想差了,或者說此時的唐仨對一個小孩也沒有必要太過警惕...
- 《底特律:我欲為人》幫助一名女孩下定決心逃離暴力生活
當她接觸到《底特律:我欲為人》這款遊戲時,馬上就被其中的劇情迷住了,當玩到Alice跟Kara的故事時,她逐漸意識到,這就是她每天的生活...