持續測試的那些事

本文首發於:Jenkins 中文社區html

原文連接    做者:Sushil Kumarweb

持續測試的那些事

持續測試到底是什麼?你又如何實現它呢?api

測試自動化

敏捷,DevOps 和持續交付已然存在於現今每一個技術人員的詞彙當中。咱們都想要像硅谷裏的巨頭和初創公司同樣,敏捷開發,快速發佈軟件,作出創新的產品。 向敏捷轉型在多方面都已有總結,而且到了能被順利實踐的程度。然而,測試仍然是一個有思想困惑和實踐挑戰的領域。 當軟件發佈週期從以年、月縮短到以周、天爲單位,或者更短時; 咱們該如何重塑測試實踐,以保證當軟件發佈到生產環境時能令用戶滿意, 而不是掉鏈子?安全

鑑於大多數 DevOps 實踐仍然把測試視爲軟件生產中最使人頭疼的瓶頸,顯然,這是一個常見的挑戰。ide

開發消耗佔比

持續測試就是答案,但持續測試到底是什麼?你又如何實現它呢? 維基百科定義持續測試爲「在軟件交付流水線中執行自動化測試的過程,目的是爲了得到關於預發佈軟件業務風險的即時反饋」。 可是這個定義缺乏了本質,缺乏了持續測試所示意的轉變的量綱。 除了自動化是一個重要的部分之外,持續測試從根本上轉變了測試, 它把線性過程當中的時間點事件嵌入到整個過程中去,做爲基礎貫穿於整個軟件交付週期的全部活動中。工具

敏捷環境裏持續測試的目標應該是「迭代內測試(in-sprint testing)」。 無論你的迭代是兩週仍是四周,目標都應該是完成迭代內全部類型的測試,這樣每一個迭代均可以獲得一個測試完備的,準備交付的軟件。 事實上不少持續交付的最佳實踐都會告訴你,你不能簡單的在沒有持續測試的狀況下去作持續交付。 若是你認爲你的迭代時間不容許你去作一個綜合的測試,頗有多是你對它的理解有誤性能

測試嵌入到軟件開發週期

七個步驟實現持續測試

1. 儘早規劃測試,甚至早於寫代碼

描述不清的要求或者有不正確的理解,均可能致使返工甚至延期。 使用像行爲驅動開發(BDD), 驗收測試驅動開發(ATDD)和 基於模型的測試這類技術所使用的工具,如 cucumber/gherkin 和 CA Agile Requirements Designer (ARD), 能夠確保業務主管,產品經理,開發人員和測試人員充分溝通並記錄需求,定義清晰的測試用例,提前編寫測試腳本,以達到一個流暢的測試過程。開發工具

2. 優化測試覆蓋率

一些組織默認「每次運行全部的測試」來保證代碼覆蓋率。這不但浪費資源還延長了測試周期,並且沒有真正的保證代碼覆蓋率。 測試那些須要測試的部分,以節省時間、金錢和資源。可視化模型可讓各類路徑被探索優化,以便只用少許的測試用例就能提供最大化的覆蓋率。 能夠藉助 Rally, Jira, HP ALM, JIRA 等此類工具導入測試用例、移除重複用例、分發優化過的用例。測試

3. 測試左移

爲了實現「迭代內(in-sprint)」測試,將測試前置——這樣測試能夠在開發週期的早期運行。開發人員本身測本身的;卓越中心提供專家,定製系統和服務。 自動化測試覆蓋 UI, 功能,性能和安全。各個團隊一塊兒工做,一塊兒以要交付給客戶的業務價值爲專一點。這須要對開發者友好的工具以及文化轉變。優化

4. 提供完整的測試環境

提供測試環境的能力對實現持續測試是相當重要的。 經過友好型(例如編碼、CI/CD 集成、被開源支持的軟件)開發工具按照需求提供的完整的測試環境來消除障礙和減小等待時間。 這些環境應該包括:

  • 虛擬服務——給那些不可達,不可訪問的,還在開發中的服務提供魯棒的模擬。開發和測試能夠根據虛擬服務模擬實際服務返回的結果持續並行工做。
  • 按照需求測試數據——幫助並保證各個團隊可使用與生產環境相似的數據來運行綜合的測試。
  • 預發環境——準備上線的需求,使用後退役。

5. 獲取正確的測試數據

在不少應用發佈週期,獲取魯棒性測試數據能力的缺少會形成嚴重延期。爲了準確的測試新功能,測試數據應該儘量的跟生產環境時所應用遇到的數據相近。 若是測試數據缺少特定真實世界的特徵(例如具體字段、數據定義、負面場景等),測試就很難找到許多潛在問題和應用的弱點。 理解數據模型並提取出正確的數據是一種特殊的技巧。儘管使用生產環境數據測試是最接近真實的,但數據隱私條例一般都會限制使用生產數據。 下面,咱們來看看 CA Test Data Manager 是如何複製生產數據,抹掉敏感信息的同時保持了測試所但願的生產數據特徵(接近現實,而且多行指徵完整)的。 生產數據不可用時,測試數據也可使用 TDM 工具根據模版生成。

6. 別忘了測試右移

測試向右移動,使用開發週期和生產中的數據來優化測試周期、調整測試用例,以創建最佳迴歸套裝。右移技術包括真實用戶監控、金絲雀部署、A/B 測試、混沌工程等。 例如,經過測試右移,你能夠肯定哪些功能被用於生產,保證迴歸測試覆蓋可以這些功能。 一樣的方法,你能夠開放新功能給一小部分人(內部或外部),瞭解新功能可能給生產形成的影響,按需調整。 許多敏捷公司例如 Facebook 和 Netflix 都嚴重依賴測試右移。 Gartner(美國一家從事信息技術研究和顧問的公司)最近發佈了一份測試右移的報告, 聲稱測試右移對 DevOps 實踐來講是「必需」的。

7. 使用數據矩陣持續優化

創建跨團隊協做,根據可行性分析和反饋機制不斷優化。持續交付和持續測試就像旅行。確保你的全部團隊都有 KPI, 查閱那些可以提供附加優化的數據。 不要只是收集數據,那很容易辦到,收集而且總結數據可以幫助你提出持續優化的確切建議。探索應用發佈流程以實施建議,並做爲全部團隊應用交付週期的「單一事實來源」。

要了解更多關於持續測試的挑戰和實踐,點擊這裏 CT Academy Video Series.

相關文章
相關標籤/搜索