聊聊自動化測試路上遇到的挑戰

去年有寫過兩篇博客,分別是淺談UI自動化測試和淺談接口自動化測試,都是一些基礎的方法論的內容,今年轉崗專門做自動化測試,有了很多新的發現,當然,也遇到了很多的挑戰。

遂重開一篇博客,聊聊最近做自動化測試遇到的一些挑戰,以及自己的解決方法和一些思考。。。

一、測試範圍

無論是功能測試,還是自動化或者性能測試,第一步要做的,是明確測試範圍和需求指標。對於自動化測試來說,特別是UI自動化,並不是所有的功能點都適合做UI自動化。

根據具體的業務情況和項目穩定程度,選擇UI自動化+API自動化結合,選擇合適的業務點來進行針對性的自動化測試方案設計,纔是最佳方案。

對於什麼項目適合做UI自動化,在之前的博客淺談UI自動化測試裏已經分析過,這裏列幾個我個人覺得比較適合做UI自動化的點:

①、使用頻次較高,異常判斷較多,且最基礎的功能,比如用戶註冊、登錄;

②、用戶端比較核心的功能,比如訂單中心,會員中心;

③、促銷活動頁面、信息展示頁等;

分層測試的概念,之前也介紹過了,分層測試金字塔如下:

從效果來看,單元自動化是收益最高的,但是單元自動化對大多數自動化測試初學者來說,難度太大。

且目前國內大部分中小型企業,開發本身的開發規範、管理等工作也做的不太好,單元自動化,實現的概率,短期內不看好。

而接口自動化,目前來說是性價比最高的一種選擇。

UI自動化的投入和產出比,是三種模型中最低的,但對於越來越複雜的大型的系統,UI自動化在某些方面,也可以減少很多發佈後冒煙測試的工作量。

二、系統架構

對大多數功能測試人員來說,系統架構不用太多關注,但對於自動化或者性能測試人員來說,系統架構是前期需求分析、技術方案選型設計的一個重點。

比如系統開發的編程語言,使用的數據庫類型,通信服務框架(如果要進行API自動化,那麼系統所採用的通信協議是繞不過去的一點),應用服務器的部署等,都是需要考慮的。

PS:我目前就職的這家企業,數據庫使用的是微軟全家桶套餐裏面的SQL server,而我測試腳本開發語言是python,它本身對SQL server和Oracle的支持並不是很好,導致在數據庫配置時候,踩了很多坑。

當然,我最後也解決了這個問題。關於數據庫的支持問題,只是我遇到的問題裏面的一個很小的部分。

熟悉系統架構的另一個原因是:比如系統採用的開發語言是java,自動化測試人員本身使用的腳本開發語言也是java,那麼兼容性就是很好的,而且有技術問題,也可以找開發同事幫忙解決,

這樣無形中也節省了很多時間,而且對自己的技術提升,也是不小的幫助。

熟悉了系統架構後,針對性的考慮自動化測試方案設計,技術方案選型,纔是最好的方式,不要用固有的方式來解決不同的問題,而要用不同的技術方案解決不同的問題。

附:python:利用pymmsql模塊操作SQL server數據庫

三、項目情況

關於這點,個人認爲應該通過分析溝通來確認系統是否適合自動化測試工作。那麼,什麼樣的系統適合進行自動化測試?

如上圖所示,我大概羅列了一些適合進行自動化測試的項目所具備的一些特徵,當然,不需要全部具備,只需要滿足幾點即可以考慮進行自動化測試(紅色線條標註部分爲基本的條件)。

當然,項目情況不僅僅是這些,還有其他的一些點,也是需要考慮的,比如:

①、文檔管理

文檔包括需求文檔、測試方案、測試用例、測試規範、開發規範、數據庫表設計文檔、接口文檔等。

如果文檔不太完善甚至沒有對應的文檔,那麼自動化測試工作,前期的準備工作就需要投入更多的時間和精力。

PS:比如要進行API自動化,但是沒有接口文檔,沒有數據庫表設計文檔,那麼關於API的接口說明,入參出參說明,這將帶來很多附帶的工作量,而文檔數據的統計,又是一件很麻煩的事情。

有時候需要數據庫確認接口對數據的影響,對應的數據庫表字段,如果沒有相關文檔說明,那麼自己整理以及和DBA溝通熟悉,就需要花費很多的時間和精力。

而很多企業對自動化的認識太片面,認爲自動化可以替代人發現很多BUG,且追求短期的明顯效果,而如果沒有較完善的文檔管理,那麼自動化測試人員在前期的準備階段花費的時間將影響

leader對個人能力和工作效率的懷疑,可以說這也是目前國內很多企業存在的弊端。

問題總歸是要解決的,如果遇到這種類似的問題,那麼在任務拆分和工時預估時候,可以將這些因素考慮進去,計算在個人工時中,並註明原因,在和leader甚至更高層評估中,拋出存在的問題,

推動問題的解決,這也是自動化測試人員的一種價值體現。

②、流程管理

項目的需求迭代是否穩定?從需求評審到開發、測試、發佈上線是否有比較規範的流程?

如果需求迭代較快或者不穩定,那麼自動化測試的腳本維護工作量將成倍增長;如果沒有較好的流程管理,自動化工作的進展總會遇到很多不可描述的坑,溝通成本,變更成本等,還會影響到

測試方案的設計和規劃。

在自動化測試中,需要針對性的熟悉瞭解這些問題點,做好應對的準備。自動化測試過程中,變化是最大的挑戰!!!

四、“目標”一致

這裏的“目標”,指的是個人對工作的目標設定和leader對自動化工作的期望,站的角度不同,理解不同,因此期望的結果不同。並不是要達成完全的一致,我這裏想表達的是溝通的重要性。

個人針對系統情況,技術架構,測試範圍的理解,對應的自動化測試方案設計和目標設定,應該與leader不斷溝通,不斷調整,達成一定程度上的一致,這樣也能避免很多後續的麻煩。

當然,目標的設定,也應該根據具體的自動化測試需求,進行任務拆分,評審,不斷調整,這是一個持續不斷的調整的過程,需要耐心和堅持!

五、運行環境

自動化測試腳本開發,也需要基於不同的環境,而環境的選擇,需要考慮不同的情況,下面一一列舉說說我個人的思路:

1、SIT環境:

SIT環境,也稱爲系統集成環境,就是我們常說的測試環境,如果測試腳本是基於SIT環境開發調試,那麼就需要SIT環境相對來說比較穩定。

但是大部分時候,SIT環境因爲需要多次的提交測試,交叉影響較大,且SIT環境和生產環境還是有一定差異的(至於爲什麼,相信測試童鞋,都明白其中的痛點)。

2、UAT環境:

UAT環境,就是我們所說的驗收環境,當然類似的,也有灰度環境等。UAT環境相對SIT環境來說,是比較穩定且和生產的一致性較高的,很適合進行自動化測試腳本開發和調試,以及日常的測試迴歸。

但自動化測試的作用又不限於這點,還可以進行發佈後的生產冒煙,定時輪詢測試等。

3、生產環境:

如果在生產環境進行測試腳本開發和調試,以及測試執行,那麼就需要解決以下幾點問題:

①、網絡問題

一般我們的SIT和UAT環境都是部署在企業內部,網絡環境也是走的內網,請求解析和外網有一定區別。在生產環境運行腳本進行迴歸冒煙的話,需要考慮真實的用戶操作環境,不同的網絡對測試結果影響。

而且測試腳本中,sleep最好能不用就不用(特別是UI自動化,強制等待容易帶來很多不可控的變數)。

②、數據污染問題

生產環境進行自動化測試迴歸冒煙,需要對測試所產生的數據進行隔離處理,否則會導致業務受到影響,並且對生產的數據造成污染。常用的數據隔離方法如下:

測試白名單賬號、網絡標記、線程標記、測試數據落入對應的測試庫,某些業務還可以使用MOCK對象和擋板。

關於數據隔離這幾點,在性能測試中,也是需要考慮的一個重點,當然性能測試中也經常使用這些方法進行數據隔離,避免生產數據污染帶來的影響。

六、服務部署

之前的博客做接口測試需要哪些技能有介紹過,自動化測試的核心是持續集成。那麼一個獨立的不受影響的持續集成環境是必須的。

持續集成環境也叫作CI環境,類似的還有CD環境(持續交付)。

這些應用,在敏捷測試中,應用的比較多,不過目前行業內,我個人瞭解到,越來越多的企業開始搭建持續集成環境,這樣做的好處是很多的,比如:

①、版本迭代提測,可以通過CI服務一鍵提交,節省時間,提高效率;

②、如果需要造大量的測試數據,可以通過一個小腳本,只需要進行配置,點擊啓動按鈕即可;

③、發佈生產環境時候,可以通過CI服務自動化打包部署,避免了人手工打包配置時候的誤操作等問題;

④、自動化測試腳本,部署在CI環境後,只需要點擊啓動,或者設置出發條件,定時任務的形式,來做到生產定時輪詢,發佈後冒煙等測試工作;

CI環境如何部署?大家可以參考我之前的博客:linux環境:持續集成服務部署系列

七、測試策略

這裏的策略,可以從下面幾個角度來說:

1、任務拆分

確認測試範圍和需求指標後,將自動化測試任務進行粒度更小的拆分,將工作內容所需時間精確到人/天的範圍,按時完成任務,有問題不斷調整;

2、優先級

任務拆分後,對任務進行優先級排序,通過評審溝通,確認先完成哪些任務,然後完成哪些等。

測試方案設計中,可以考慮分爲第一期、第二期自動化測試任務,比如第一期實現自動化測試在一定程度上的覆蓋率,先實現PC端的自動化測試,第二期可以考慮移動端的自動化測試覆蓋,

第三期可以考慮自動化測試平臺的開發等等。有目標有計劃,根據項目變化和進度不斷調整。

自動化任務的優先級排序,可以參考這幾點:

①、用戶使用頻率越高的優先級應該最高;

②、系統基礎功能應該排在優先級前列;

③、系統核心功能(比如支付、訂單)應該較早的覆蓋;

④、歷史記錄中生產出現問題叫多的功能點,應該考慮儘可能的覆蓋;

3、工時預估

前期的準備工作(比如範圍確認、需求分析、CI環境部署、測試方案設計、技術框架選型、文檔整理等)完成後,需要針對具體的拆分後的任務進行工時預估,以確認工作階段性的進展,

方便隨時調整。工時預估需要考慮以下幾點:

①、自動化測試人員個人的技術能力,特點;

②、項目情況、流程管理、系統架構的變化程度;

③、測試方案技術實現的難易程度;

八、解決問題

自動化測試道路上,全是坑!!!

工作中我們會遇到很多問題,有溝通問題、管理問題、技術難點、以及一些不可描述的問題,但只有想辦法解決這些問題,我們才能在工作中不斷提升,完成工作,獲得該有的收穫。

不同的企業存在不同的各種各樣的問題,沒有完美的公司,因此工作中,學會適應環境,融洽溝通,也是工作中必須的一項內容。

工作的本質就是拿錢消災,解決問題,創造價值!!!

所以,良好的心態,堅持不懈的態度,解決問題的思路,是需要自動化測試童鞋所具備的。。。

以上就是我個人在自動化測試過程中遇到的一些問題,挑戰,以及自己的一些思考和解決方法,希望能爲看到的童鞋提供一定的思路和幫助,僅供參考。。。

當然,其中很多內容,拿出來單獨說,也有很多值得探討的地方,限於篇幅這裏就不一一分析,後續會不斷更新。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章