測試執(zhí)行的五步框架,你知道哪步
逐步分解,為測試執(zhí)行制定路線圖,以根據(jù)應(yīng)用程序的演變擴展您的測試。
譯自A 5-Step Framework for Test Execution,作者 Ole Lensmar。
在我們之前的文章中,我們指出將測試執(zhí)行與 CI/CD 流水線耦合存在一些缺點,這些缺點隨著應(yīng)用程序或部署基礎(chǔ)設(shè)施的復(fù)雜性和規(guī)模的增加而變得明顯?,F(xiàn)在讓我們退一步,看看CI/CD在此背景下解決的初始需求:運行您的測試,也稱為測試執(zhí)行。與許多事情一樣,在構(gòu)建基礎(chǔ)設(shè)施時對測試執(zhí)行進行一些額外的思考和關(guān)注,可以為您帶來多倍的回報。讓我們來分解一下。
STLC 中的測試執(zhí)行
軟件測試生命周期 (STLC) 是軟件開發(fā)生命周期 (SDLC) 中測試活動的分步分解,它是一個成熟的流程。從高層次來看,STLC 包括以下步驟:
- 需求分析: 了解需要測試的內(nèi)容。
- 測試計劃: 計劃如何測試需求。
- 測試用例開發(fā): 編寫實際的測試用例。
- 測試環(huán)境設(shè)置: 準備您的測試環(huán)境。
- 測試執(zhí)行: 在您的測試環(huán)境中執(zhí)行您的測試。
- 測試周期結(jié)束: 確保所有測試活動都已完成。
Source:https://www.boardinfinity.com/blog/introduction-to-stlc-software-testing-life-cycle/
如您所見,測試執(zhí)行是此生命周期中的一個特定步驟,它本身就是一個值得深入研究的領(lǐng)域。讓我們來做一下。
測試執(zhí)行的 5 步框架
隨著組織中測試工具、CI/CD 系統(tǒng)、工程師和應(yīng)用程序數(shù)量的增長,以可擴展且高效的方式執(zhí)行測試并管理執(zhí)行結(jié)果變得越來越復(fù)雜。讓我們首先將測試執(zhí)行分解為五個步驟,以幫助您決定如何以可擴展的方式執(zhí)行測試。
- 定義: 您將如何定義測試的執(zhí)行?
- 觸發(fā): 您將如何觸發(fā)測試執(zhí)行?
- 擴展: 您對測試執(zhí)行有哪些可擴展性需求或限制?
- 故障排除: 您如何有效地排除(失敗的)測試執(zhí)行的故障?
- 報告: 您需要哪些報告來計劃(未來)測試活動?
圖片
讓我們更詳細地探討每個步驟,以幫助您了解您可能需要在團隊中回答哪些問題。
- 定義– 您將如何以一致的方式運行您的測試,考慮到:
您現(xiàn)有的(和未來的)測試工具和版本
用于數(shù)據(jù)驅(qū)動測試的輸入數(shù)據(jù)
測試編排:例如,以協(xié)調(diào)的方式執(zhí)行多個測試,可能跨多個/遠程環(huán)境
- 觸發(fā)– 您將如何觸發(fā)測試的執(zhí)行?
來自 CI/CD 工具,作為構(gòu)建和部署流程的一部分?
定期計劃執(zhí)行?(例如,“每天運行我們的安全測試。”)
基于外部/內(nèi)部異步事件觸發(fā)器或 Webhook?(“每當這些組件在我們基礎(chǔ)設(shè)施中更新時,重新運行端到端測試。”)
臨時或手動?
通過 API/CLI 的自定義集成?
- 擴展– 當您擴展測試活動時,請確保您已評估:
您需要模擬多少負載?
您能使用您現(xiàn)有的/內(nèi)部基礎(chǔ)設(shè)施嗎?
您如何與其他(測試)活動協(xié)調(diào)?
并行化以縮短執(zhí)行時間?
異步調(diào)度而不是每次構(gòu)建都運行?
您預(yù)計在“峰值測試時間”運行多少測試?
您是否有跨測試共享的/有狀態(tài)的基礎(chǔ)設(shè)施?您是否需要相應(yīng)地限制測試執(zhí)行?
您是否有運行時間很長的測試,需要:
測試應(yīng)該在您的基礎(chǔ)設(shè)施內(nèi)部和/或外部運行(或兩者)?
專門針對負載測試:
- 故障排除– 在復(fù)雜的應(yīng)用程序基礎(chǔ)設(shè)施中,排除失敗測試的故障可能很痛苦:
您測試工具的日志和工件是否足夠,或者您還需要測試中應(yīng)用程序的日志和指標?
相關(guān)人員是否有權(quán)訪問日志/基礎(chǔ)設(shè)施進行故障排除?
所有故障排除都可以在一個地方完成,還是有多個訪問點?
您需要保留結(jié)果多長時間?
日志或工件是否包含敏感信息?它們是否需要安全存儲?
- 報告– 問問自己:
您需要隨著時間的推移跟蹤哪些指標,以及以什么粒度?例如,通過/失敗比率、測試總數(shù)等。
您是否可以或應(yīng)該將來自不同測試執(zhí)行和測試工具的結(jié)果聚合到通用報告中?
訪問控制:相關(guān)人員是否有權(quán)訪問報告?
報告/指標是否可以按所需維度進行分析,例如團隊/應(yīng)用程序等?
測試執(zhí)行結(jié)果是否需要推送到外部系統(tǒng)?例如:報告、事件管理、問題跟蹤
報告應(yīng)該如何內(nèi)部分發(fā)并隨著時間的推移進行訪問——短暫/長期 URL?PDF?等等。
測試執(zhí)行評估標準
除了上面概述的測試執(zhí)行的戰(zhàn)術(shù)方法之外,我們還可以定義一些需要評估和規(guī)劃的標準,以便根據(jù)您的團隊和應(yīng)用程序的需求進行相應(yīng)擴展。
- 一致性– 獲得一致的測試結(jié)果是建立對質(zhì)量指標和下游活動的信任的關(guān)鍵,為此,您的測試執(zhí)行環(huán)境應(yīng)盡可能同質(zhì),前提是您的應(yīng)用程序的上下文。
- 解耦– 測試執(zhí)行不應(yīng)與基礎(chǔ)設(shè)施中的任何其他特定框架或流水線緊密耦合。隨著時間的推移,運行測試的需求將在戰(zhàn)略和戰(zhàn)術(shù)上發(fā)生變化,您的測試應(yīng)該隨時可用以執(zhí)行。
- 集中化– 雖然您的測試可能在基礎(chǔ)設(shè)施中的多個地方執(zhí)行,但在一個地方管理這些執(zhí)行及其結(jié)果可以為您提供測試活動的整體視圖,從而使您能夠隨著應(yīng)用程序和基礎(chǔ)設(shè)施的擴展,始終如一地評估、分析和控制測試執(zhí)行。
- 集成– 測試執(zhí)行通常需要與您現(xiàn)有的工作流程和流水線集成——但不要緊密耦合!- 測試的執(zhí)行需要從各種來源觸發(fā)。
- 測試執(zhí)行或失敗的通知需要集成到協(xié)作平臺和事件/問題跟蹤中。
- 測試結(jié)果或指標可能需要由外部監(jiān)控或報告工具捕獲。
- 可擴展性– 大規(guī)模運行測試是采用主動測試執(zhí)行方法的團隊面臨的最常見挑戰(zhàn)之一。
- 需要水平擴展單個測試以提高執(zhí)行時間或涵蓋更多測試場景
- 多個團隊需要使用受限資源(基礎(chǔ)設(shè)施、共享數(shù)據(jù)庫等)運行其測試
- 需要擴展負載測試以生成所需的負載,以確保應(yīng)用程序和基礎(chǔ)設(shè)施的性能和穩(wěn)定性
- 安全和訪問控制– 這有幾個方面:
- 誰應(yīng)該能夠運行測試、查看結(jié)果等?
- 如果您的基礎(chǔ)設(shè)施需要專門為測試執(zhí)行進行配置,這是否會對安全造成任何影響?
為測試執(zhí)行制定路線圖
以上兩個部分都不是要窮盡或最終確定它們各自的方法。每個應(yīng)用程序基礎(chǔ)設(shè)施都是獨一無二的,因此您的團隊對如何運行測試的需求也將是獨一無二的。要點是讓您思考測試執(zhí)行,而不是“在 Jenkins 中運行我的 playwright 測試”——因為這肯定會遇到死胡同,并阻止您根據(jù)應(yīng)用程序的演變來擴展測試活動。
一種動手的方法可能是:
- 將您的測試活動分解為 STLC 的不同步驟。您是如何執(zhí)行這些步驟的?誰負責?您有什么需求?
- 將測試執(zhí)行分解為上述五個步驟,并再次問問自己:您的需求是什么,誰負責等等。
- 將上面概述的測試執(zhí)行評估標準納入您的測試執(zhí)行策略。確保您至少討論了所有這些標準,即使您的行動方針是“忽略”。
- 確保合適的人員參與所有這些討論(無特定順序):
QA 負責人/經(jīng)理
DevOps/平臺工程
系統(tǒng)架構(gòu)(如果需要/適用)
產(chǎn)品所有權(quán)(如果需要/適用)
Testkube 用于測試執(zhí)行
也許并不奇怪,我寫這篇文章不僅是為了分享對測試執(zhí)行的見解,也是為了向您展示Testkube如何提供幫助。
簡而言之,Testkube 是一個用于測試執(zhí)行的編排平臺,符合上面討論的許多(但不是全部)要點。上面概述的用于測試執(zhí)行的五個步驟是如何使用 Testkube的基石:
- 定義使用強大的測試工作流程語法定義您的測試執(zhí)行,該語法支持您可能使用的任何測試工具或腳本。
- 觸發(fā)您的測試,無論您可能需要什么;CI/CD、事件/webhook、CLI、API 等。
- 擴展任何測試工具,水平或垂直擴展,以確保您的應(yīng)用程序始終如一地進行測試,并大規(guī)模擴展。
- 排查使用 Testkube 結(jié)果和日志分析功能排查測試結(jié)果。
- 報告隨著時間的推移報告測試結(jié)果,以指導(dǎo)您的測試工作和活動。
雖然 Testkube 無法解決上面討論的所有問題,但它提供了一個扎實的起點。請訪問testkube.io/get-started試用。有開源版本和免費版本可用。