QA如何高效參與技術(shù)設(shè)計(jì)評審
作者|張?jiān)?/span>
背景
隨著QA進(jìn)行全流程的質(zhì)量把控逐步成為趨勢,QA在項(xiàng)目中的關(guān)注點(diǎn)不僅僅停留在測試階段,在項(xiàng)目的每一個階段都可以看到QA在積極地推進(jìn)項(xiàng)目進(jìn)度、把控項(xiàng)目質(zhì)量。
本文將主要介紹在技術(shù)設(shè)計(jì)評審階段,QA可以從哪些地方入手,做到真正有效的參與其中,并發(fā)揮作用。
為什么要參與技術(shù)設(shè)計(jì)評審?
在介紹參與技術(shù)設(shè)計(jì)評審之前,我們首先要明確為什么要參與技術(shù)設(shè)計(jì)評審?參與技術(shù)設(shè)計(jì)評審能給我們帶來什么?只有我們明確了參與技術(shù)設(shè)計(jì)評審能給我們帶來的好處,我們才更有動力做這件事情。我認(rèn)為, QA參與技術(shù)設(shè)計(jì)評審,有以下四點(diǎn)好處:
1、糾正項(xiàng)目成員對需求的錯誤理解。在參與技術(shù)設(shè)計(jì)評審時(shí),通過對開發(fā)的設(shè)計(jì)思路的了解,了解開發(fā)對于需求的理解,發(fā)現(xiàn)開發(fā)對需求理解不正確的地方;同時(shí),在了解設(shè)計(jì)思路的同時(shí),可能會發(fā)現(xiàn)自己對需求理解有偏差的地方。通過對這些點(diǎn)的及時(shí)糾正,能盡早地避免某些bug的出現(xiàn)。
2、為測試方案提供依據(jù)。通過參與技術(shù)設(shè)計(jì)評審,了解具體的實(shí)現(xiàn)方案,針對開發(fā)的設(shè)計(jì)方案進(jìn)行相應(yīng)的測試方案選型,例如核心的接口、核心的服務(wù)是否需要進(jìn)行接口測試、重要的邏輯覆蓋、測試場景的數(shù)據(jù)構(gòu)造、測試所需的工具等,都可以在這個階段結(jié)合開發(fā)的技術(shù)設(shè)計(jì)進(jìn)行思考和產(chǎn)出。
3、有效的評估影響范圍。有些場景需求文檔上并未提到,但是因?yàn)橄鄳?yīng)的代碼有改動,相關(guān)的功能可能會受到影響,參與技術(shù)設(shè)計(jì)評審能夠幫我們發(fā)現(xiàn)這些影響點(diǎn),及時(shí)地補(bǔ)充測試用例,避免遺漏。
4、有效的評估風(fēng)險(xiǎn)點(diǎn)。通過了解開發(fā)的技術(shù)設(shè)計(jì),了解改動的范圍,評估工作量以及相應(yīng)的風(fēng)險(xiǎn)點(diǎn)。甚至,在技術(shù)評審階段,開發(fā)會提供多種設(shè)計(jì)方案,通過對每種方案的了解,QA可以有效的評估到每種方案的影響范圍和風(fēng)險(xiǎn)點(diǎn),從而選擇風(fēng)險(xiǎn)更小的解決方案。
QA如何高效參與技術(shù)設(shè)計(jì)評審?
設(shè)計(jì)評審會議的時(shí)間一般不會太長,想要在一個設(shè)計(jì)評審會上跟上開發(fā)同學(xué)的思路,理解設(shè)計(jì)方案,達(dá)到自己的目的,提前做好準(zhǔn)備工作是非常重要的。我把設(shè)計(jì)評審大致分為三個階段:設(shè)計(jì)評審前、設(shè)計(jì)評審中、設(shè)計(jì)評審后,在每一個階段,我們需要做的事情主要有:
1、?設(shè)計(jì)評審前:通知到位,提前準(zhǔn)備。
(1)確保相關(guān)人員通知到位。評審會上確保相關(guān)人都在場,提前做好通知;
(2)熟悉需求文檔,提前看技術(shù)設(shè)計(jì)文檔。結(jié)合需求文檔,理解技術(shù)設(shè)計(jì)文檔,有問題提前做好批注。
2、設(shè)計(jì)評審中:重點(diǎn)關(guān)注技術(shù)設(shè)計(jì)是否滿足需求、涉及的接口、測試范圍。
(1)流程圖??梢郧逦?/span>展示此次需求的業(yè)務(wù)流程;
(2)系統(tǒng)間交互圖。以時(shí)序圖或協(xié)作圖的形式提供,可以清晰的體現(xiàn)出系統(tǒng)間的信息傳遞;
(3)配置類功能。設(shè)計(jì)中哪些是配置實(shí)現(xiàn)的。apollo配置、緩存、mq、定時(shí)任務(wù)等;
(4)數(shù)據(jù)庫設(shè)計(jì)。數(shù)據(jù)庫的庫表結(jié)構(gòu),關(guān)鍵字段的描述;
(5)設(shè)計(jì)是否完整。是否覆蓋了產(chǎn)品需求文檔中要求的功能,避免遺漏;
(6)已有接口的復(fù)用或修改。如果是復(fù)用已有接口的能力,看是否該接口真能滿足新的需求,如果在原有接口的基礎(chǔ)上修改,需要清楚更改了哪些內(nèi)容,是否會影響到已有邏輯;
(7)新接口的定義。如果是新的接口,看實(shí)現(xiàn)的功能是否符合需求,接口定義是否明確;
(8)需要第三方提供的接口。明確哪些接口是需要第三方提供的,明確對接人,方便后續(xù)的溝通;
(9)對外提供的接口。對外提供接口的作用,做好對應(yīng)的測試方案,與使用方做好溝通;
(10)影響范圍的評估。明確此次需求改動影響的范圍是什么,需要做哪些場景回歸;如果影響范圍比較大,是否有更好的設(shè)計(jì)方案;
(11)具備可測性。面對分批提測的需求,模塊拆分后是否具備可測性;針對特殊場景,是否需要開發(fā)或測試提供工具方便測試;不可測的情況下,劃分分工的邊界,明確告知RD我們能測試的點(diǎn),明確不可測試的地方的質(zhì)量把控方案;
(12)新老數(shù)據(jù)兼容。是否涉及新老數(shù)據(jù)兼容的測試驗(yàn)證;
(13)核心接口性能指標(biāo)。是否需要對核心接口做性能測試;
總之,評審過程中,要積極地跟上開發(fā)同學(xué)的思路,理解RD設(shè)計(jì)的理由,持不同看法時(shí)勇敢地提出自己的想法和建議。
3、設(shè)計(jì)評審后,做好待辦事情的跟進(jìn),完成測試方案的設(shè)計(jì)。
(1)相關(guān)群里同步待跟進(jìn)的事情。明確對接人及問題的解決時(shí)間,做好持續(xù)的跟進(jìn);
(2)設(shè)計(jì)測試方案。按照項(xiàng)目準(zhǔn)則選擇測試手段、編寫測試用例、提供數(shù)據(jù)構(gòu)造或腳本工具等、結(jié)合技術(shù)設(shè)計(jì)方案,做好風(fēng)險(xiǎn)評估。
QA深度參與技術(shù)設(shè)計(jì)評審的項(xiàng)目實(shí)踐
下面我將以一個項(xiàng)目為例,具體介紹如何通過技術(shù)評審?fù)苿禹?xiàng)目最終高效、高質(zhì)地完成。
項(xiàng)目名稱:第三方供應(yīng)商可投轉(zhuǎn)轉(zhuǎn)廣告
項(xiàng)目背景:在第三方供應(yīng)商后臺新增“我要推廣”入口,撮合第三方供應(yīng)商使用商業(yè)廣告投放,提升廣告主成單效率,并提升廣告收入
在整個設(shè)計(jì)評審階段,做了如下的一些工作:
1、熟悉需求文檔,加深需求理解,挖掘需求的重難點(diǎn),并關(guān)注其對應(yīng)的設(shè)計(jì)方案;
2、提前看技術(shù)設(shè)計(jì)文檔,嘗試?yán)斫忾_發(fā)的設(shè)計(jì)思路,有疑問的地方提前問;
3、技術(shù)評審現(xiàn)場,檢查參與項(xiàng)目開發(fā)的前后端開發(fā)同學(xué)以及產(chǎn)品同學(xué)是否全數(shù)到場,以免評審過程中產(chǎn)生需求改動點(diǎn)而沒有同步到所有相關(guān)人。
4、檢查RD提供的流程圖是否正確,是否與需求一致;
5、由于項(xiàng)目涉及第三方,因此需要關(guān)注涉及第三方的系統(tǒng)交互圖,了解各方負(fù)責(zé)的功能范圍,評估第三方可能帶來的風(fēng)險(xiǎn);
6、關(guān)注需求中重點(diǎn)邏輯的實(shí)現(xiàn)方案,數(shù)據(jù)庫表設(shè)計(jì),評估設(shè)計(jì)方案對應(yīng)的測試范圍;
7、根據(jù)設(shè)計(jì)文檔,指定測試方案,包括數(shù)據(jù)準(zhǔn)備、接口測試、case設(shè)計(jì)、數(shù)據(jù)構(gòu)造工具準(zhǔn)備。
設(shè)計(jì)評審效果:
1、基于對需求理解和對RD提供的流程圖的檢查,發(fā)現(xiàn)了RD流程圖與需求不一致的情況,從源頭上預(yù)防了bug的產(chǎn)生。
2、建議選擇對于測試范圍影響更小的開發(fā)方案,縮小了測試范圍。其中涉及2個需求點(diǎn):
需求點(diǎn)之一:如何標(biāo)識第三方用戶,并記錄第三方用戶信息(電話、地址)?
可能方案1:原有商業(yè)用戶表中增加字段?
(1)劣勢1:若在原有商業(yè)用戶表中增加字段標(biāo)識第三方用戶,并且新增字段單獨(dú)存第三方用戶的電話,需要回歸原有的商業(yè)用戶創(chuàng)建功能;
(2)劣勢2:新交接的業(yè)務(wù),現(xiàn)接手的RD對原有業(yè)務(wù)不太了解,不太敢直接冒風(fēng)險(xiǎn)改動原有功能;
可能方案2:新增一個表單獨(dú)記錄第三方用戶及相關(guān)信息?
(1)優(yōu)勢:避免回歸商業(yè)用戶的新增功能;
需求點(diǎn)之二:如何讓第三方用戶繞開商業(yè)用戶身份和資質(zhì)校驗(yàn),繼而使用商業(yè)的各種功能?
可能方案1:在每處校驗(yàn)時(shí),判斷第三方用戶并作特殊處理。
(1)劣勢1:商業(yè)用戶身份和資質(zhì)校驗(yàn),是商業(yè)營銷管理各種功能使用的前提,校驗(yàn)的地方太多涉及多個集群,梳理起來容易遺漏,且回歸范圍廣。
(2)劣勢2:后續(xù)新增商業(yè)功能,都需要識別是否是第三方用戶并作特殊處理,兼容成本大。
可能方案2:新登陸接口插入數(shù)據(jù)以確保后續(xù)流程能通過校驗(yàn)。
(1)優(yōu)勢:新接口中加功能,只需保證本次項(xiàng)目涉及的流程功能,影響范圍小。
如圖所示:

結(jié)論:從QA的角度,基于對影響范圍的評估,都推薦采用了第二種方案
3、基于RD設(shè)計(jì)文檔中提供的系統(tǒng)間的交互圖,明確了涉及第三方的功能分工。
以下是交互圖:

由此可知,第三方供應(yīng)商側(cè)只需要保證用戶能夠正確跳轉(zhuǎn)到商業(yè)側(cè),以及所帶的用戶信息的正確性,后續(xù)流程則是有商業(yè)側(cè)來保證。由交互圖也能得知對方的工作量在整個項(xiàng)目中的占比,能大致評估出第三方可能帶來的風(fēng)險(xiǎn)大小。
4、基于第2點(diǎn)中需求點(diǎn)之二的方案2,可得知從第三方供應(yīng)商側(cè)登陸商業(yè)側(cè)的接口所做的哪些額外處理,這是僅僅從需求文檔中無法獲知的。設(shè)計(jì)評審后,明確了每個接口做了哪些處理,以此為依據(jù),進(jìn)行了測試方案制定,包括:
(1)數(shù)據(jù)如何準(zhǔn)備;
(2)接口測試重點(diǎn)測試入?yún)⑹怯傻谌教峁┑?個接口,尤其關(guān)注入?yún)榭盏那闆r;
(3)case設(shè)計(jì);
(4)?數(shù)據(jù)構(gòu)造工具準(zhǔn)備等。
項(xiàng)目整體效果:各方職責(zé)清晰、測試影響范圍縮小(case少)、項(xiàng)目質(zhì)量高(測試期只有1個前端bug,無線上bug)。
寫在最后?
每個項(xiàng)目有其不一樣的特點(diǎn),本文列出了大而全的檢查點(diǎn),可以幫助提醒我們在設(shè)計(jì)評審環(huán)節(jié)可以從哪些方向上去考慮。
通過參與設(shè)計(jì)評審,QA能夠深入理解技術(shù)的實(shí)現(xiàn)方案,有助于制定合理的測試方案。同時(shí),通過不斷的實(shí)踐,QA也能在設(shè)計(jì)評審時(shí),提出一些合理的建議,幫助項(xiàng)目更高效、更高質(zhì)的完成,提升QA在整個項(xiàng)目中的影響力。
