DevOps性能測試的優秀實踐與工具
譯文【51CTO.com快譯】眾所周知,如果研發出來的軟件產品最終根本無法達到最初設計的目的,并且滿是缺陷和bug的話,這對于應用開發人員來說就是最大的噩夢。同時,對于測試人員而言,無論是應用程序的性能、還是與穩定性相關的各種問題,他們都有責任把好最后一關,以確保軟件的質量不會在任何情況下被拉低。
正所謂千里之堤潰于蟻穴,任何一處的代碼缺陷,都會影響到您所研發出的軟件的最終整體性能。因此真正專業且經驗豐富的測試專家,是不會放松任何一項編碼測試環節的。
如今,各大企業都希望通過DevOps來提高軟件產品的交付質量。而這往往需要在軟件研發的生命周期中,采用各種業界最佳的測試方法和測試用例。在此,我們將分享一些與DevOps相關的性能測試的細節,希望能夠給各位軟件測試人員帶來一些啟發。
初始測試階段
在這個階段,我們需要在不增加任何負載的情況下,對應用程序進行性能測試,以便設置好初始化的基線。此舉意味著我們通過設置一個虛擬用戶,來循環執行某些任務,以檢查目標應用程序的基本功能,當然,此類性能分析并不會增加任何并發的負載。
顯然,此類基線測試是非常重要的,因為它能夠有效地處置各種調用命令、或事務的最短響應時間,來設置基線。一旦某個事務被執行完畢,系統就會記錄并生成其相應的響應時間。在此基礎上,您可以通過增加負載,來觀察與應用程序性能相關的各種因素。一般而言,此類因素包括:CPU的利用率、內存的使用情況、以及處理的延時。
作為測試人員,他們需要分別記下最快和最慢的交易事務時間,然后在此基礎上細致地與研發人員溝通與合作,將負載最大時的交易時間降至最小。另外,測試人員還有責任在這兩種時間的上下限之內保持應用程序的穩定性,以便軟件即使是在重負載、多并發的情況下,仍然能夠保證其自身和所提供服務的雙重穩定性。
尋找臨界點
在測試的初期,測試人員需要充分考慮的另一個關鍵事項是:通過循環測試各種場景,以找到軟件的臨界點。同樣地,對此類臨界點的分析也是非常重要的。此法可以確保正常的事務不會因為突然遭遇到過多的服務請求,而導致延時甚至是中斷。
如果無法確保自己的軟件產品能夠隨著用戶訪問數量的激增,還能夠平穩順利地運行的話,那么您精心部署和發布出來的應用程序,實際上是毫無意義的。因此,只有通過對應用程序持續采取此類所謂的臨界點“極限測試”,我們才能對各種峰值負載進行預判,要么事先準備好各種應急措施,要么讓軟件能夠自動實施相應的限流與排障方案。
至此,我們已經為軟件預防性功能測試做好了基礎工作。下面讓我們繼續進行深層次的測試討論。
反復測試腳本
我們在對軟件程序進行“抗壓”測試時,千萬不可淺嘗輒止。測試人員一般會分不同的場景,反復運行測試腳本,以檢驗軟件在應對不同請求來源時的兼容性。當然為了提高效率,大多數測試人員還會選用各種自動化的測試工具,來達到此類測試目的。
Selenium是上述自動化測試工具的典型代表。它通過放大并激增各種測試的請求,以監控目標軟件在極端條件下是如何協調并運行的。由于在現實環境中,我們很難在短時間內集結大量的用戶請求,并手動測試應用程序的魯棒性。因此,借用此類工具所產生的自動化腳本,在測試過程中添加大量虛擬用戶是非常重要的。它們對于系統整體性能的檢測與描述,具有一定的客觀性和可參考性。
持續對應用程序進行性能測試,將有助于我們發現CPU和內存在使用中的變化情況,開發人員也可以借此在代碼層面、甚至是架構層面予以調整,以全面提高軟件應用的綜合服務性能。具體操作方法,請參見:
https://www.bugraptors.com/service/performance-testing/。
在DevOps環境中被廣泛使用的測試工具
1. Selenium
如前文所提到的,Selenium是常用的測試工具之一。它可以為測試人員提供良好的過程體驗。無論您是要測試移動應用的整體性能與潛在漏洞,還是要檢查Web應用的并發臨界點,Selenium都可以為您安排好一切。
同時,Selenium也被廣泛地運用到了桌面應用的測試環境中,以輔助提高軟件的運行效率。另外,測試人員往往需要知道其目標應用是否能夠很好地兼容、并工作在不同的瀏覽器和操作系統上,因此他們可以通過Selenium來創建各種回歸性測試、自動錄制動作、并自動生成不同語言(如.Net、Java、Perl等)的測試腳本,來達到各種測目的??梢哉f,如果您想對某個應用程序的整體性能有所把握的話,Selenium一定是您的不二之選。
2. UFT
UFT(Unified Functional Testing)同樣也是一款功能強大的性能測試工具,它能夠幫助測試人員持續監控系統的各項性能指標。UFT以VBScirpt為內嵌語言,支持自動化的功能測試和回歸測試。無論您是想測試Web應用、還是某項服務、甚至是對各種運行環境進行測試,它都能夠為您及時地提供基于不同視圖的結果。此外,該工具還能夠自動化地產生各種測試報告與文檔。
總結
綜上所述,我們在運用DevOps進行軟件產品開發與測試,特別是那些性能測試時,上述提及的優秀實踐和測試工具,是我們在自己的項目推進過程中,所總結出來的關鍵點,希望能夠引起每一位開發人員和測試人員的適當重視。
原文標題:Best Practices and Tools in DevOps Performance Testing,作者:Claire Mackerras
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】