去年有寫過兩篇博客,分別是淺談UI自動化測試和淺談接口自動化測試,都是一些基礎的方法論的內容,今年轉崗專門作自動化測試,有了不少新的發現,固然,也遇到了不少的挑戰。html
遂重開一篇博客,聊聊最近作自動化測試遇到的一些挑戰,以及本身的解決方法和一些思考。。。java
1、測試範圍python
不管是功能測試,仍是自動化或者性能測試,第一步要作的,是明確測試範圍和需求指標。對於自動化測試來講,特別是UI自動化,並非全部的功能點都適合作UI自動化。linux
根據具體的業務狀況和項目穩定程度,選擇UI自動化+API自動化結合,選擇合適的業務點來進行鍼對性的自動化測試方案設計,纔是最佳方案。sql
對於什麼項目適合作UI自動化,在以前的博客淺談UI自動化測試裏已經分析過,這裏列幾個我我的以爲比較適合作UI自動化的點:數據庫
①、使用頻次較高,異常判斷較多,且最基礎的功能,好比用戶註冊、登陸;編程
②、用戶端比較核心的功能,好比訂單中心,會員中心;服務器
③、促銷活動頁面、信息展現頁等;網絡
分層測試的概念,以前也介紹過了,分層測試金字塔以下:架構
從效果來看,單元自動化是收益最高的,可是單元自動化對大多數自動化測試初學者來講,難度太大。
且目前國內大部分中小型企業,開發自己的開發規範、管理等工做也作的不太好,單元自動化,實現的機率,短時間內不看好。
而接口自動化,目前來講是性價比最高的一種選擇。
UI自動化的投入和產出比,是三種模型中最低的,但對於愈來愈複雜的大型的系統,UI自動化在某些方面,也能夠減小不少發佈後冒煙測試的工做量。
2、系統架構
對大多數功能測試人員來講,系統架構不用太多關注,但對於自動化或者性能測試人員來講,系統架構是前期需求分析、技術方案選型設計的一個重點。
好比系統開發的編程語言,使用的數據庫類型,通訊服務框架(若是要進行API自動化,那麼系統所採用的通訊協議是繞不過去的一點),應用服務器的部署等,都是須要考慮的。
PS:我目前就任的這家企業,數據庫使用的是微軟全家桶套餐裏面的SQL server,而我測試腳本開發語言是python,它自己對SQL server和Oracle的支持並非很好,致使在數據庫配置時候,踩了不少坑。
固然,我最後也解決了這個問題。關於數據庫的支持問題,只是我遇到的問題裏面的一個很小的部分。
熟悉系統架構的另外一個緣由是:好比系統採用的開發語言是java,自動化測試人員自己使用的腳本開發語言也是java,那麼兼容性就是很好的,並且有技術問題,也能夠找開發同事幫忙解決,
這樣無形中也節省了不少時間,並且對本身的技術提高,也是不小的幫助。
熟悉了系統架構後,針對性的考慮自動化測試方案設計,技術方案選型,纔是最好的方式,不要用固有的方式來解決不一樣的問題,而要用不一樣的技術方案解決不一樣的問題。
附:python:利用pymmsql模塊操做SQL server數據庫
3、項目狀況
關於這點,我的認爲應該經過分析溝通來確認系統是否適合自動化測試工做。那麼,什麼樣的系統適合進行自動化測試?
如上圖所示,我大概羅列了一些適合進行自動化測試的項目所具有的一些特徵,固然,不須要所有具有,只須要知足幾點便可以考慮進行自動化測試(紅色線條標註部分爲基本的條件)。
固然,項目狀況不只僅是這些,還有其餘的一些點,也是須要考慮的,好比:
①、文檔管理
文檔包括需求文檔、測試方案、測試用例、測試規範、開發規範、數據庫表設計文檔、接口文檔等。
若是文檔不太完善甚至沒有對應的文檔,那麼自動化測試工做,前期的準備工做就須要投入更多的時間和精力。
PS:好比要進行API自動化,可是沒有接口文檔,沒有數據庫表設計文檔,那麼關於API的接口說明,入參出參說明,這將帶來不少附帶的工做量,而文檔數據的統計,又是一件很麻煩的事情。
有時候須要數據庫確認接口對數據的影響,對應的數據庫表字段,若是沒有相關文檔說明,那麼本身整理以及和DBA溝通熟悉,就須要花費不少的時間和精力。
而不少企業對自動化的認識太片面,認爲自動化能夠替代人發現不少BUG,且追求短時間的明顯效果,而若是沒有較完善的文檔管理,那麼自動化測試人員在前期的準備階段花費的時間將影響
leader對我的能力和工做效率的懷疑,能夠說這也是目前國內不少企業存在的弊端。
問題總歸是要解決的,若是遇到這種相似的問題,那麼在任務拆分和工時預估時候,能夠將這些因素考慮進去,計算在我的工時中,並註明緣由,在和leader甚至更高層評估中,拋出存在的問題,
推進問題的解決,這也是自動化測試人員的一種價值體現。
②、流程管理
項目的需求迭代是否穩定?從需求評審到開發、測試、發佈上線是否有比較規範的流程?
若是需求迭代較快或者不穩定,那麼自動化測試的腳本維護工做量將成倍增加;若是沒有較好的流程管理,自動化工做的進展總會遇到不少不可描述的坑,溝通成本,變動成本等,還會影響到
測試方案的設計和規劃。
在自動化測試中,須要針對性的熟悉瞭解這些問題點,作好應對的準備。自動化測試過程當中,變化是最大的挑戰!!!
4、「目標」一致
這裏的「目標」,指的是我的對工做的目標設定和leader對自動化工做的指望,站的角度不一樣,理解不一樣,所以指望的結果不一樣。並非要達成徹底的一致,我這裏想表達的是溝通的重要性。
我的針對系統狀況,技術架構,測試範圍的理解,對應的自動化測試方案設計和目標設定,應該與leader不斷溝通,不斷調整,達成必定程度上的一致,這樣也能避免不少後續的麻煩。
固然,目標的設定,也應該根據具體的自動化測試需求,進行任務拆分,評審,不斷調整,這是一個持續不斷的調整的過程,須要耐心和堅持!
5、運行環境
自動化測試腳本開發,也須要基於不一樣的環境,而環境的選擇,須要考慮不一樣的狀況,下面一一列舉說說我我的的思路:
一、SIT環境:
SIT環境,也稱爲系統集成環境,就是咱們常說的測試環境,若是測試腳本是基於SIT環境開發調試,那麼就須要SIT環境相對來講比較穩定。
可是大部分時候,SIT環境由於須要屢次的提交測試,交叉影響較大,且SIT環境和生產環境仍是有必定差別的(至於爲何,相信測試童鞋,都明白其中的痛點)。
二、UAT環境:
UAT環境,就是咱們所說的驗收環境,固然相似的,也有灰度環境等。UAT環境相對SIT環境來講,是比較穩定且和生產的一致性較高的,很適合進行自動化測試腳本開發和調試,以及平常的測試迴歸。
但自動化測試的做用又不限於這點,還能夠進行發佈後的生產冒煙,定時輪詢測試等。
三、生產環境:
若是在生產環境進行測試腳本開發和調試,以及測試執行,那麼就須要解決如下幾點問題:
①、網絡問題
通常咱們的SIT和UAT環境都是部署在企業內部,網絡環境也是走的內網,請求解析和外網有必定區別。在生產環境運行腳本進行迴歸冒煙的話,須要考慮真實的用戶操做環境,不一樣的網絡對測試結果影響。
並且測試腳本中,sleep最好能不用就不用(特別是UI自動化,強制等待容易帶來不少不可控的變數)。
②、數據污染問題
生產環境進行自動化測試迴歸冒煙,須要對測試所產生的數據進行隔離處理,不然會致使業務受到影響,而且對生產的數據形成污染。經常使用的數據隔離方法以下:
測試白名單帳號、網絡標記、線程標記、測試數據落入對應的測試庫,某些業務還可使用MOCK對象和擋板。
關於數據隔離這幾點,在性能測試中,也是須要考慮的一個重點,固然性能測試中也常用這些方法進行數據隔離,避免生產數據污染帶來的影響。
6、服務部署
以前的博客作接口測試須要哪些技能有介紹過,自動化測試的核心是持續集成。那麼一個獨立的不受影響的持續集成環境是必須的。
持續集成環境也叫做CI環境,相似的還有CD環境(持續交付)。
這些應用,在敏捷測試中,應用的比較多,不過目前行業內,我我的瞭解到,愈來愈多的企業開始搭建持續集成環境,這樣作的好處是不少的,好比:
①、版本迭代提測,能夠經過CI服務一鍵提交,節省時間,提升效率;
②、若是須要造大量的測試數據,能夠經過一個小腳本,只須要進行配置,點擊啓動按鈕便可;
③、發佈生產環境時候,能夠經過CI服務自動化打包部署,避免了人手工打包配置時候的誤操做等問題;
④、自動化測試腳本,部署在CI環境後,只須要點擊啓動,或者設置出發條件,定時任務的形式,來作到生產定時輪詢,發佈後冒煙等測試工做;
CI環境如何部署?你們能夠參考我以前的博客:linux環境:持續集成服務部署系列
7、測試策略
這裏的策略,能夠從下面幾個角度來講:
一、任務拆分
確認測試範圍和需求指標後,將自動化測試任務進行粒度更小的拆分,將工做內容所需時間精確到人/天的範圍,按時完成任務,有問題不斷調整;
二、優先級
任務拆分後,對任務進行優先級排序,經過評審溝通,確認先完成哪些任務,而後完成哪些等。
測試方案設計中,能夠考慮分爲第一期、第二期自動化測試任務,好比第一期實現自動化測試在必定程度上的覆蓋率,先實現PC端的自動化測試,第二期能夠考慮移動端的自動化測試覆蓋,
第三期能夠考慮自動化測試平臺的開發等等。有目標有計劃,根據項目變化和進度不斷調整。
自動化任務的優先級排序,能夠參考這幾點:
①、用戶使用頻率越高的優先級應該最高;
②、系統基礎功能應該排在優先級前列;
③、系統核心功能(好比支付、訂單)應該較早的覆蓋;
④、歷史記錄中生產出現問題叫多的功能點,應該考慮儘量的覆蓋;
三、工時預估
前期的準備工做(好比範圍確認、需求分析、CI環境部署、測試方案設計、技術框架選型、文檔整理等)完成後,須要針對具體的拆分後的任務進行工時預估,以確認工做階段性的進展,
方便隨時調整。工時預估須要考慮如下幾點:
①、自動化測試人員我的的技術能力,特色;
②、項目狀況、流程管理、系統架構的變化程度;
③、測試方案技術實現的難易程度;
8、解決問題
自動化測試道路上,全是坑!!!
工做中咱們會遇到不少問題,有溝通問題、管理問題、技術難點、以及一些不可描述的問題,但只有想辦法解決這些問題,咱們才能在工做中不斷提高,完成工做,得到該有的收穫。
不一樣的企業存在不一樣的各類各樣的問題,沒有完美的公司,所以工做中,學會適應環境,融洽溝通,也是工做中必須的一項內容。
工做的本質就是拿錢消災,解決問題,創造價值!!!
因此,良好的心態,堅持不懈的態度,解決問題的思路,是須要自動化測試童鞋所具有的。。。
以上就是我我的在自動化測試過程當中遇到的一些問題,挑戰,以及本身的一些思考和解決方法,但願能爲看到的童鞋提供必定的思路和幫助,僅供參考。。。
固然,其中不少內容,拿出來單獨說,也有不少值得探討的地方,限於篇幅這裏就不一一分析,後續會不斷更新。。。