自動化好像是測試行業永恆不變的熱點話題。貌似也是測試行業爭議最大的話題。不知道如今還有多少言論說自動化沒有用的,記得前段時間的時候網上還有很多人在爭論自動化的價值和做用,但其實自動化不只僅是存在測試行業。 如今的運維行業以及最近特別火的devops概念都是深深的依賴着自動化的。 好像咱們也從沒據說人家運維圈子在爭論自動化有沒有用。往近了說咱們公司專門有運維開發來搞運維自動化, 往遠了說google也有SRE團隊大行其道。自動化是人家圈子裏根正苗紅的標配。爲何到了測試圈子裏爭議就這麼大呢?我一直以爲這是個很奇怪的現象。大道理我就不講了,理科男沒那麼多文縐縐的詞彙,我只講講我以爲有價值的自動化是怎麼個打開方式把。
注:測試圈子太大,每一個領域有各自不一樣的狀況,若有不一樣,歡迎探討。前端
節省資源。我實在想不出來有什麼目的比這個還更重要的了。我一貫以爲不以節省資源爲目的的自動化都是耍流氓。java
之因此有這麼一個誤區緣由也很簡單。UI自動化不管是selenium仍是rf。日常用的API確實沒多少,很好學。稍微有代碼基礎的人就能很快上手,而且以爲這真的很簡單。 可是,實則否則。寫個腳本跑起來很簡單。可是按產品業務構建起一個由數百甚至數千個腳本組成的自動化測試項目就徹底不是一回事了。腳本的穩定性,可維護性,可擴展性,業務上的拆分,執行的性能,報表的展現,日誌的展現,異常捕獲與處理,分佈式運行,與數據庫和各類底層存儲介質的通訊等等都是要考慮的。同時你還要考慮自動化最大的敵人--需求變化所帶來的影響。你要從項目之初就設計好自動化項目的架構來針對這個多變性。 這要求測試人員有起碼的代碼設計能力。只惋惜不少人用着Python,用着Java。可我看着都覺得這是在寫shell,寫c。連起碼的封裝都作很差,我實在不以爲這是在用「面向對象的語言」。python
形成這個誤區的緣由也很簡單。技術和業務拆解能力不足就直接去搞自動化了。因此天然就沒什麼好效果。並且忙於在維護腳本中奔波。而後總結出了一個結論--UI自動化沒有什麼卵用。mysql
每一個項目面對的狀況不同,我就不說太多了。介紹下我廠如今的狀況。 6個瀏覽器併發一個小時基本跑完全部UI自動化。以前3個QA3天跑完全部case,如今是7個小時。如今的痛點仍然是運行速度問題。 但願今年能申請到更多的資源。web
這個在業界比較火,各大廠測試圈子的寵兒。自從分層測試理念出現之後就開始嶄露頭角。成本低,速度快,效果好,運行也穩定。UI自動化中不少奇形怪狀的坑在接口測試裏是踩不到的。根據金字塔型的測試理念,測試人員大多都更關注這一層。 打開方式上其實與UI自動化並沒有太大的區別,上面說的那些該作的仍是得作。仍是那句話,得有代碼設計能力和業務能力來支撐接口自動化。只不過接口自動化不只僅是http接口自動化,還有各種底層協議通信,例如一些RPC協議的接口。 廣義上來講只要是對外提供服務的都是接口,不只侷限於須要網絡通信的。哪怕是個lib是個jar包,都是能夠作接口測試的。 咱們公司也叫模塊級測試。這時候就是語言相關的東西了,再也不是你想用什麼語言就用什麼語言,是要使用開發的語言去開發的repo裏以單側的形式編寫測試代碼。這時候偏底層的東西多,須要瞭解開發代碼和架構,須要用mock。正確的打開方式參照UI吧,理念上差的不太多。工具仍是推薦java的,rest-assured,其餘的跟UI的工具同樣面試
這部分也一直是有爭議的。糾結於究竟是QA來仍是運維來負責這部分自動化。各家公司的觀點都不同,以前面試的時候問過不少候選人環境相關的問題,其中比較多的都是說交給運維來作的,他們最多自動化部署一個前端(app,browser)或某一個模塊。不多見候選人是能獨立把整個產品部署起來的,能畫出產品架構圖的就更少了。我比較偏向於公司內部的產品環境由QA維護,我廠也確實是這麼作的。個人理由也很簡單,咱們的產品很偏底層,要測負載均衡,高可用,異常處理等等,常常要增減節點,kill掉各類底層服務。因此必需要對產品架構很瞭解。要清楚各層各模塊是怎麼通信的,都負責什麼任務。出了錯怎麼定位,去哪看日誌,找哪一個開發都要清楚,因此搭建環境的過程是十分有助於以後的測試工做的。同時QA負責環境自動化也是有一些好處的。sql
到底該誰來作不爭論了,各家有各家的狀況。我來介紹一下咱們的打開方式把。docker
如今業界要麼用傳統的虛擬機加shell。要不就用當前大火的Docker。 我以前使用前者,如今熱愛後者。下面是我廠的環境部署流程圖。
shell
之因此弄成這樣要解釋一下,這個跟咱們的業務形態耦合的很重。 因爲咱們是TO B的業務,並且大部分狀況是進入到客戶場地部署的。客戶場地會出現各類限制。 例如沒有網絡,沒有root權限,五花八門的操做系統等等。因此就衍生出了部署測試,咱們也稱後端兼容性測試。因此上圖的右邊咱們的部署鏡像有不少個系統版本的。這些是咱們跟運維和進場工程師共同協定的標準鏡像----基本就是一個官方的OS鏡像加少許的工具。同時使用一個普通的沒有任何額外權限的用戶。目的就是測試產品對各類狀況的兼容性。因此才造就了咱們的部署包很大,由於依賴都打在了部署包裏。 咱們部署環境的時候能夠選擇一個鏡像進行部署。數據庫
以上介紹的全部自動化類型都是要加入到持續集成裏的。 我以前寫過一篇文章介紹過持續集成,在那裏我就說過持續集成是個比較難的東西。它是對團隊工程文化的一種考驗。是細節的堆砌。你要把上面所說的全部自動化類型都作好,而後開發人員要寫好單元測試,團隊要設計好的分支模型。具體細節能夠翻我以前的帖子,我就不重複的逼逼叨了。
好了,這就是小弟作過的能拿的出手的自動化了,其餘各種牛逼的東西不提也罷,我都不專業。