
這個時代,技術迭代速度越來越快,當敏捷開發逐漸成為主流,軟件測試流程中的主要矛盾也就暴露了出來:不斷縮短的迭代周期與落后的測試流程之間的矛盾。
要解決這個矛盾,一種全新的測試流程理念:基于RPA(機器人流程自動化)的軟件自動化測試也應運而生。
RPA本身是一項通用的理念和相關的技術,它把一個頭緒繁瑣但有固定模式的工作流程,通過一些簡單的手段,以低代碼或者零代碼的代價進行快速自動化。它可以用于日常重復性的工作流自動化,比如HR流程自動化或者財務流程自動化
它也可以用于軟件自動化測試,使測試自動化的代碼量極大地降低,從而降低測試成本,提高測試效率。傳統測試自動化是通過編寫代碼的手段,主要是馮諾依曼單體式編程的方式,寫出以代碼表達的測試用例,用來測試其它業務軟件的功能和其他特性。把這二者結合起來,軟件測試自動化可以由RPA加持后,用于非常復雜的場景。
傳統的自動化測試往往是要求自動化測試的編寫者熟練掌握一種或幾種編程語言,編寫一些稱為測試用例的程序去測試其他的程序或系統。
由于本質上采用的使馮諾依曼單體式編程范式,對于功能內聚性較強的軟件系統尚能勝任,但是對于現代分布式、云化、異步并發的系統,編程難度和復雜度迅速提升,難以開發高覆蓋度的測試用例。RPA則更適合這種復雜的場景。
從編程上講RPA沒有帶來新的內容,它只是帶來了理念上的創新和有正對性的以人的行為為中心的測試方法。
RPA更多的是對應到接口和UI測試這兩個部分以及這里沒有提及的端到端場景測試。
RPA適合模擬人類行為進行測試過程。對于一個復雜的測試過程,我們首先要知道人會怎么測。作為傳統的測試自動化來講,測試者需要一個過程,把人類的行為轉換成為機器能夠理解的邏輯,這就是測試自動化所編寫出來的測試用例,跟最初為人類所設計和執行的測試過程邏輯上等價而實際執行上已經發生了扭曲。
RPA則是用技術手段以自動化方式嚴格執行人類行為,整個開發和執行過程以人類大腦習慣的思維方式展開,使得測試過程更有效。這也是為什么RPA相對不太適合單元測試的原因,因為單元測試面向的是代碼邏輯而非人類行為。
RPA與傳統自動化測試相比在編碼上沒有太大的可比性,它的主要亮點在于以全新的視角審視測試過程,將測試還原為以人類行為為中心的活動,同時借助于現代技術進步使這一過程以低成本的方式得以落地實現。
RPA本身并不是專為測試而生的一項技術,所以不存它涵蓋什么樣的測試類型的顯式對應關系。它只是提供了一項基礎能力,我們可以把它用在測試自動化的范疇之內,可以做現有的大部分的測試自動化,除非要測試的對象是非人類行相關的,比如說機器學習當中的某種深度模式發現,它在計算機行為空間里進行脫離人類行為的計算過程。
RPA不會改變軟件測試的理論基礎,它只是提出了一種新方法,使測試自動化更加易于上手和高效。
目前市面上的RPA工具有很多,比如微軟的Power Automate,開源界的Robot Framework、UI Path、UI Vision、TagUI、Open Robot等等。有的是純開源軟件,有的是商業軟件,但大多數都提供社區版本供大家免費上手學習使用。
從實踐上說所有的RPA軟件的目標都是低代碼或零代碼解決流程自動化的問題,所以只要會使用鍵盤鼠標操作電腦就可以使用RPA工具來做測試自動化。上手的難易程度也因RPA工具而定,像Power Automate是全圖形界面操作,容易使用;而Robot Framework是半編碼方式,需要學習它的語法和庫,學習曲線相對陡峭,但功能強大。初學者可根據自身實際情況循序漸進進行學習掌握。
Power Automate官網:https://powerautomate.microsoft.com/zh-cn/
Robot Framework官網:https://robotframework.org/
UI Path官網:https://www.uipath.com.cn/
Open Robot官網:https://gitee.com/eddylapis/openrobot
舉一個人工測試的例子來說,一個測試工作需要先到一個第三方氣象網站上去查看一個天氣預報的結果,再打開一個Excel,導入一個文件服務器上存儲的歷史記錄表格,把去計算一個方差的結果,再用GUI界面去查詢防火墻后方的Oracle數據庫里的數據,最后把三者的數據糅合起來進行一個高階算法的計算,根據運算結果進行測試邏輯的判定。
最后還要根據歷史上同一測試的結果進行比對得出目前系統可用性的信心指數。用傳統測試自動化的方法來開發這一類測試用例基本是一場噩夢。
用RPA來解決的話,它會充分利用已有軟件的能力,把每個中間軟件操作的結果進行抽取和鏈接,最終進行簡單加工而達成目的。RPA的特點就是低代碼或零代碼自動化,而且是完成復雜場景、多場景的自動化流程。
傳統的測試自動化往往需要編寫一個測試用例程序運行在單一的計算單元,也就是一個計算機內,去完成測試工作。對于剛才所列舉的這樣一個復雜場景,第一,編碼代價非常高昂;第二,即使勉強完成代碼編寫,將來的維護和變更的成本也讓測試工作變得不可持續。RPA可以完全仿照人的操作方式,將各個自動化片段在更高級的工作流層面進行再自動化,因而快速且具備高可持續性。
RPA正是初學者或者新人逆襲的好工具。對于編程基礎薄弱的同學,可以先從 Power Automate、TagUI、UI Vision等 GUI驅動的RPA工具入手,然后不斷學習晉級。
對于有編程經驗的同學,可以學習使用Robot Framework這樣的框架,或者探究Power Automate或UI Path的高級功能迅速完成復雜或繁瑣場景的測試。
總體來說,RPA進入的門檻非常低,更多是需要理念上的改變。只要會用鍵盤鼠標或者命令行工具完成某個測試任務就能找到某個或某些RPA組合完成自動化。RPA不存在轉型的問題,而是在你現有的能力之上進行增強的途徑。
這個問題很有意思。RPA的測試人員在薪資上跟傳統的軟件測試的對比,它是個不存在命題。RPA本身只是一個新出現的技術,作為一個測試人員,可以去運用這個技術,讓自己在相同的時間、空間范圍內達到更高的生產效率,僅此而已。
你所處的行業和你所作的工作的商業價值本身決定了你的薪資的高低,并非是會與不會某個特定技術而造成的差別。從另外一個角度看,如果一個人能充分利用諸如RPA這樣的工具,比別人有數倍工作效率的提升,那么他自然在這個行業里有更強的競爭力,從而得到更高的經濟回報。但是本末不能倒置。
跟上一個問題類似,不存在有一個單獨的叫做RPA測試門類。正如同懂得Python編程的人并不一定叫做Python從業者一樣。RPA只是一個工具,不管是做開發還是做測試,都可以利用它來提升工作效率。
RPA與人類行為相對應,非常適合快速完成工作流的自動化,因此更適合端到端場景測試。RPA入門不需要深厚的編程基礎,對于初學者相對友好,運用得當的話,一個新手可以迅速達到資深測試自動化工程師的生產力。因此掌握一門或幾門RPA工具將會是新人彎道超車的好機會,也可以使有經驗的工程師更上一層樓。
目前RPA正在處于高速發展的時期,將它運用到測試工作實踐中來還相對較少,正因如此,對于從業者來說提前布局學習和運用,會使自己在機會來臨的時候占據優勢地位,這也跟經濟回報直接相關。

看過本次專題后,小伙伴們對機器人流程自動化有一定的認識了么?還有什么想要補充的知識或是有什么問題都可以在下方評論區交流~
另外,不知道大家還想看哪方面的知識或技術?又或者有哪位大佬有擅長的技術想要迫不及待分享給大家呢?可以微信添加or掃描二維碼聯系我們哦~