DevOps中的測試

本文為《DevOps軟件架構(gòu)師行動(dòng)指南》一書測試相關(guān)章節(jié)的學(xué)習(xí)筆記。

DevOps

DevOps是一套實(shí)踐方法,在保證高質(zhì)量的前提下,縮短系統(tǒng)變更從提交到部署至生產(chǎn)環(huán)境的時(shí)間。

DevOps五要素

  • 敏捷
  • 持續(xù)
  • 協(xié)作
  • 系統(tǒng)性
  • 自動(dòng)化

部署流水線

部署流水線是從開發(fā)提交代碼,到代碼實(shí)際部署到正式生產(chǎn)環(huán)境的流程。

部署流水線.jpeg
  1. 開始:開發(fā)人員把代碼提交至聯(lián)合版本(dev、test、master)
  2. 在本地環(huán)境執(zhí)行提交前測試
  3. 測試通過后,提交代碼,提交操作觸發(fā)集成構(gòu)建,并進(jìn)行集成測試
  4. 集成測試通過,提升到準(zhǔn)生產(chǎn)環(huán)境(預(yù)發(fā)布環(huán)境),再次測試
  5. 測試通過后,部署到生產(chǎn)環(huán)境,并進(jìn)行密切監(jiān)控
  6. 經(jīng)過一段時(shí)間的密切監(jiān)控后,部署到正式生產(chǎn)環(huán)境
  7. 結(jié)束
  • 持續(xù)集成:通過自動(dòng)觸發(fā)器進(jìn)行集成,直到集成測試
  • 持續(xù)交付:使用自動(dòng)觸發(fā)器,直到預(yù)發(fā)布系統(tǒng)
  • 持續(xù)部署:直到部署到生產(chǎn)系統(tǒng),都是自動(dòng)化的

環(huán)境

不同環(huán)境用于不同的測試類型。成功完成的測試越多,對系統(tǒng)版本質(zhì)量更有信心。

  • 提交前:開發(fā)本地環(huán)境或開發(fā)服務(wù)器,有更詳細(xì)的日志記錄以幫助發(fā)現(xiàn)缺陷
  • 構(gòu)建與集成測試:持續(xù)集成服務(wù)器,有足夠多的測試數(shù)據(jù)
  • 用戶驗(yàn)收測試/預(yù)發(fā)布/性能測試:盡可能接近生產(chǎn)環(huán)境。數(shù)據(jù)庫應(yīng)包含真實(shí)生產(chǎn)數(shù)據(jù)的一個(gè)子集
  • 生產(chǎn):正式生產(chǎn)環(huán)境,應(yīng)有足夠的資源以滿足其日常需要

測試關(guān)注點(diǎn)

  • 測試框架
    軟件以及配置的測試數(shù)據(jù),通過在各種條件下運(yùn)行它,并對行為和輸出進(jìn)行監(jiān)控,來測試一個(gè)程序單元。測試框架會(huì)產(chǎn)生報(bào)表,并識別測試失敗的測試用例。
  • 負(fù)面測試
    即異常測試。違背正確輸入和執(zhí)行順序操作的測試。在進(jìn)行異常測試時(shí),常見期望是程序可能優(yōu)雅地降級或失敗。若故障不可避免,反饋有意義的錯(cuò)誤信息,并以可控方式退出。
  • 回歸測試:
    ①在程序變更后力求發(fā)現(xiàn)新的缺陷
    ②確保已經(jīng)被修復(fù)的缺陷不再被引入

部署流水線的不同測試

在部署流水線流程中,代碼提交前、構(gòu)建后、預(yù)發(fā)布環(huán)境、生產(chǎn)環(huán)境都有測試參與。

在開發(fā)和提交前測試中的測試

在開發(fā)過程中有兩種類型的測試過程。測試驅(qū)動(dòng)開發(fā)和單元測試。

  • 測試驅(qū)動(dòng)開發(fā)
    傳統(tǒng)開發(fā)流程:先概要設(shè)計(jì),再詳細(xì)設(shè)計(jì),編碼完成后進(jìn)行測試。
    測試驅(qū)動(dòng)開發(fā):先開發(fā)自動(dòng)化測試,再編碼開發(fā)功能,直到測試通過。

  • 單元測試
    在知曉系統(tǒng)代碼的前提下,對單獨(dú)類或方法進(jìn)行測試。

在執(zhí)行提交前,自動(dòng)地運(yùn)行以上測試。提交前測試通常包含一組相關(guān)的單元測試,還有幾個(gè)冒煙測試。目標(biāo)是在集成測試前可以發(fā)現(xiàn)通過單元測試但未破壞整體系統(tǒng)的缺陷。一旦測試通過,就可以執(zhí)行代碼提交操作了。

集成測試

對系統(tǒng)已構(gòu)建的可執(zhí)行部分的測試。

功能測試

對已構(gòu)建提交的整體系統(tǒng)的功能進(jìn)行逐個(gè)測試,測試是否滿足需求,功能能否正常,滿足用戶使用需求。

接口測試

對已提交的功能對應(yīng)的接口進(jìn)行測試,從接口層面底層是否滿足健壯性,容錯(cuò)性,易用性。

自動(dòng)化測試

豐富自動(dòng)化測試用例,將測試過的主流測試功能轉(zhuǎn)化為自動(dòng)化腳本,在后期的回歸測試中更加容易減少人工投入,豐富測試手段。

用戶驗(yàn)收測試/預(yù)發(fā)布/性能測試

預(yù)發(fā)布是系統(tǒng)部署到生產(chǎn)環(huán)境前的最后一步,因此預(yù)發(fā)布環(huán)境應(yīng)盡可能貼近生產(chǎn)環(huán)境。在這個(gè)步驟中有以下測試類型:

  • 用戶驗(yàn)收測試(UAT)
    相關(guān)的用戶或獨(dú)立測試人員根據(jù)測試計(jì)劃和結(jié)果對系統(tǒng)進(jìn)行測試和接收。
    可根據(jù)測試腳本測試,也可使用探索性測試。
  • 自動(dòng)化驗(yàn)收測試
    對最重要的、需要重復(fù)執(zhí)行的,且不太需要做很多維護(hù)的檢查點(diǎn)實(shí)現(xiàn)自動(dòng)化
  • 冒煙測試
    是自動(dòng)化驗(yàn)收測試的一個(gè)自己,用于快速分析提交的代碼是否影響到系統(tǒng)的某些核心功能
  • 非功能測試
    對性能、安全、容量以及可用性等方面的測試

生產(chǎn)環(huán)境

在系統(tǒng)部署到生產(chǎn)環(huán)境后,還會(huì)繼續(xù)進(jìn)行觀察和測試。

早期發(fā)布

  • beta發(fā)布
    將產(chǎn)品有計(jì)劃地發(fā)布給特定用戶,讓用戶大量使用來發(fā)現(xiàn)軟件存在的問題與錯(cuò)誤,再把信息反饋給開發(fā)者修改。

  • 金絲雀發(fā)布
    若系統(tǒng)部署有多臺服務(wù)器,先將新版本部署到其中幾臺服務(wù)器上,然后觀察驗(yàn)證。確認(rèn)沒有異常后,后續(xù)再更新剩余的所有服務(wù)器。
    若只有一臺服務(wù)器,不可以使用金絲雀發(fā)布。

  • A/B測試
    beta發(fā)布與金絲雀發(fā)布是發(fā)布策略,A/B測試關(guān)注的是發(fā)布效果。
    線上同時(shí)運(yùn)行多個(gè)版本的服務(wù),不同服務(wù)會(huì)有一些體驗(yàn)上的差異。相關(guān)人員通過分析各個(gè)版本的實(shí)際效果確定哪個(gè)版本執(zhí)行得更好。
    例如:推薦算法、用戶界面

錯(cuò)誤檢測

即使系統(tǒng)通過所有測試,還是有可能存在缺陷。
對于檢測非功能的錯(cuò)誤,可以對系統(tǒng)信息進(jìn)行監(jiān)控。監(jiān)控包括:用戶請求的響應(yīng)時(shí)間、隊(duì)列長度等。當(dāng)監(jiān)控?cái)?shù)據(jù)與歷史數(shù)據(jù)有偏差時(shí),會(huì)觸發(fā)報(bào)警并通知給相關(guān)人員。
在檢測到錯(cuò)誤后,為了對錯(cuò)誤進(jìn)行跟蹤溯源,一般要求系統(tǒng)日志有合適的記錄。
在錯(cuò)誤診斷并修復(fù)后,會(huì)在未來發(fā)布的版本進(jìn)行回歸測試。

現(xiàn)場測試

在系統(tǒng)部署后,通過特殊手段干擾正在運(yùn)行的系統(tǒng)。例如:宕服務(wù)、宕虛擬機(jī)、模擬網(wǎng)絡(luò)變慢等。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 軟件行業(yè)正在向更加快速交付轉(zhuǎn)型,新的工具和技術(shù)對測試人員構(gòu)成更大的挑戰(zhàn),適應(yīng)這種快節(jié)奏有太多內(nèi)容需要學(xué)習(xí),而且常常...
    城下秋草閱讀 946評論 0 0
  • 原文:https://www.tricentis.com/wp-content/作者:Wayne Ariola碎碎...
    CC先生之簡書閱讀 3,064評論 0 5
  • 盡管DevOps仍需要手動(dòng)測試,但測試人員能做的還有很多。 DevOps需要在各個(gè)階段進(jìn)行協(xié)作,因此,使開發(fā)人員和...
    FunTester閱讀 255評論 0 0
  • DevOps四大能力的建設(shè)需要實(shí)踐與工具進(jìn)行支撐,結(jié)合能力建設(shè)的要求,實(shí)踐主要分布在持續(xù)交付和技術(shù)運(yùn)營兩大領(lǐng)域,包...
    AIOPstack閱讀 3,031評論 1 12
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,832評論 28 54

友情鏈接更多精彩內(nèi)容