推薦必讀:測試人員如何快速熟悉新業(yè)務(wù)?
以下文章來源于畢小煩 ,作者陳愛嬌
身處職場,學(xué)習(xí)新業(yè)務(wù)在所難免,尤其是測試人員,具備良好的業(yè)務(wù)知識是我們做好質(zhì)量保障的前提,不管是職場「新人」還是「老人」,快速熟悉業(yè)務(wù)的能力都是不可或缺的,這是我們安身立命的根本。
但,這樣的能力并不是很顯性,筆者有著十幾年的測試經(jīng)驗,負(fù)責(zé)過 C 端、B 端和 G 端的業(yè)務(wù),本文嘗試梳理出一些快速熟悉新業(yè)務(wù)的方法,希望能夠帶給大家一些啟發(fā)。
有兩種學(xué)習(xí)模式
在學(xué)習(xí)新業(yè)務(wù)時,通常有兩種模式:
授課式: 老師/師兄/師姐帶著你學(xué)習(xí),言傳身教劃重點,苦口婆心加考試;
自學(xué)式:自己看一堆的學(xué)習(xí)資料、測試沉淀、業(yè)務(wù)文檔,有問題再找人問;
授課式是被別人帶著走,自學(xué)式是按自己的方式走。從人性的角度來講,顯然有人教更好,也更快,直接告知重點,躲避深坑,有老師傅帶著一路過關(guān)斬將,打怪升級,?!
可事實上,專家沒那么多,也沒那么閑。因此,大部分情況下,我們都處于第二種:自學(xué)式, 師傅領(lǐng)進(jìn)門,修行在個人,按自己的方式學(xué)習(xí),方法就尤為重要了。
要學(xué)會打怪升級
當(dāng)個人修行時,學(xué)習(xí)跟打怪升級似有異曲同工之處。
不停重復(fù)打怪的過程,就是積累經(jīng)驗的過程。業(yè)務(wù)中的新怪層出不窮,都帶有新的技能,那么,要想打敗它,就得提升自己的技能。不同級別,你面臨的怪是不同的,晉級之后,再遇新怪,我們總要問一下:這是個什么?我要怎么打敗它?打敗它之后,我會獲得什么技能?
這很像保安師傅的哲學(xué)三問:你是誰?從哪兒來?到哪去?
如果是唐僧,他會這樣回答:貧僧法號三藏,自東土大唐而來。要往西天取經(jīng)去。
如果是我們的「新業(yè)務(wù)」,應(yīng)該思考的更多一些:
你是誰?
新業(yè)務(wù)是什么?在公司那么多產(chǎn)品里面處于一個什么樣的位置?前臺?中臺?后臺?
它依賴誰?誰依賴它?它面向的用戶是 B 端?C 端?還是 G 端?
它的產(chǎn)品形態(tài)是 APP?小程序?網(wǎng)站?H5?PC客戶端?公眾號?還是接口?
從哪兒來?
為什么會有這項新業(yè)務(wù)?它的定位是什么?
價值是什么?衍變路徑是什么?
到哪里去?
新業(yè)務(wù)的目標(biāo)是什么?
發(fā)展路徑是什么?
階段性目標(biāo)是什么?
所以,學(xué)習(xí)新業(yè)務(wù)就像打怪升級,搞清楚這三個業(yè)務(wù)背景問題,會讓你接下來進(jìn)入業(yè)務(wù)細(xì)節(jié)更加胸有成竹。
熟悉業(yè)務(wù)三部曲
1. 看懂業(yè)務(wù):由表及里
① 看功能:從直觀的角度來看,新業(yè)務(wù)展現(xiàn)的產(chǎn)品功能和業(yè)務(wù)規(guī)則是什么?
比如電商大促,各種優(yōu)惠商品直接打折降價,再疊加平臺的滿減活動,再疊加 88 會員的折扣等等,你首先得理解這些產(chǎn)品功能和業(yè)務(wù)規(guī)則。
② 看結(jié)構(gòu):從業(yè)務(wù)的結(jié)構(gòu)來看,新業(yè)務(wù)在公司的整個業(yè)務(wù)板塊中處于哪一層,它依賴的上下游業(yè)務(wù)是什么?
③ 看細(xì)節(jié):從產(chǎn)品的細(xì)節(jié)來看,每個操作步驟都會包含很多的系統(tǒng)交互。
比如上面提到的優(yōu)惠業(yè)務(wù),包括了:單品優(yōu)惠、商家優(yōu)惠、平臺優(yōu)惠。那么大促期間,這些其實是混合在使用的,每一種優(yōu)惠都會有不同的應(yīng)用場景;那么,每一種優(yōu)惠它的操作入口, 它涉及到的交互系統(tǒng)有哪些, 他們通過什么接口進(jìn)行交互等等,都是要去熟悉和學(xué)習(xí)的。
④ 從用戶角度看:不同的用戶對產(chǎn)品的功能會有不一樣的訴求,也決定了我們在進(jìn)行業(yè)務(wù)測試的時候,除了業(yè)務(wù)的準(zhǔn)確性外, 測試重點也不同。
比如電商大促, 對于招商系統(tǒng)而言,它是 To B 的業(yè)務(wù),主要的訴求在于:系統(tǒng)穩(wěn)定、便于操作,用戶量可能在百萬級別, 用戶的主要使用場景是通過 Web 端來操作;
對于交易系統(tǒng)而言,它是 To C 的業(yè)務(wù), 主要的訴求在于:系統(tǒng)穩(wěn)定、實時性要求高(各種優(yōu)惠及時更新、庫存更新等)、并發(fā)量高,用戶量在千萬及億級別,用戶的主要使用設(shè)備是通過手機(jī) APP 端來操作;
當(dāng)了解我們的用戶人群后,在做基本的業(yè)務(wù)功能驗證后,還需要驗證非功能性的需求,比如高并發(fā)如何保證系統(tǒng)的可靠性, 比如大促期間的實時性(庫存、優(yōu)惠等),如何來保證準(zhǔn)確性?不同的客戶端,需要做哪些兼容性驗證?
⑤ 從業(yè)務(wù)價值看:談業(yè)務(wù)價值,其實就是談我們這塊業(yè)務(wù)存在的目的,它能帶來什么價值,它的目標(biāo)是什么?是補(bǔ)充公司的業(yè)務(wù)空白,擴(kuò)大商業(yè)版圖,還是為公司增加營收。
當(dāng)一個產(chǎn)品的目的是為了快速占有市場, 那么,我們就需要快速迭代, 測試的側(cè)重點,就會在效率上,如何在保證質(zhì)量的基礎(chǔ)上,快速發(fā)版, 可能會忽略一些并發(fā)性,或者是用戶體驗的功能;如果是一個穩(wěn)定的業(yè)務(wù),比如電商大促,這么幾年走下來,它就是個穩(wěn)定的業(yè)務(wù),那如何提升用戶的體驗,保證實時性,就會成為我們的測試重點;
⑥ 從盈利模式看:在資本市場中,不盈利的產(chǎn)品很容易就被淘汰掉。
我們要熟悉的新業(yè)務(wù)的盈利模式是什么?是賣產(chǎn)品?賣服務(wù)?還是賣廣告?于測試人員而言, 根據(jù)不同的盈利模式來進(jìn)一步了解產(chǎn)品的價值,反向驅(qū)動我們?nèi)ニ伎紭I(yè)務(wù)的測試重點,這是一件很有價值的事情;
2. 看透業(yè)務(wù):系統(tǒng)剖析
看懂業(yè)務(wù)之后,我們需要看透業(yè)務(wù),通過解剖系統(tǒng)來加深對系統(tǒng)的理解。
在這個過程中, 我們需要了解到:
所負(fù)責(zé)業(yè)務(wù)的系統(tǒng)交互
系統(tǒng)如何和上下游系統(tǒng)交互,這種更直白的是,看一下時序圖,清晰的了解各個系統(tǒng)之間是通過什么接口進(jìn)行交互的,交互的出入?yún)⑹鞘裁矗繋е鴺I(yè)務(wù)驗證的目的來了解系統(tǒng);
系統(tǒng)內(nèi)部各個模塊的劃分,哪些是公共模塊,哪些是業(yè)務(wù)實現(xiàn)層?
從上面?zhèn)z張圖都可以看出應(yīng)用中各個模塊所承擔(dān)的功能,以及一些公共的服務(wù)及流程,我們所負(fù)責(zé)的業(yè)務(wù)流程是不是也是這么走的,一旦改動到公共模塊或者公共服務(wù)的話,我們除了驗證當(dāng)前的業(yè)務(wù)流程外,還需要驗證哪些關(guān)聯(lián)流程;
數(shù)據(jù)流向怎么走?數(shù)據(jù)如何變更?
每一條數(shù)據(jù)都有它存在的意義,每一個字段都有它的特定含義,不同的表代表不同的含義,不同的字段也有不同的業(yè)務(wù)邏輯。我們需要將業(yè)務(wù)流和背后的數(shù)據(jù)流關(guān)聯(lián)起來,以便更好的理解每一次的數(shù)據(jù)變更,更好的為后續(xù)做功能測試打下基礎(chǔ),知道哪些是關(guān)鍵驗證字段, 避免功能場景遺漏。
如果很有幸,你一進(jìn)來,跟進(jìn)的就是一個純新的系統(tǒng),從需求到方案設(shè)計到系統(tǒng)上線的話,那你真的很幸運(yùn),可以從頭了解這個系統(tǒng)的搭建,按上面的方式來了解你即將負(fù)責(zé)的系統(tǒng)及業(yè)務(wù);
假如你負(fù)責(zé)的是一個老的業(yè)務(wù)系統(tǒng),要在老的系統(tǒng)上做迭代,那么, 你仍然可以遵循上面的 3 個方面來梳理你對業(yè)務(wù)的理解。同時,找歷史資料,找資深的同學(xué)來了解系統(tǒng)架構(gòu)、系統(tǒng)模塊功能、數(shù)據(jù)流等, 請多問、問、問!
這個階段,還有一個問題沒講:問題排查的方案及手段,這些內(nèi)容接下來我們會講到。
3. 看好業(yè)務(wù):動手實踐
在看懂業(yè)務(wù)、看透業(yè)務(wù)之后,我們就需要履行本職:看(kān)好業(yè)務(wù)了,假設(shè)我們要獨立測試這塊業(yè)務(wù),要怎么測試,怎么設(shè)計測試用例,用什么方式來進(jìn)行測試,如何驗證功能的準(zhǔn)確性,遇到錯誤,如何排查呢?
基于上述問題,我們需要做的事情:
測試用例設(shè)計:基于產(chǎn)品的 PRD,研發(fā)的設(shè)計方案及我們自己對系統(tǒng)的了解、時序圖等進(jìn)行用例設(shè)計,考慮基本的:正常流、分支流、異常流三類。對于本次的改動范圍要評估是否需要做老功能的回歸, 對于一些新增的開關(guān)、或緩存等,要做對應(yīng)的專項驗證;
測試方法:手工驗證 or 自動化驗證?
數(shù)據(jù)準(zhǔn)備:是否已有現(xiàn)成的工具或腳本可以快速生成測試數(shù)據(jù)?如果沒有的話,怎么造測試數(shù)據(jù)?(造數(shù)據(jù)的過程?)
結(jié)果驗證:業(yè)務(wù)展示是否符合預(yù)期,DB 中的數(shù)據(jù)是否符合預(yù)期?
是否需要做非功能性驗證:兼容性、安全性、性能壓測等;
問題排查:遇到問題,如何排查?(定位根因,積累經(jīng)驗的最快速的方法)
系統(tǒng)現(xiàn)象:頁面報錯、服務(wù)調(diào)用失敗等這一類都是直觀的展示,還有一類是流程鏈路比較長,看起來頁面都是正常的, 但是 DB 數(shù)據(jù)不符合預(yù)期,會導(dǎo)致下一個環(huán)節(jié)報錯的場景;
日志排查:根據(jù)業(yè)務(wù)操作,看下后臺日志訪問,有無錯誤日志打印,日志告訴你錯在哪一行,根據(jù)日志的錯誤提示,去對應(yīng)的分支代碼中查看對應(yīng)行的代碼;
數(shù)據(jù)排查: 根據(jù)數(shù)據(jù)反查, 根據(jù)你對系統(tǒng)的了解, 梳理哪里會涉及到這塊 DB 數(shù)據(jù)的變更,反查回去看看具體的代碼邏輯,看具體走到哪個分支里去,再參照對應(yīng)的系統(tǒng)日志,跟蹤定位到具體的出錯的代碼行;
翻看代碼:不管是從日志排查還是根據(jù)數(shù)據(jù)排查, 都需要去翻代碼看看, 有時候,這一行報錯,不是因為這一行有錯,而是中間過程中,由于入?yún)栴},導(dǎo)致走到其他分支了,這種時候就需要深究下去,到底是從哪里開始出錯。
于測試人員而言,不一定要完整的定位出根因,但是希望通過這樣的排查過程,對系統(tǒng)的實現(xiàn)有所了解,在后續(xù)的業(yè)務(wù)改動中,也能夠了解到改動影響的范圍,有自己的判斷,而不是等待他人的輸入。
當(dāng)我們能完整的走過上面的三步,再回過頭來看業(yè)務(wù),可能會有一種恍然大悟的感覺,會有一種“原來如此”的感悟。但我們可能仍然只是處于剛?cè)腴T的階段,后續(xù)需要通過不斷的重復(fù)、加深記憶的過程來不斷的完善我們對業(yè)務(wù)的了解。
我們的腦海中對業(yè)務(wù)的構(gòu)建,是不斷具象的過程,其實,也可以同步思考下:我們原來的測試模式有沒有可以優(yōu)化的地方?我們有哪些步驟是可以通過工具化的手段來實現(xiàn)的?假設(shè)要你來做一個提效的工具或者要提升你負(fù)責(zé)模塊的項目質(zhì)量, 你會從哪些方面入手,你需要做哪些的知識儲備。。。等等,通過不斷深入業(yè)務(wù),深入系統(tǒng),深入思考,才能更好的激發(fā)創(chuàng)意,為工作帶來持續(xù)的正反饋!
總結(jié)
新業(yè)務(wù)的學(xué)習(xí),是一個不斷積累的過程,只有在經(jīng)過不停地學(xué)習(xí)、實踐、問題排查,這樣的重復(fù)過程后,才會加深我們對業(yè)務(wù)的理解。隨著業(yè)務(wù)知識、系統(tǒng)架構(gòu)等方面的提升,也會反哺我們對業(yè)務(wù)的了解,從而達(dá)到陌生到熟悉的變化。
最后,再送大家一句話:好記性不如爛筆頭,隨時記錄,思考,梳理,重構(gòu),會有驚喜噢!
作者:陳愛嬌
歡迎關(guān)注微信公眾號 :Python測試社區(qū)