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





















