目錄
壹、前言
二、自動化目的
三、自動化分類
四、自動化實現
壹、前言
在壹些測試交流群經常會看到有小夥伴在問,"怎麽做自動化測試?學習自動化測試有什麽資料嗎?自動化測試是不是很牛逼?" ,甚至有些言論是"不會自動化的測試人員,真的要被淘汰了嗎?"
不得不說壹堆流量號主抓住大眾心理,點進去的必然是賣課廣告,或者是關註微信公眾號領取測試資料大禮包。
實話實說,我之前也有同樣的疑問,甚至帶著擔憂。每次又不甘心得領著測試資料大禮包......
當然,隨著自己的認知不斷擴大,自己的壹套測試體系建設不斷完善,於是這些擔憂逐漸的消失。每項技術引用都要看適用場景,是否適合自己的團隊,因地制宜才能發揮其最大的價值。
因此,我想通過這篇文章來分享下我對於自動化測試的理解。
二、自動化目的
自動化工作可以節省很多人工操作成本,減少人工重復性操作,提高整個團隊的研發效率。但是如果搭建自動化體系需要耗費很長時間,投入很多人力資源,但是用戶只要2-3分鐘的手動工作就能解決,而且這個操作並不頻繁,又或者需要自動化操作的平臺變更叠代非常快並且沒有規律,自動化工具在後面類似累活的跟著。那麽自動化還是有必要嗎?
我之前在的團隊,造測試數據特別困難,嚴重影響了整個研發效率,但是當時也沒有壹個好的解決辦法,後來基礎研發組做了壹個造數平臺,這個平臺需要自己去配置各種字段,並且梳理出各個表字段的關聯,從頭到尾壹個壹個去構建場景,壹不小心就配置錯誤,看著提示妳也找不到原因的那種。這給造數過程中又添了壹個攔路虎,給本不充裕的測試時間,又耗時壹把。
如果能在做執行任務前評估任務的投入和收益,那麽是不是就能更加合理的開展這項任務。那麽自動化測試的投入和收益是怎樣的呢?
投入:通過測試人員借助腳本或者工具實現自動化,維護自動化平臺。
收益:提高測試效率,提升測試人員的成長。
自動化測試真的提高測試效率嗎?真的可以提升測試人員的成長嗎?針對後者,我認為是有的。接下來我們就來聊聊自動化測試是否提高測試效率。
三、自動化分類
自動化壹般分為接口自動化和UI自動化,其中UI自動化又分為Web UI自動化和App UI自動化,按照我的理解還應加上部署自動化。
接下來我將針對這四種自動化的場景做壹個介紹。因為我對於UI自動化不是很熟悉,我認為投入產出比不是很高,主要還是因為我沒咋接觸過,所以後面僅做簡單介紹,重點講解接口自動化和部署自動化。
四、自動化實現
4.1、接口自動化
接口
接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞過程,以及系統間的相互邏輯依賴關系等。
流程
填寫接口,入參,對出參進行斷言,每天定時構建,輸出測試報告。
入參覆蓋範圍:必選,可選,有/無/null,類型,數值大小/數值範圍,特殊字符;
出參:json,data;
接口關聯:接口之間的依賴,數據傳遞;
斷言:對響應做核驗,可以對狀態碼或者msg做校驗。
優點
接口測試可以做到更多的覆蓋場景;
接口測試可以更快的發現服務端問題;
接口測試相對容易實現自動化持續集成;
接口測試相對於比單元測試比較貼近業務場景;
技術選型
1、MeterSphere
MeterSphere 是壹站式測試平臺,涵蓋測試跟蹤、接口測試、性能測試、 團隊協作等功能,全面兼容 JMeter、Postman、Swagger 等開源、主流標準。
MeterSphere是壹個功能交全的平臺,並且是開源的,對於免費版就足夠小團隊使用了,使用門檻相對來說較低,對於技術能力要求不高,所以是壹個不錯的選擇。MeterShpre使用的技術棧是SpringBoot+vue,以及壹些中間件,也可以在此基礎上進行二次開發。
2、Python
通過Python來做接口自動化的話,常用組件有:執行庫Requests,斷言庫unittest,測試報告HTMLTestRunner,通過持續集成Jenkins做定時構建。
框架思想:封裝,數據驅動。
使用Python的話則需要掌握壹定的代碼能力,當然這個對個人技能的提升是很有幫助的,但是如果在時間比較緊迫的並且沒有足夠的技術功底情況下,還是比較推薦MeterSphere的。
4.2、部署自動化
部署
部署就是將源代碼編譯成可運行軟件包,比如jar包或者war包,並且將軟件包放到目標環境,將軟件包運行起來,並且能夠被客戶端調用。
流程
通過遠程倉庫拉取代碼,前端編譯,後端編譯,下發軟件包到目標機器,重啟服務,啟動失敗則告警。
優點
相比傳統手工部署,速度更快,不容易出錯,提高交付效率。
技術選型
gitlab或者gitee:代碼托管
git:版本管理
node:前端編譯
maven:後端編譯
ansible:下發文件
shell:重啟服務
pipeline:流水線構建
Jenkins:CICD大總管,將以上工具整合起來,提供頁面供用戶操作部署流程。
4.3、Web UI自動化
UI自動化
通過頁面元素定位定位到元素,模擬用戶的操作行為,點擊,輸入,拖拽等。
流程
定位元素,模擬用戶操作,發送測試報告。
優點
適用於回歸主流程,並且變更不頻繁的場景。可用於重復性的功能測試及驗證。我之前在的團隊做過壹段Web UI自動化,但是因為需求頻繁變更,並且精力有限,維護這個平臺的成本較高,後面就沒有持續維護了。
技術選型
Python,selenium。
4.4、App UI自動化
UI自動化
通過頁面元素定位定位到元素,模擬用戶的操作行為,點擊,輸入,拖拽等。
流程
定位元素,模擬用戶操作,發送測試報告。
優點
適用於回歸主流程,並且變更不頻繁的場景。
技術選型
Appinum。
結論:我認為接口自動化和部署自動化是能夠帶來收益的,是真實能夠提高效率的,並且也能夠給測試人員的帶來成長。
關註嘎嘎軟件測試
搞測試,不迷路
呱呱大王本呱帶妳飛!
嘎嘎軟件測試 分享個人成長、團隊管理、軟件測試技能知識等內容,做到有思想、有觀點、有深度,歡迎訂閱。