在AI技術(shù)日益滲透到各行各業(yè)的今天,軟件測(cè)試領(lǐng)域也不例外。上回《別再做“點(diǎn)點(diǎn)點(diǎn)”測(cè)試了!AI時(shí)代測(cè)試工程師的隱形技能樹,你點(diǎn)亮了幾個(gè)?》提到測(cè)試人員也該學(xué)門語言、懂點(diǎn)代碼,這話題在圈里激起千層浪,反響強(qiáng)烈。
之所以用“爭(zhēng)議”形容,是因?yàn)椴簧傩』锇橛X得測(cè)試人員學(xué)代碼,要么難如登天,要么性價(jià)比太低。非計(jì)算機(jī)專業(yè)出身的,壓根沒接觸過;計(jì)算機(jī)專業(yè)但沒深造好的,基礎(chǔ)薄弱;從開發(fā)轉(zhuǎn)行測(cè)試的,隔行如隔山,時(shí)間一長(zhǎng)也都忘得差不多了。
今天,我就專門針對(duì)這個(gè)爭(zhēng)議點(diǎn),和大家好好聊聊。
![]()
先說說我自己的經(jīng)歷。我在測(cè)試領(lǐng)域摸爬滾打快10年了,是從硬件行業(yè)跨界過來的。剛?cè)胄袝r(shí),我對(duì)數(shù)據(jù)庫(kù)、Linux這些概念一竅不通,是個(gè)徹頭徹尾的小白。可如今,我不僅精通多個(gè)核心系統(tǒng)的業(yè)務(wù),還能熟練搞定數(shù)據(jù)庫(kù)調(diào)優(yōu)、服務(wù)器監(jiān)控這些技術(shù)活。
最開始,我做測(cè)試就是打開界面,這兒點(diǎn)點(diǎn),那兒戳戳,發(fā)現(xiàn)個(gè)問題就像撿到寶一樣興奮,趕緊記下BUG。后來,我學(xué)會(huì)了通過日志定位問題。再到現(xiàn)在,面對(duì)新業(yè)務(wù)或迭代更新,我的第一反應(yīng)是打開GIT,查看程序的變動(dòng),仔細(xì)review代碼的修改是否全面、能否真正解決問題。
很多時(shí)候,我會(huì)結(jié)合自己對(duì)系統(tǒng)整體代碼的理解,對(duì)比研發(fā)人員的修改思路和我的預(yù)期,分析哪種更優(yōu),是否存在被忽視的漏洞。如果review代碼時(shí)發(fā)現(xiàn)明顯問題,我會(huì)直接找開發(fā)討論;要是有疑問,就會(huì)在后續(xù)的功能測(cè)試中重點(diǎn)留意。
這種基于代碼review的測(cè)試方式,目前是我最常用的。當(dāng)然,我知道這未必適合所有人,但我堅(jiān)信,透過代碼洞察本質(zhì),開展更接近白盒測(cè)試的測(cè)試工作,絕對(duì)是未來測(cè)試行業(yè)的一大發(fā)展方向。尤其是在AI技術(shù)的輔助下,測(cè)試人員通過代碼分析可以更快速地識(shí)別潛在問題,利用機(jī)器學(xué)習(xí)模型預(yù)測(cè)軟件缺陷,甚至自動(dòng)化生成測(cè)試用例。
所以,我堅(jiān)定地站在正方陣營(yíng),認(rèn)為測(cè)試人員看懂代碼不僅重要,更是十分必要。接下來,我就從幾個(gè)關(guān)鍵點(diǎn),詳細(xì)說說看懂代碼的必要性。
一、生產(chǎn)問題復(fù)現(xiàn)
作為一名測(cè)試人員,經(jīng)常要和生產(chǎn)環(huán)境中的問題打交道,很多時(shí)候需要第一時(shí)間去排查。這些問題大多是通過客服或者運(yùn)維人員反饋過來的,但客戶提供的信息往往并不完整,這就給問題的重現(xiàn)帶來了很大的困難。比如:
有一天,客服團(tuán)隊(duì)向測(cè)試組反饋了一個(gè)客戶投訴:客戶在下單過程中,支付成功后發(fā)現(xiàn)除了有一筆付款成功的訂單外,還出現(xiàn)了一筆待支付的訂單。客戶擔(dān)心可能會(huì)被重復(fù)扣款,所以進(jìn)行了投訴。
針對(duì)這樣的投訴,測(cè)試人員首先嘗試在灰度環(huán)境進(jìn)行復(fù)現(xiàn)。下單并支付成功后,查看訂單情況,發(fā)現(xiàn)只有一筆付款成功的訂單,復(fù)現(xiàn)失敗。
由于客戶反饋的情況比較特殊,測(cè)試人員決定從代碼邏輯入手進(jìn)行分析。通過查看代碼,可以確定客戶調(diào)用的是購(gòu)買接口。順著代碼的執(zhí)行路徑進(jìn)行跟蹤,發(fā)現(xiàn)了一個(gè)潛在的問題:如果第一次扣款操作超時(shí)或者失敗,客戶換卡重新支付時(shí),由于冪等校驗(yàn)邏輯存在缺陷,系統(tǒng)可能會(huì)重新創(chuàng)建一筆訂單并發(fā)起支付。這樣一來,之前的訂單就會(huì)一直處于待支付狀態(tài)。
基于這一發(fā)現(xiàn),測(cè)試人員通過客服與客戶進(jìn)一步溝通確認(rèn),得知客戶第一次選擇的銀行卡余額不足,因此換卡支付時(shí)出現(xiàn)了上述問題。
由此可見,如果測(cè)試人員能夠讀懂代碼,就可以更快地定位問題,而不是像無頭蒼蠅一樣盲目地重復(fù)測(cè)試。即使你具備出色的探索式測(cè)試技能,在這種情況下也可能會(huì)浪費(fèi)大量的時(shí)間。在AI的幫助下,測(cè)試人員可以利用自然語言處理技術(shù)分析客戶反饋,快速定位問題代碼段,從而提高問題復(fù)現(xiàn)的效率。
二、提升測(cè)試效率
在測(cè)試工作中,最讓人頭疼的莫過于頻繁的返工。開發(fā)可能只修改了一小部分代碼,但對(duì)測(cè)試來說,每次回歸測(cè)試都意味著巨大的工作量。
如果能在開發(fā)提交修改后,第一時(shí)間通過代碼變化來評(píng)估修改的完整性,那效率提升可不是一星半點(diǎn)。這也是我經(jīng)常先讀代碼的原因之一。
除了review代碼,閱讀代碼還能幫助我們完善測(cè)試用例。很多時(shí)候,我們可能會(huì)因?yàn)椴皇煜ら_發(fā)的組件而忽略一些潛在的錯(cuò)誤。比如我們系統(tǒng)的設(shè)計(jì)思路是這樣的:如果支付調(diào)用銀行超時(shí),就會(huì)通過消息隊(duì)列異步發(fā)送異常信息,同時(shí)有監(jiān)聽程序?qū)崟r(shí)監(jiān)控隊(duì)列,一旦發(fā)現(xiàn)超時(shí)消息就重新調(diào)用,成功就繼續(xù)后續(xù)業(yè)務(wù),繼續(xù)超時(shí)就再推回隊(duì)列。
針對(duì)這種基于隊(duì)列設(shè)計(jì)的異常情況,我們可能會(huì)因?yàn)椴涣私舛┑粝嚓P(guān)的測(cè)試用例。這時(shí)候通過代碼review,就能更好地發(fā)現(xiàn)這些關(guān)鍵點(diǎn),從而完善用例中對(duì)消息異步推送的驗(yàn)證,更好地保證系統(tǒng)穩(wěn)定運(yùn)行。
更重要的是,在閱讀代碼的過程中,我們會(huì)帶著對(duì)代碼設(shè)計(jì)的不確定性和疑問,這使得我們?cè)跍y(cè)試時(shí)更有針對(duì)性。根據(jù)我個(gè)人的經(jīng)驗(yàn),這種方式在測(cè)試中發(fā)現(xiàn)問題的概率也會(huì)更高。
AI技術(shù),如代碼分析工具和機(jī)器學(xué)習(xí)模型,可以幫助測(cè)試人員更快速地識(shí)別代碼中的變化,預(yù)測(cè)可能引入的缺陷,從而提前準(zhǔn)備測(cè)試用例,進(jìn)一步提升測(cè)試效率。
![]()
三、定位問題
咱們之前就提到過,提BUG的最高境界不僅僅是發(fā)現(xiàn)問題和描述問題,更重要的是能夠定位問題并給出解決方案。
對(duì)于一些相對(duì)簡(jiǎn)單的問題,如果測(cè)試人員能夠讀懂代碼,完全可以借助日志中的報(bào)錯(cuò)信息,快速定位到代碼出錯(cuò)的具體位置,并進(jìn)行進(jìn)一步的分析,而不是僅僅把截圖和日志一股腦兒扔給開發(fā)人員。
在實(shí)際工作中,有時(shí)會(huì)遇到日志信息缺失的情況,這給問題定位帶來了不小的麻煩。在這種情況下,測(cè)試人員甚至需要自己動(dòng)手增加一些日志打印語句,以便更好地定位問題。
因此,掌握程序日志的寫法,對(duì)測(cè)試人員來說是非常有幫助的。AI技術(shù),如智能日志分析工具,可以幫助測(cè)試人員自動(dòng)分析日志信息,快速定位問題原因,減少手動(dòng)分析的時(shí)間。
四、后續(xù)進(jìn)階
過去那種測(cè)試人員無需編寫代碼的日子已經(jīng)一去不復(fù)返了。如今,無論是從事自動(dòng)化測(cè)試、測(cè)試開發(fā),還是接口測(cè)試等工作,都需要你親自動(dòng)手編寫大量代碼。
無論是開發(fā)小工具、構(gòu)建測(cè)試框架,還是搭建測(cè)試平臺(tái),都離不開扎實(shí)的代碼能力。從這個(gè)角度來看,學(xué)習(xí)代碼的重要性不言而喻。
關(guān)于如何學(xué)習(xí)代碼,我想多分享一些個(gè)人經(jīng)驗(yàn)。在之前的文章中,我已經(jīng)介紹了一些我認(rèn)為必須學(xué)習(xí)的內(nèi)容。而在真正開始開發(fā)實(shí)踐時(shí),我特別推薦“邊做邊學(xué)”的方式。
很多同學(xué)一聽說要學(xué)寫代碼,就立刻去購(gòu)買一堆諸如《從零開始學(xué)PYTHON》《20天JAVA速成》(書名純屬虛構(gòu),如有雷同純屬巧合)之類的書籍,然后從頭到尾認(rèn)真學(xué)習(xí),結(jié)果卻感覺什么都沒學(xué)會(huì)。
相反,在有一定基礎(chǔ)之后,通過實(shí)際項(xiàng)目來學(xué)習(xí)代碼,可以在實(shí)戰(zhàn)過程中更深刻地理解代碼知識(shí)。
這也是我總是強(qiáng)調(diào)大家不要只是看,一定要?jiǎng)邮秩?shí)戰(zhàn)的原因。這也是為什么我更愿意去做一些大型的實(shí)戰(zhàn)課程,因?yàn)檫@樣可以避免大家對(duì)知識(shí)的理解僅僅停留在表面。
![]()
五、提升業(yè)務(wù)能力
代碼能力對(duì)于提升業(yè)務(wù)理解至關(guān)重要。代碼是業(yè)務(wù)邏輯的基石,深入理解代碼層面的細(xì)節(jié),能讓你對(duì)業(yè)務(wù)的掌握達(dá)到更高的境界。
這樣,你就能在項(xiàng)目的需求階段就積極參與,準(zhǔn)確評(píng)估需求的可行性及其對(duì)現(xiàn)有系統(tǒng)的潛在影響。
以我們自己的項(xiàng)目為例,無論測(cè)試用例設(shè)計(jì)得多么全面,當(dāng)涉及到一些復(fù)雜的業(yè)務(wù)細(xì)節(jié)時(shí),最終還是需要通過代碼來梳理和驗(yàn)證。只有這樣,我們才能確保測(cè)試覆蓋到所有關(guān)鍵點(diǎn),從而更有效地保障系統(tǒng)的穩(wěn)定性和可靠性。
AI技術(shù)可以幫助測(cè)試人員更好地理解業(yè)務(wù)邏輯,通過自然語言處理技術(shù)分析需求文檔,自動(dòng)識(shí)別潛在的業(yè)務(wù)風(fēng)險(xiǎn),從而在需求階段就參與進(jìn)來,提升業(yè)務(wù)能力。
六、完善思維方式和提升個(gè)人形象
深入理解代碼,不僅能幫我們完善思維方式,還能讓與開發(fā)人員的溝通更加順暢。
當(dāng)我們關(guān)注代碼邏輯時(shí),我們能更好地理解開發(fā)的設(shè)計(jì)思路和架構(gòu)理念。這種深度的理解不僅能提升我們的技術(shù)水平,還能在開發(fā)團(tuán)隊(duì)中樹立我們的專業(yè)形象,讓我們?cè)陂_發(fā)人員眼中更具價(jià)值。
AI技術(shù)可以幫助測(cè)試人員更好地理解代碼邏輯,通過機(jī)器學(xué)習(xí)模型分析代碼結(jié)構(gòu),預(yù)測(cè)代碼行為,從而提升測(cè)試人員的思維方式。同時(shí),AI輔助的代碼分析工具可以提高測(cè)試人員在團(tuán)隊(duì)中的形象,展示其專業(yè)能力。
總結(jié)來說,我們認(rèn)為對(duì)于測(cè)試人員而言,具備讀代碼的能力是非常重要的!那么,你對(duì)此有何看法呢?你認(rèn)為測(cè)試人員是否有必要理解代碼?歡迎在評(píng)論區(qū)留言,分享你的觀點(diǎn)。在AI時(shí)代,測(cè)試人員掌握代碼能力不僅是提升個(gè)人技能的需要,更是適應(yīng)行業(yè)發(fā)展的必然趨勢(shì)。
??轉(zhuǎn)崗軟件I測(cè)試/野路子技能提升
??想了解更多漲薪技能提升方法
??可以到我的個(gè)人號(hào):atstudy-js
即可加入領(lǐng)取 ??????
轉(zhuǎn)行、入門、提升、需要的各種干貨資料
內(nèi)含AI測(cè)試、 車載測(cè)試、AI大模型開發(fā)、BI數(shù)據(jù)分析、銀行/游戲測(cè)試、AIGC
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.