寫(xiě)在前面
在準(zhǔn)備測(cè)試開(kāi)發(fā)新人手冊(cè)之前,采訪了一些剛?cè)肼毜男』锇椋耗闳肼毢笞畲蟮睦Щ笫鞘裁矗肟吹绞裁礃拥男氯耸謨?cè)?有位同學(xué)的回答很能體現(xiàn)大家的心路歷程,入職后每天都給自己靈魂三問(wèn):我是誰(shuí)?(我的工作角色是做什么的),我在哪兒?(測(cè)試開(kāi)發(fā)在大團(tuán)隊(duì)中的位置),我該做什么?(如何開(kāi)展工作)。這版新人手冊(cè)希望能回答到這些問(wèn)題,讓新人同學(xué)能尋找到答案,快速融入。
測(cè)試開(kāi)發(fā)新人手冊(cè)分為3部分。
1、基礎(chǔ)篇 – 如何開(kāi)始你的第一個(gè)測(cè)試項(xiàng)目
2、進(jìn)階篇 – 做專(zhuān)業(yè)的測(cè)試
3、思考篇 – 穩(wěn)定性保障&測(cè)試技術(shù)創(chuàng)新
1. 基礎(chǔ)篇 – 如何開(kāi)始你的第一個(gè)測(cè)試項(xiàng)目
1.1 我是誰(shuí)?- 認(rèn)識(shí)你的角色
測(cè)試開(kāi)發(fā)工程師,可以從兩方面理解:思想和方法。測(cè)試最重要的是思想,技術(shù)是實(shí)現(xiàn)方法。作為測(cè)試開(kāi)發(fā)工程師則需要具備測(cè)試的思想善用技術(shù)手段完成質(zhì)量保障工作。我們可以通過(guò)接下來(lái)的介紹幫助大家再深入理解什么是質(zhì)量,什么是測(cè)試?如何用技術(shù)手段實(shí)現(xiàn)測(cè)試?
1.1.1什么是質(zhì)量?
質(zhì)量的定義因領(lǐng)域不同定義有很多說(shuō)法,軟件領(lǐng)域的質(zhì)量是指在特定的使用條件下產(chǎn)品滿足明示的和隱含的需求所明確具備能力的全部固有特性(內(nèi)在特性),體現(xiàn)了產(chǎn)品滿足產(chǎn)品要求的程度(外部表現(xiàn)),是產(chǎn)品的質(zhì)量屬性。
從概念分析對(duì)應(yīng)到我們實(shí)際的測(cè)試工作,包括的三個(gè)要素:產(chǎn)品(我們的被測(cè)對(duì)象)、特性集合(需要采用哪些測(cè)試類(lèi)型)、需求(覆蓋的測(cè)試場(chǎng)景)。
1.1.2 什么是測(cè)試?
一個(gè)經(jīng)典的問(wèn)題:做測(cè)試的目的是什么?為了發(fā)現(xiàn)問(wèn)題?為了質(zhì)量?還是為了業(yè)務(wù)價(jià)值保障?這是個(gè)大家需要經(jīng)常問(wèn)自己的問(wèn)題,我們技術(shù)質(zhì)量做的一切活動(dòng)目的,一定是為了保障業(yè)務(wù)交付。測(cè)試要打造發(fā)現(xiàn)問(wèn)題的能力,同樣也需要有打造高穩(wěn)定性的能力。需要對(duì)每次發(fā)現(xiàn)的問(wèn)題都剖析如何能避免問(wèn)題再次發(fā)生或更早階段識(shí)別,同時(shí)對(duì)遺漏的問(wèn)題都深入思考剖析為什么沒(méi)能提前發(fā)現(xiàn)。圍繞這樣的目的作為我們工作的方向。
1.1.3 準(zhǔn)備工作環(huán)境 – 工欲善其事,必先利其器
1.1.3.1 不同工作環(huán)境介紹
環(huán)境是測(cè)試工作中非常消耗時(shí)間且難以管理的部分,環(huán)境區(qū)分的目的和方式,一定程度也體現(xiàn)了大家目前的測(cè)試流程和規(guī)范,接下來(lái)我們會(huì)介紹環(huán)境是如何分層,如何管理,如何準(zhǔn)入準(zhǔn)出。
【第一步:理解環(huán)境】
實(shí)際上,環(huán)境的名稱只是一種形式,關(guān)鍵在于不同的環(huán)境之間存在一些代碼、數(shù)據(jù)、服務(wù)之間的差異。以接入的數(shù)據(jù)源來(lái)說(shuō),項(xiàng)目/日常環(huán)境的數(shù)據(jù)庫(kù)與預(yù)發(fā)/生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)肯定不一樣,這樣測(cè)試使用的數(shù)據(jù)就不會(huì)污染線上數(shù)據(jù);預(yù)發(fā)環(huán)境/灰度環(huán)境會(huì)與生產(chǎn)環(huán)境共用一套數(shù)據(jù)庫(kù),以便在預(yù)發(fā)環(huán)境下測(cè)試新的功能也能較真實(shí)地反映線上的情況。還有一些差異在于使用者的不同,比如預(yù)發(fā)和灰度環(huán)境都使用的是生產(chǎn)環(huán)境的一套數(shù)據(jù)庫(kù),但灰度環(huán)境的使用者是一小部分的外部用戶(客戶),而預(yù)發(fā)環(huán)境的使用者一般都是內(nèi)部人員(開(kāi)發(fā)/測(cè)試)。
【養(yǎng)成測(cè)試發(fā)布好習(xí)慣】
優(yōu)秀的我有著
優(yōu)秀的習(xí)慣
未經(jīng)過(guò)項(xiàng)目環(huán)境測(cè)試的變更我絕不直接部署日常
未經(jīng)過(guò)日常測(cè)試通過(guò)的變更我絕不直接上預(yù)發(fā)
未經(jīng)過(guò)本地/項(xiàng)目環(huán)境編譯啟動(dòng)成功的變更我絕不直接部署日常和預(yù)發(fā)
【第二步,各個(gè)環(huán)境區(qū)分】
- 項(xiàng)目環(huán)境
項(xiàng)目環(huán)境也可理解為開(kāi)發(fā)環(huán)境和聯(lián)調(diào)環(huán)境,顧名思義,開(kāi)發(fā)同學(xué)開(kāi)發(fā)時(shí)使用的環(huán)境,每位開(kāi)發(fā)同學(xué)在自己的dev分支上編碼,和其他代碼是完全分離的。多項(xiàng)目環(huán)境可以關(guān)聯(lián)在一起形成項(xiàng)目制的開(kāi)發(fā)和資源聯(lián)調(diào)。項(xiàng)目環(huán)境數(shù)據(jù)庫(kù)和日常環(huán)境是一套。
- 日常環(huán)境
日常環(huán)境是主要測(cè)試環(huán)境,開(kāi)發(fā)完成自測(cè)通過(guò)后提交代碼,日常環(huán)境會(huì)(merge)所有提交到日常的分支,融合的時(shí)候可能會(huì)存在沖突,有沖突就需要排除沖突。測(cè)試同學(xué)主要的工作環(huán)境為日常環(huán)境。
- 預(yù)發(fā)環(huán)境
預(yù)發(fā)環(huán)境和日常環(huán)境一樣是把其他開(kāi)發(fā)同學(xué)部署到日常機(jī)器上的代碼和你要發(fā)布到日常的代碼融合起來(lái)(merge)一起測(cè)試。但預(yù)發(fā)環(huán)境區(qū)別于日常環(huán)境最大的點(diǎn)是,預(yù)發(fā)環(huán)境和生產(chǎn)環(huán)境是同一套數(shù)據(jù)庫(kù)。而且相對(duì)日常,預(yù)發(fā)的數(shù)據(jù)更加接近真實(shí)的線上數(shù)據(jù)。預(yù)發(fā)環(huán)境和生產(chǎn)環(huán)境的訪問(wèn)域不同。所以預(yù)發(fā)環(huán)境更多使用在驗(yàn)收測(cè)試和最后發(fā)布前的checklist觀察,不作為測(cè)試的主要環(huán)境。
- 灰度環(huán)境
灰度環(huán)境其實(shí)就是小范圍的生產(chǎn)環(huán)境,是一套有隔離策略的生產(chǎn)環(huán)境分組。是通過(guò)真實(shí)流量結(jié)合環(huán)境策略能夠在全量發(fā)布前再進(jìn)行一輪驗(yàn)證,因?yàn)槎际钦鎸?shí)流量,灰度如果出現(xiàn)問(wèn)題,影響的已經(jīng)是真實(shí)用戶,但因流量帶來(lái)的損失可控。(愛(ài)玩游戲的同學(xué)可以把它理解為游戲內(nèi)側(cè)、體驗(yàn)服等)
- 生產(chǎn)環(huán)境
即線上環(huán)境,在權(quán)限和發(fā)布管理上非常嚴(yán)格。包括DB的寫(xiě)操作都需要多級(jí)審批流,發(fā)布變更也有嚴(yán)格的窗口管控,在流程上也要求了變更必須經(jīng)過(guò)日常 – 預(yù)發(fā) – 灰度之后才允許合并到線上。
- 自定義環(huán)境
1.2 我在哪兒?- 修煉測(cè)試基本功
熟悉了環(huán)境,做好了工作準(zhǔn)備,可以開(kāi)始第一個(gè)項(xiàng)目了嗎?如果你已經(jīng)了解軟件質(zhì)量屬性,也掌握了常用的測(cè)試方法,熟悉測(cè)試流程,那么恭喜你,可以開(kāi)始你的測(cè)試工作了,如果還沒(méi)有,下面的章節(jié)可以找到答案。
1.2.1 認(rèn)識(shí)軟件質(zhì)量
1.2.1.1 軟件產(chǎn)品質(zhì)量屬性
這一章會(huì)從軟件質(zhì)量的基本概念出發(fā),以標(biāo)準(zhǔn)化(ISO/IEC25010)的軟件定義,介紹軟件產(chǎn)品質(zhì)量模型和使用質(zhì)量模型。里面的內(nèi)容都可以在《GBT25000.10-2016系統(tǒng)與軟件工程系統(tǒng)與軟件質(zhì)量要求和評(píng)價(jià)(SQuaRE)第10部分系統(tǒng)與軟件質(zhì)量模型》中找到詳細(xì)解釋?zhuān)@里主要列出我們測(cè)試工作中常用且必須關(guān)注的質(zhì)量特性以及實(shí)際場(chǎng)景中如何運(yùn)用。
系統(tǒng)/軟件產(chǎn)品質(zhì)量屬性有8個(gè)特性:功能性、性能效率、兼容性、易用性、可靠性、信息安全性、維護(hù)性和可移植性。其中功能性,性能效率,可靠性、易用性(人工差錯(cuò)防御)是我們著重需要關(guān)注的質(zhì)量特性,也是導(dǎo)致線上90%故障的主要因素。
產(chǎn)品質(zhì)量特性說(shuō)明和理解:
- 功能性 – 在指定條件下使用時(shí),產(chǎn)品或系統(tǒng)提供滿足明確和隱含要求的功能的程度。包括功能完備性、功能正確性、功能適合性、功能性的依從性。
從定義上來(lái)理解,功能性并不止?jié)M足“明確”的要求,還有很多“隱含”的質(zhì)量特性。我們?cè)谧龉δ軠y(cè)試的時(shí)候,“明確” “隱含”需求一起覆蓋才是完整的測(cè)試場(chǎng)景。我們?cè)诠ぷ髦腥绾文芮爸米岆[含的需求明確,是質(zhì)量同學(xué)的一項(xiàng)重要能力,這個(gè)過(guò)程包括在需求前期跟PD的明確,比如需求文檔里描述了想要實(shí)現(xiàn)的功能,但沒(méi)有寫(xiě)明對(duì)性能和用戶體驗(yàn)的要求,測(cè)試同學(xué)就是需要在評(píng)審階段就對(duì)焦明確,這樣在TC設(shè)計(jì),測(cè)試策略以及后面業(yè)務(wù)方驗(yàn)收測(cè)試中才能充分被覆蓋到。還是一個(gè)基本原則,問(wèn)題越前置被識(shí)別并解決,是成本最低的做法。
功能子屬性 | 子屬性特性描述 |
完備性 | 功能集對(duì)指定的任務(wù)和用戶目標(biāo)的覆蓋程度; |
正確性 | 產(chǎn)品或系統(tǒng)提供具有所需精度的正確的結(jié)果的程度; |
適合性 | 功能促使指定的任務(wù)和目標(biāo)實(shí)現(xiàn)的程度 |
功能性的依從性 | 產(chǎn)品或系統(tǒng)遵循與功能性相關(guān)的標(biāo)準(zhǔn)、約定或法規(guī)以及類(lèi)似規(guī)定的程度。 |
- 性能效率 – 性能效率的評(píng)估與在指定條件下所使用的資源量有關(guān)。包括時(shí)間特性、資源利用率、容量、性能效率的依從性。
實(shí)際工作中,我們基礎(chǔ)架構(gòu)的彈性能力,常態(tài)化壓測(cè)能力、大促的全鏈路壓測(cè)等都是這一質(zhì)量屬性的測(cè)試體現(xiàn)。后面在測(cè)試進(jìn)階能力中,會(huì)有專(zhuān)門(mén)篇幅介紹性能測(cè)試和全鏈路壓測(cè)的內(nèi)容。
功能子屬性 | 子屬性特性描述 |
實(shí)踐特性 | 產(chǎn)品或系統(tǒng)執(zhí)行其功能時(shí),其響應(yīng)時(shí)間、處理時(shí)間及吞吐率滿足需求的程度; |
容量 | 產(chǎn)品或系統(tǒng)參數(shù)的最大限量滿足需求的程度; |
資源利用率 | 產(chǎn)品或系統(tǒng)執(zhí)行其功能時(shí),所使用資源數(shù)量和類(lèi)型滿足需求的程度; |
性能效率的依從性 | 產(chǎn)品或系統(tǒng)遵循與性能效率相關(guān)的標(biāo)準(zhǔn)、約定或法規(guī)以及類(lèi)似規(guī)定的程度。 |
- 可靠性 – 系統(tǒng)、產(chǎn)品或組件在指定條件下、指定時(shí)間內(nèi)執(zhí)行指定功能的程度。包括成熟性、可用性、容錯(cuò)性、易恢復(fù)性、可靠性的依從性。
質(zhì)量同學(xué)在評(píng)估方案時(shí)經(jīng)常會(huì)出現(xiàn)這樣的靈魂拷問(wèn):怎樣設(shè)計(jì)測(cè)試場(chǎng)景保障線上不出問(wèn)題、如何設(shè)計(jì)架構(gòu)讓主流程不受阻塞、強(qiáng)弱依賴如何解耦、準(zhǔn)備怎樣的預(yù)案讓問(wèn)題發(fā)生時(shí)也能快速恢復(fù)等,都是對(duì)可靠性質(zhì)量屬性的測(cè)試實(shí)踐,可靠性也是我們?cè)谠O(shè)計(jì)評(píng)審中需要著重關(guān)注的特性。
功能子屬性 | 子屬性特性描述 |
成熟性 | 系統(tǒng)、產(chǎn)品或組件在正常運(yùn)行時(shí)滿足可靠性要求的程度; |
可用性 | 系統(tǒng)、產(chǎn)品或組件在需要使用時(shí)能夠進(jìn)行操作和訪問(wèn)的程度; |
容錯(cuò)性 | 盡管存在硬件或軟件故障,系統(tǒng)、產(chǎn)品或組件的運(yùn)行符合預(yù)期的程度; |
易恢復(fù)性 | 在發(fā)生中斷或失效時(shí),產(chǎn)品或系統(tǒng)能夠恢復(fù)直接受影響的數(shù)據(jù)并重建期望的系統(tǒng)狀態(tài)的程度; |
可靠性的依從性 | 產(chǎn)品或系統(tǒng)遵循與可靠性相關(guān)的標(biāo)準(zhǔn)、約定或法規(guī)以及類(lèi)似規(guī)定的程度。 |
- 易用性 – 在指定的使用周境中,產(chǎn)品或系統(tǒng)在有效性、效率和滿意度特性方面為了指定的目標(biāo)可為指定用戶使用的程度。包括可辨識(shí)性、易學(xué)性、易操作性、人工差錯(cuò)防御性、易訪問(wèn)性、易用性的依從性。
易用性的另一個(gè)描述就是功能級(jí)別的用戶體驗(yàn)(下一章會(huì)介紹使用級(jí)別的用戶體驗(yàn)),我們新零售技術(shù)質(zhì)量的愿景就是“做用戶體驗(yàn)的捍衛(wèi)者”,因此易用性是測(cè)試過(guò)程中很重要的一個(gè)覆蓋范圍。易用性里核心需關(guān)注的是人工差錯(cuò)防御,我們有很多故障或線上問(wèn)題都來(lái)自于人工操作或配置類(lèi)錯(cuò)誤,這都是人工差錯(cuò)防御范圍。
功能子屬性 | 子屬性特性描述 |
可辨識(shí)性 | 用戶能夠辨識(shí)產(chǎn)品或系統(tǒng)是否適合他們的要求的程度; |
易學(xué)性 | 在指定的使用周境中,產(chǎn)品或系統(tǒng)在有效性、效率、抗風(fēng)險(xiǎn)和滿意度特性方面為了學(xué)習(xí)使用該產(chǎn)品或系統(tǒng)這一指定的目標(biāo)可為指定用戶使用的程度; |
易操作性 | 產(chǎn)品或系統(tǒng)具有易于操作和控制的屬性的程度; |
人工差錯(cuò)防御性 | 系統(tǒng)預(yù)防用戶犯錯(cuò)的程度;用戶界面舒適性:用戶界面提供令人愉悅和滿意的交互的程度; |
易訪問(wèn)性 | 在指定的使用周境中,為了達(dá)到指定的目標(biāo),產(chǎn)品或系統(tǒng)被具有最廣泛的特征和能力的個(gè)體所使用的程度; |
易用性的依從性 | 產(chǎn)品或系統(tǒng)遵循與易用性相關(guān)的標(biāo)準(zhǔn)、約定或法規(guī)以及類(lèi)似規(guī)定的程度。 |
- 兼容性 – 在共享相同的硬件或軟件環(huán)境的條件下,產(chǎn)品、系統(tǒng)或組件能夠與其他產(chǎn)品、系統(tǒng)或組件交換信息,和/或執(zhí)行其所需的功能的程度。
包括共存性、互操作性、兼容性的依從性。兼容性測(cè)試在移動(dòng)應(yīng)用測(cè)試和跨平臺(tái)組件應(yīng)用上需著重評(píng)估。
- 信息安全性 – 產(chǎn)品或系統(tǒng)保護(hù)信息和數(shù)據(jù)的程度,以使用戶、其他產(chǎn)品或系統(tǒng)具有與其授權(quán)類(lèi)型和授權(quán)級(jí)別一致的數(shù)據(jù)訪問(wèn)度。包括保密性、完整性、抗抵賴性、可核查性、真實(shí)性、信息安全的依從性。
這部分質(zhì)量屬性直接對(duì)應(yīng)安全性測(cè)試,已經(jīng)是測(cè)試領(lǐng)域里獨(dú)立的一個(gè)重要方向。后面的進(jìn)階篇會(huì)有詳細(xì)介紹。
- 可維護(hù)性 – 產(chǎn)品或系統(tǒng)能夠被預(yù)期的維護(hù)人員修改的有效性和效率的程度。包括模塊化、可重用性、易分析性、易修改性、易測(cè)試性、維護(hù)性依從性。可維護(hù)性更多體現(xiàn)在對(duì)設(shè)計(jì)方案的評(píng)估過(guò)程中。
- 可移植性 – 系統(tǒng)、產(chǎn)品或組件能夠從一種硬件、軟件、或者其他運(yùn)行(或使用)環(huán)境遷移到另一種環(huán)境的有效性和效率的程度。包括適應(yīng)性、易安裝性、易替換性、可移植性的依從性。遷移類(lèi)項(xiàng)目和版本升級(jí)類(lèi)變更需評(píng)估。
1.2.1.2 產(chǎn)品使用質(zhì)量屬性
使用質(zhì)量屬性是從用戶使用體驗(yàn)的角度進(jìn)行定義,質(zhì)量同學(xué)作為用戶體驗(yàn)的捍衛(wèi)者,除了產(chǎn)品質(zhì)量,使用質(zhì)量也需要關(guān)注。它描述了產(chǎn)品(系統(tǒng)或軟件產(chǎn)品)對(duì)利益相關(guān)方造成的影響。它是由軟件、硬件和運(yùn)行環(huán)境的質(zhì)量,以及用戶、任務(wù)和社會(huì)環(huán)境的特性所決定的。所有這些因素均有利于系統(tǒng)的使用質(zhì)量。
產(chǎn)品使用質(zhì)量屬性說(shuō)明:
- 有效性:用戶實(shí)現(xiàn)指定目標(biāo)的準(zhǔn)確性和完備性。
- 效率:與用戶實(shí)現(xiàn)目標(biāo)的準(zhǔn)確性和完備性相關(guān)的資源消耗。
- 滿意度:產(chǎn)品或系統(tǒng)在指定的使用周境中使用時(shí),用戶的要求被滿足的程度。包括有用性:用戶對(duì)實(shí)用目標(biāo)的實(shí)現(xiàn)感到滿意的程度,包括使用的結(jié)果和使用后產(chǎn)生的后果;可信性:用戶或者其他利益相關(guān)方對(duì)產(chǎn)品或系統(tǒng)將如預(yù)期地運(yùn)行有信心的程度;愉悅性:用戶因個(gè)人要求被滿足而獲得愉悅感的程度;舒適性:用戶生理上感到舒適的程度。
- 抗風(fēng)險(xiǎn):包括經(jīng)濟(jì)風(fēng)險(xiǎn)緩解性:在預(yù)期的使用周境中,產(chǎn)品或系統(tǒng)在經(jīng)濟(jì)現(xiàn)狀、高效運(yùn)行、商業(yè)財(cái)產(chǎn)、信譽(yù)或其他資源方面緩解潛在風(fēng)險(xiǎn)的程度;健康和安全風(fēng)險(xiǎn)緩解性:在預(yù)期的使用周境中,產(chǎn)品或系統(tǒng)緩解人員潛在風(fēng)險(xiǎn)的程度;環(huán)境風(fēng)險(xiǎn)緩解性:在預(yù)期的使用周境中,產(chǎn)品或系統(tǒng)在財(cái)產(chǎn)或環(huán)境方面緩解潛在風(fēng)險(xiǎn)程度。
- 周境覆蓋:在指定的使用周境和超出最初設(shè)定需求的周境中,產(chǎn)品或系統(tǒng)在有效性、效率、抗風(fēng)險(xiǎn)和滿意度特性方面能夠被使用的程度。包括周境完備性:在所有指定的使用周境中,產(chǎn)品或系統(tǒng)在有效性、效率、抗風(fēng)險(xiǎn)和滿意度特性方面能夠被使用的程度;靈活性:在超出最初設(shè)定需求的周境中,產(chǎn)品或系統(tǒng)在有效性、效率、抗風(fēng)險(xiǎn)和滿意度特性方面能夠被使用的程度。
1.2.2 認(rèn)識(shí)軟件測(cè)試
對(duì)軟件質(zhì)量思考的不同角度,形成了不同的測(cè)試類(lèi)型,不同類(lèi)型對(duì)應(yīng)不同的測(cè)試方法,而不同的測(cè)試方法針對(duì)不同的質(zhì)量特性。要修煉更深更廣的測(cè)試覆蓋度,需要了解更多的測(cè)試方法用于設(shè)計(jì)測(cè)試用例。這類(lèi)方法的介紹書(shū)籍非常多,下圖是一個(gè)質(zhì)量特性對(duì)應(yīng)測(cè)試方法的展示。實(shí)際項(xiàng)目中測(cè)試時(shí)間和資源往往有限,測(cè)試工程師就需要不斷的思高效的質(zhì)量保障手段。下圖很多方法都已能通過(guò)工具或技術(shù)手段來(lái)完成,比如異常測(cè)試,故障輸入,冪等,灰度驗(yàn)證等等。因此質(zhì)量特性對(duì)應(yīng)的方法更多只是一個(gè)范圍的參考,給測(cè)試同學(xué)一個(gè)基本原則,如何保障好這個(gè)特性,需要我們不斷的思考測(cè)試技術(shù)的突破來(lái)實(shí)現(xiàn)。
1.2.2.1 測(cè)試類(lèi)型
根據(jù)測(cè)試方法不同的類(lèi)型
- 黑盒測(cè)試 – 也稱功能測(cè)試或基于需求的測(cè)試,測(cè)試設(shè)計(jì)時(shí)把被測(cè)對(duì)象當(dāng)成一個(gè)黑盒子,不關(guān)心盒子的內(nèi)部結(jié)構(gòu),主要通過(guò)輸入/輸出數(shù)據(jù)驅(qū)動(dòng)功能用例。這類(lèi)測(cè)試中理論上的充分測(cè)試標(biāo)準(zhǔn)就是“窮舉輸入”,而窮舉肯定是不可能的,因此我們還需要其他的測(cè)試類(lèi)型進(jìn)行補(bǔ)充。
- 白盒測(cè)試 – 也稱為邏輯驅(qū)動(dòng)測(cè)試,針對(duì)性較強(qiáng),需要對(duì)代碼邏輯有了解。理論上的充分測(cè)試是所有的條件、語(yǔ)句、路徑組合都被覆蓋,對(duì)技術(shù)和成本都有一定要求。
- 灰盒測(cè)試 – 介于白盒與黑盒之間的測(cè)試方式,根據(jù)實(shí)際測(cè)試場(chǎng)景、資源、復(fù)雜度等情況進(jìn)行結(jié)合,也是目前我們使用最多的測(cè)試類(lèi)型。
每種測(cè)試類(lèi)型都對(duì)應(yīng)很多測(cè)試分析方法,后面進(jìn)階篇也會(huì)針對(duì)各種測(cè)試方向進(jìn)行深入介紹,這里不對(duì)基本概念和原理多做贅述。
1.2.2.2 軟件測(cè)試的基本原則
基本功修煉的最后,我們可以歸納出一系列重要的測(cè)試指導(dǎo)原則,可作為我們?nèi)粘9ぷ鞯奶嵝选T瓌t大部分看上去顯而易見(jiàn),淺顯易懂。但往往故障都發(fā)生在這些常見(jiàn)的場(chǎng)景中,用一位開(kāi)發(fā)TL在某次故障復(fù)盤(pán)會(huì)上的話,給“修煉測(cè)試基本功”這一章做個(gè)結(jié)束語(yǔ):故障中的一切問(wèn)題看似天災(zāi)人禍,實(shí)則人事不修。
序號(hào) | 原則 |
1 | 窮盡測(cè)試是不可能的 -窮舉測(cè)試解決不了覆蓋問(wèn)題,多思考創(chuàng)新采用技術(shù)手段豐富覆蓋度 |
2 | 測(cè)試左移和測(cè)試右移(Shift left testing and Shift right testing) – 測(cè)試應(yīng)盡早介入,問(wèn)題發(fā)現(xiàn)越晚修復(fù)代價(jià)越大。同時(shí)測(cè)試活動(dòng)也不應(yīng)停止于發(fā)布前,線上業(yè)務(wù)監(jiān)控,回歸以及系統(tǒng)恢復(fù)都是測(cè)試職責(zé)范圍。 |
3 | 缺陷集群效應(yīng) – 一旦某個(gè)模塊發(fā)現(xiàn)了較多問(wèn)題,那一定隱藏了更多的問(wèn)題 |
4 | 殺蟲(chóng)劑悖論 – 測(cè)試用例和自動(dòng)化腳本、工具、數(shù)據(jù)等要定期更新,用同樣的內(nèi)容測(cè)變化的系統(tǒng)會(huì)越來(lái)越難發(fā)現(xiàn)問(wèn)題。 |
5 | 測(cè)試依賴于上下文 – 質(zhì)量保障不能僅僅考慮需求本身,還需要考慮關(guān)聯(lián)的上下游等諸多因素 |
6 | 沒(méi)有不存在缺陷的系統(tǒng) – 要充分對(duì)系統(tǒng)進(jìn)行風(fēng)險(xiǎn)分析,沒(méi)發(fā)現(xiàn)問(wèn)題不代表沒(méi)有缺陷。 |
7 | 測(cè)試用例的設(shè)計(jì)不僅要考慮有效輸入輸出,也應(yīng)該考慮無(wú)效和未預(yù)測(cè)到的輸入情況,異常測(cè)試必須覆蓋 |
8 | 檢查系統(tǒng)是否“沒(méi)有完成應(yīng)該完成的”,僅僅是測(cè)試的一半,另一半是檢查系統(tǒng)是否“做了不應(yīng)該做的”。 |
9 | 隨時(shí)沉淀,隨時(shí)總結(jié),隨時(shí)思考,質(zhì)量保障是持續(xù)性的,創(chuàng)造性的,富有挑戰(zhàn)性的工作。 |
1.3 我該做什么?- 測(cè)試工作流
1.3.1 研發(fā)過(guò)程中的測(cè)試工作
研發(fā)過(guò)程中測(cè)試可以做的事情很多,下面流程環(huán)節(jié)的介紹只列出了最主要的一些測(cè)試活動(dòng),可以作為一些基本參考,測(cè)試怎樣能介入的更深入,在團(tuán)隊(duì)建立認(rèn)可和存在感,拿到更好的質(zhì)量保障結(jié)果,是需要在工作中不斷的思考實(shí)踐的,因此這一章雖然是介紹流程,但是實(shí)操中不限定角色,不限定階段,不限定方式,大家結(jié)合項(xiàng)目實(shí)際的時(shí)間資源、人力資源、質(zhì)量要求做到最佳實(shí)踐就是可行的工作流。
1.3.1.1 需求設(shè)計(jì)階段測(cè)試做什么 – 測(cè)試計(jì)劃與需求評(píng)估
測(cè)試活動(dòng) | 目標(biāo) | 主導(dǎo)方 |
需求評(píng)審 | 了解需求業(yè)務(wù)目標(biāo)和實(shí)現(xiàn)邏輯,為開(kāi)發(fā)設(shè)計(jì)、測(cè)試設(shè)計(jì)做準(zhǔn)備; 識(shí)別需求設(shè)計(jì)階段問(wèn)題 通過(guò)評(píng)審盡可能降低團(tuán)隊(duì)成員理解的不一致性 評(píng)估風(fēng)險(xiǎn)、在需求階段納入風(fēng)險(xiǎn)防控 | 業(yè)務(wù)、產(chǎn)品 |
測(cè)試分析 | 從資源、業(yè)務(wù)要求角度設(shè)計(jì)測(cè)試完成所需計(jì)劃。明確測(cè)試范圍,測(cè)試目標(biāo),測(cè)試重點(diǎn)和難點(diǎn),測(cè)試深度和廣度,如何安排測(cè)試工作節(jié)奏,測(cè)試如何分層等 | 測(cè)試 |
監(jiān)控梳理 | 從業(yè)務(wù)需求梳理業(yè)務(wù)監(jiān)控點(diǎn)和風(fēng)險(xiǎn)點(diǎn) | 測(cè)試、開(kāi)發(fā) |
1.3.1.2 開(kāi)發(fā)設(shè)計(jì)階段測(cè)試做什么 – 分析與設(shè)計(jì)
測(cè)試活動(dòng) | 目標(biāo) | 主導(dǎo)方 |
設(shè)計(jì)評(píng)審 | 熟悉技術(shù)實(shí)現(xiàn)方案、設(shè)計(jì)是否涵蓋了業(yè)務(wù)需求、存在的風(fēng)險(xiǎn),為測(cè)試分析和測(cè)試用例設(shè)計(jì)提供輸入。 | 開(kāi)發(fā) |
測(cè)試分析 | 從測(cè)試技術(shù)對(duì)業(yè)務(wù)和系統(tǒng)進(jìn)行風(fēng)險(xiǎn)分析、技術(shù)分析。提前識(shí)別問(wèn)題。 | 測(cè)試 |
測(cè)試策略 | 測(cè)試分析中的風(fēng)險(xiǎn)應(yīng)對(duì)策略、確定測(cè)試的深度(代碼范圍)和廣度(場(chǎng)景覆蓋),如何符合質(zhì)量目標(biāo)(性能測(cè)試、穩(wěn)定性測(cè)試等),如何符合測(cè)試計(jì)劃。 | 測(cè)試 |
用例設(shè)計(jì) | 覆蓋需求分析、設(shè)計(jì)分析、質(zhì)量特性分析、風(fēng)險(xiǎn)分析、測(cè)試策略內(nèi)容 | 測(cè)試 |
用例評(píng)審 | 在提測(cè)之前邀請(qǐng)關(guān)聯(lián)方對(duì)測(cè)試用例進(jìn)行評(píng)審。 | 測(cè)試 |
1.3.1.3 測(cè)試階段做什么 – 測(cè)試執(zhí)行與策略實(shí)施
測(cè)試活動(dòng) | 目標(biāo) | 主導(dǎo)方 |
冒煙測(cè)試 | 對(duì)提測(cè)內(nèi)容進(jìn)行驗(yàn)證,是否滿足約定的標(biāo)準(zhǔn)和內(nèi)容。 | 測(cè)試 |
測(cè)試執(zhí)行 | 測(cè)試執(zhí)行過(guò)程非常關(guān)鍵,有各個(gè)環(huán)境的迭代執(zhí)行,有不同測(cè)試類(lèi)型的執(zhí)行,有各個(gè)階段的測(cè)試內(nèi)容,有缺陷跟蹤,方案測(cè)試等諸多內(nèi)容 | 測(cè)試 |
驗(yàn)收測(cè)試 | 項(xiàng)目是否滿足業(yè)務(wù)預(yù)期功能,業(yè)務(wù)價(jià)值是否正確體現(xiàn)。 | 測(cè)試、產(chǎn)品、業(yè)務(wù) |
測(cè)試報(bào)告 | 測(cè)試過(guò)程和結(jié)果的總結(jié)和沉淀,包括測(cè)試計(jì)劃和策略階段的內(nèi)容。也是發(fā)布準(zhǔn)入的重要評(píng)估。 | 測(cè)試 |
1.3.1.4 發(fā)布前后
測(cè)試活動(dòng) | 目的 | 主導(dǎo)方 |
灰度驗(yàn)證 | 無(wú)灰度無(wú)變更,灰度驗(yàn)證是發(fā)布的必須過(guò)程。 | 開(kāi)發(fā)、測(cè)試 |
發(fā)布執(zhí)行配合 | 關(guān)注發(fā)布方案整體過(guò)程,日志,監(jiān)控,業(yè)務(wù)反饋。 | 開(kāi)發(fā) |
監(jiān)控&線上回歸 | 發(fā)布后也需要進(jìn)行一段時(shí)間的監(jiān)控觀察,日志觀察,和線上業(yè)務(wù)回歸。 | 測(cè)試 |
問(wèn)題跟蹤(工單分析、線上問(wèn)題排查、故障處理) | 問(wèn)題跟蹤是測(cè)試同學(xué)對(duì)線上項(xiàng)目運(yùn)行實(shí)際效果的很好評(píng)估途徑,包括通過(guò)線上問(wèn)題的跟蹤,了解問(wèn)題遺漏的原因,針對(duì)改進(jìn),形成穩(wěn)定性建設(shè)的流程閉環(huán)。 | 測(cè)試 |
1.3.2 測(cè)試工作規(guī)范&標(biāo)準(zhǔn)
1.3.2.1 通用版變更紅線V2.0
前面介紹環(huán)境和權(quán)限中提到過(guò),線上變更是風(fēng)險(xiǎn)非常高的操作,90%的故障是變更引起,因此我們?cè)跍y(cè)試過(guò)程中往往需要制定詳細(xì)嚴(yán)格的變更管控,變更風(fēng)險(xiǎn)防控三原則:可灰度,可監(jiān)控,可回滾。
- 變更紅線定義( 示例):
- 禁止封網(wǎng)期、非變更窗口期進(jìn)行除緊急變更外的變更。
- 禁止未經(jīng)測(cè)試驗(yàn)證、未經(jīng)預(yù)發(fā)、未經(jīng)灰度的線上變更。
- 禁止一切未通過(guò)變更管理平臺(tái)申請(qǐng)或報(bào)備的變更操作,緊急故障處理,可事后補(bǔ)填申請(qǐng)。
- 禁止無(wú)影響面說(shuō)明、操作步驟、驗(yàn)證方案、應(yīng)急預(yù)案的變更。應(yīng)急預(yù)案(如回滾方案)必須具備可操作性。
- 禁止一切與變更方案計(jì)劃內(nèi)容、線上問(wèn)題排查無(wú)關(guān)的生產(chǎn)環(huán)境變更操作。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。