02.27 避免自動化災難的6個技巧

如果企業的自動化DevOps管道或機器人流程自動化存在缺陷,正如現實世界所證明的那樣,將會帶來無盡的麻煩。

2015年,高級軟件工程師Benjamin Willenbring對Autodesk公司進行自動化軟件測試感到興奮。但這種興奮卻沒有持續多久,這是因為自動化團隊與其他部門溝通不多,而當測試進入生產階段時,並沒有帶來大家所希望的結果。

Willenbring說:“我們談論的是非決定性的失敗測試,但對其測試並沒有太大的信心。開始運行測試非常困難,由於沒有參考的案例,需要經常溝通,並且產生大量文件,我當時真的不知道如何處理。”

自動化軟件可以簡化Willenbring的工作。在接下來的幾年裡,這些問題佔據了他的大部分精力。

Willenbring的經歷並不罕見。隨著自動化通過IT技術的應用而迅速普及,並提供了一些寶貴的經驗和教訓。

從DevOps的自動化工作流到機器人流程自動化(RPA),自動化流程旨在減少繁瑣的工作,並使熟練的員工解脫出來從事更高級別的任務。但是,具有缺陷的辦公場所或部署不完善的項目可能會使自動化的夢想變成一場噩夢。一些IT專家對他們所聽說或遭遇的自動化失敗案例進行了闡述,並分享了六個技巧,以幫助企業的自動化計劃避免失敗的命運。

1.自動化是每個人工作的一部分

Willenbring的自動測試面臨一個關鍵問題:唯一瞭解自動測試的人員就是構建自動測試軟件的人員,但通常他們並不一定在企業總部工作。

Willenbring說:“測試框架的困難之一是,當出現故障時,它無法真正提供良好的反饋。如果失敗,需要做的第一件事就是通過協作應用程序Slack聯繫測試負責人,並問為什麼會失敗?然後,通過人工重新運行測試,對於框架的某些特殊版本,需要對可看到結果或將要將發生的情況進行溝通。”

DXC科技公司全球DevOps產品經理Robert Haas表示,其測試框架違反了兩項基本規則,每個自動化制度都應遵守這兩條規則。首先是必須記錄自動化代碼。Haas說:“無論企業使用像編制文檔之類的現代方法,還是對Visio圖表進行註釋,如果有一些文檔描述了最初所做的事情,那麼解決問題將變得更加容易。”

如果沒有文檔,自動測試對Willenbring的團隊是難以理解的。他們將無法理解測試結果,並且對測試和創建它們的團隊失去信心。Willenbring說:“有時候開發人員可能並不在乎,認為這不可能是真正的失敗。有時候,測試框架確實存在真正的失敗。但是,關鍵問題是對測試和結果缺乏信任。”

Haas的另一個建議是:“根據需要交付的業務價值,對需要實現自動化的活動進行優先排序。”但是由於Autodesk的測試團隊與開發團隊如此分離,Willenbring發現他選擇的代碼庫中的許多領域都違背了常識。他說,“需要讓主題專家或瞭解重要內容的人員選擇要測試的東西。如果只是在瀏覽一大堆錯誤記錄,那麼不能保證測試的數量能夠準確地反映出任何有意義的東西。”

新上任的工程總監使Willenbring及其團隊擺脫了這一惡性循環。工程總監要求質量測試成為每個人的工作,其中包括測試自動化,並取消集中式測試,讓各個部門負責為其工作編寫測試代碼。Willenbring和他的團隊現在可以根據自己的需求量身定製測試,並將該過程整合到他們的日常生活中。最後他說:“必須對‘那不是我的工作’的態度制定零容忍政策。”

Willenbring為此受到啟發,並對其自動化之旅進行了詳細的描述,其中包括人們可能感興趣的深入材料,以及他處理的Selenium和Cypress測試框架的詳細信息。

2.為複雜性做好準備

安全和合規自動化供應商Tripwire公司最近注意到該公司的一個大型金融客戶的自動化解決方案運行有些奇怪。

Tripwire的加拿大地區經理Irfahn Khimji說:“這家公司部署了自動解決方案,但卻花費了很長時間,我們一直在想為什麼看不到其許可證使用率顯著上升?因為他們部署的速度應該很快。”

事實證明,大部分自動化的持續集成(CI)/持續部署(CD)管道的理想正在金融組織的各個業務部門工作中實現,每個業務部門都依賴於自己定製的軟件組件集。

Khimji說:“他們正在嘗試使用30多種應用程序,這些應用程序的商品化(在各種庫中需要的模塊以及類似的東西)都面臨一些挑戰。調整管道以處理所有這些不同的變化確實減緩了自動化過程,因為它不僅是簡單的部署,還需要確保所有這些不同的技術都相互協作。”

沒有什麼靈丹妙藥可以解決這個問題,但是需要知道,隨著自動化流程中組件數量的增長,連接這些組件所需的管道數量會以指數級增長,並變得更加複雜。當過渡到自動化流程時,這種複雜性將需要更多的時間和資源。

增加這種複雜性的另一個因素不僅是要連接的組件數量,還包括它們的來源。大多數管道或機器人流程自動化(RPA)驅動的環境都包含內部組件和第三方組件的異構組合,如果出現問題將難以解決。

DXC科技公司的Haas說:“確保持續集成(CI)/持續部署(CD)管道或自動化過程的所有組件都與軟件提供商簽訂維護合同。如果有開源組件,請進行風險評估,以確定是否應考慮使用產品的託管版本,而不是依靠開源社區的基於Web的支持。”

3.當心“黑盒”

金融機構一直是希望部署機器人流程自動化(RPA)和聊天機器人的機構之一,Aisera公司的首席執行官兼聯合創始人Muddu Sudhakar警告說,他在這些環境中經常看到這樣一種情況:流程被視為一個單一的整體功能單元,成為了一個“黑盒”,其內部操作很難被排除在故障之外。

他說:“在整體結構中,客戶將檢查其帳戶的狀態,如果要提取並轉移這筆費用,這一切都將一步到位。如果出了問題,並且沒有經過審計的步驟監控,那麼在災難性失敗中取回資金的唯一方法是致電客戶服務部門,也許需要親自去銀行取款。”

對於Sudhakar來說,這種設計通常是企業早期採用自動化的標誌。只要一切都按計劃進行,這樣的項目就可以產生良好的結果。但是如果不是這樣,企業通常必須回來拆分這些黑盒。最好從一開始就避免使用它們。

他說:“將每個過程分解為多個構建塊,其中每個構建塊都是可審核和可監控的。”

4.建立制衡機制

Ari Meisel是Less Doing公司創始人,也是一位對自動化工作特別感興趣的生產力教練。他經常為生活方便開發一些自動化軟件。但當他試圖避免停車罰單時,採用自動化軟件卻遭遇了一個沉痛的教訓。

Meisel擁有一輛皮卡車,從技術上講是一輛商用車,而在他居住的紐約市,這種汽車的擁有者很容易對罰單提出異議:“可以向當地財務部門發送信函辯解說,‘我正在送貨。'”

他承認,他的這種做法並不完全合法的:他創建了一種自動化軟件系統,可以隨機生成發票,並將發票和信函發給當地財政部門,以對取消罰單進行辯解。他表示這種方法開始奏效,但卻出現了問題,因為該系統發送了100多次完全一樣的信函和發票,財務部門威脅要把我送進監獄,為此我找到律師進行辯護,最終結果我為此花費了3.6萬美元。”

他意識到,他的自動化處理軟件需要的是一個防錯措施。這個術語的意思是“防錯”,在豐田公司的汽車生產體系中,採用過程的步驟,這個步驟被分成了兩個步驟,第二個步驟的運行依賴於第一個步驟。雖然增加步驟但反而提高了效率,這好像有些自相矛盾,但如果沒有排除錯誤將會影響生產線運行。Meisel說,在他的逃避罰單的計劃中,如果自動運行程序將每一張發票與之前發送的發票進行比較,查看內容是否相同。這是一件很容易做到的事。”

這擴展了Aisera的Sudhakar的建議:每個自動化步驟不僅應該是可以審核的,而且還應由其他自動化步驟不斷進行審核。在AIOps領域中,自動化平臺承擔了工程師的IT管理負擔。Sudhakar說:“我稱之為美國航天局(NASA)方法。NASA必須假設將要發生的故障,必須採用具有制衡功能的AIOps解決方案。”

但是,除非親身經歷了自動化的失敗,否則很難看到它的價值,Meisel說:“人們在90%的時間內都會出問題。他們表示,不會採用這種永遠不會真正受益的自動化技術,然後卻發現他們確實需要它。”

5.不要忽視安全

自動化的持續集成(CI)/持續部署(CD)管道有一個秘密:許多用於解決安全性要求的管道最初是作為影子IT推出的。Tripwire的Khimji說:“開發者想繼續下一次迭代(開發代碼)。因此,當嚴格的IT和安全流程陷入困境時,他們認為,‘我可以在雲平臺中生成這些映像,並且我可以規避它們。”

這並不意味著這些管道天生就不安全,但是應該調查哪些安全實踐是為了提高自動化效率而放棄的。此外,需要記住,任何自動化進程都代表了攻擊的另一個向量。自主操作的進程可能具有提升的權限,使它們成為誘人的目標。Aisera公司的Sudhakar說,他了解一些稱之為“黑天鵝”的例子:例如一個競爭對手在一家公司內部使用DevOps管道將惡意軟件注入代碼庫,使其傳播到生產環境中,使其系統無法運行。

6.不要廉價地自動化

Tesults公司首席開發人員和創始人Ajeet Dhaliwal發現,不當的炒作會帶來誤解。許多企業都有一個“自動化測試”的願景,但它與最佳實踐大相徑庭。在沒有技術背景的小型組織中尤其如此。由於他們瞭解人工測試,因此從邏輯上講,自動測試應該只是無需人工干預即可進行的人工測試的一種版本。

因此,Dhaliwal說,“他們鼓勵那些沒有軟件開發背景的傳統質量保證(QA)測試人員執行人工測試,使測試實現自動化。有時這意味著使用工具,只記錄人工用戶界面(UI)測試,以便以後重複進行。這些方法的健壯性和靈活性與開發人員在自動化方面能夠實現的目標不匹配。”

Dhaliwal補充說:“自動化測試開發人員還需要成為軟件工程師。有一些初級開發人員參與是可以的,但是這些公司需要一些經驗豐富的開發人員來領導這項工作,而他們沒有這樣的人員。”

而且,正如Autodesk的Willenbring所說,軟件工程師還需要了解如何構建自動化流程。他說:“這只是開發人員將擁有的技能之一。當企業可以使用這些技能時,希望這些技巧將有助於企業的自動化項目獲得成功。”


分享到:


相關文章: