乾貨|測試人員如何助軟體成功上線?如何建立一個好的部署計劃?

博為峰網校發表於2022-02-25

聽了公司大神的一個培訓,講的是Shell指令碼程式設計,其實所有的程式語言的思路都是差不多的,語法上可能會有一些小的差別。對於不同的程式設計人員來講,差異就在與程式設計人員自身的程式設計習慣和思考的是否全面,這些決定了程式的可讀性和可重用性。大神說了一句話:“一個好的程式不在於功能有多炫,效能有多好,好的程式應該有很好的可讀性和可重用性。其實學習知識並不難,難的是對知識的傳承。” 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

產品部署其實是從你書寫的第一行程式碼就已經開始了:應用應該構建的適合在生產環境下執行,應該可以使用已有的流程進行部署(持續交付或手工更新),還要能夠處理生產環境下的負荷。在部署的過程中,即使是最大化利用了自動部署的持續交付流程,手工的互動也是不可或缺的,尤其是交付的新版本牽涉到資料庫的改動、構建指令碼或基礎架構的變動。在這篇文章中,我們將一起來看一下這些場景。那麼一個好的部署計劃應該是什麼樣的呢?複雜的生產環境的更新需要針對所有的變更書寫非常詳細的文件。

最簡單的辦法是列一個包含下列各項的表格:

步驟編號

步驟描述

負責人

步驟持續時間

測試注意事項(如果適用的話)

其它資訊(指令碼、端點、證照等的路徑)

測試的職責是什麼呢?部署計劃那一節提到的測試注意事項中可以包含關於如何驗證的說明。但是假如部署計劃非常龐大,資訊繁雜。那麼對於測試人員來講更合理的做法是為測試相關的資訊和資料建立一個單獨的文件,主要包含以下內容:

  • 針對版本里的新功能,在生產環境上的非入侵性的測試場景

  • 可測的生產環境配置步驟的清單與說明,例如:

配置變更:POM.xml, IIS 等

與正確的服務端點整合

DB Schema/資料變更

  • 資料遷移

驗證新近的變更都已經被包含在最新的版本中

共享位置的訪問

部署後伺服器上的剩餘空間(假如該驗證沒有被 AWS 自動化部署覆蓋)

簡短的效能測試

上面提到的一些配置變更測試在下文會有比較詳盡的解釋。配置變更依賴於專案的流程,它可能是個非常長的清單,包括從簡單的配置檔案變更到伺服器本身的變更。但是我們還是就一些典型的例子來進行說明。

與正確的服務端點整合

這類測試本應很清楚,不需加以額外說明。但是如果被整合的服務同時有多個可用環境就比較棘手。要驗證所使用的服務端點的正確性,最簡單的辦法就是執行一個會呼叫該服務的例子並校驗配置檔案。還有一個可選方案就是使用資料標記:給資料記錄名加字尾,測試生產環境上的缺失記錄等等。

DB Schema/資料變更

測試 DB Schema 變更和資料變更的方法不大一樣。測試資料變更,我們可以透過介面或者返回值的驗證來證明系統使用的是新資料。如果是 DB Schema 的改動,情況就有所不同。因為有些變化在介面上是不可見的,除非連線生產環境上的資料庫,否則無法校驗。而連線生產環境的資料庫往往又是不被允許的。有時候,即便是儲存過程的變更(新欄位, 資料型別的變更等)有缺失,也不能立即被發現(有時候這些欄位是在異常捕獲的程式碼裡用到的,而正常情況下系統都使用預設值)。

針對此類情況,測試人員要選擇一些會使用到新欄位或變更欄位,而不是使用預設值的場景,來驗證使用的程式碼是最新的。如果新版本中需要新增欄位或是更改已有記錄的值,通常比較穩妥的辦法是去檢驗指令碼的執行情況(通常,把該校驗加入到自動化部署過程中所耗費的工作量要比手工執行一次指令碼大的多)。由於資料庫中資料量的差異,部署過程中一個常見的問題是,指令碼執行時間在測試環境和生產環境上大不相同。不幸的是,沒有一個完全可靠的辦法去預測生產環境的執行時間,除非把生產環境的資料庫完整複製到測試環境。

舉兩個例子,看看當類似的問題導致停服時間增加時該怎麼處理:

1. 如果是 SQL DB,通常透過建立索引最佳化查詢方案來提升指令碼執行效率;

2. 如果是非 SQL DB(比如亞馬遜的 AWS Dynamo),可能需要改變吞吐量,透過改變指令碼來限制資料庫的負載,改進指令碼並最佳化資料庫查詢來降低對吞吐量的需求。

主分支/功能分支的合併:驗證最後的變更都被包含在最新的版本中最基本的要求是,上一個透過測試的版本之後提交的每個變更都至少有一個測試場景與之相對應。

部署後伺服器上的剩餘空間(假如 AWS 自動化部署沒有自動驗證)有時應用的新版本需要進行線下更新,需要安裝新軟體,因此版本的規模就會大很多。對於這些情況,如果伺服器沒有配置剩餘空間告警功能,那麼在部署完成後至少要保留10GB的可用空間。

結論

正如前文提到的,生產環境的部署其實從第一行程式碼就開始了。滿足所有的功能要求當然很重要,但開發和部署過程中應用程式的可測性同樣重要。適當的日誌、日誌聚合功能、可用的文件、伺服器配置的可檢測性等所有的這些,將會使得開發、除錯、測試和部署流程對所有人都變得更容易些。除此之外,相互尊重、良好的溝通和共同的目標對任何部署計劃都很重要。

最後:

可以我的 個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2857851/,如需轉載,請註明出處,否則將追究法律責任。

相關文章