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