做軟體測試需要懂程式碼嗎?

陈哥聊测试發表於2024-06-03

隨著大資料、機器學習時代的到來,不少人有了“測試不需要懂程式碼,那我就試試”的想法。這就引發了一系列疑問:不懂程式碼可以做測試嗎?測試人員到底需不需要懂程式碼?測試人員需要寫程式碼嗎?

其實,在軟體測試初級階段,測試人員確實不需要懂程式碼。但如果想要追求月薪20k、30k,介面、自動化等是避免不了的,這就必然涉及到了程式碼層面。

正如《mob程式設計指南》的作者Llewellyn Falco回應“QA工程師應該學習編碼嗎”這個問題時,曾說:“每個人都應該知道如何編寫程式碼,這就像閱讀和寫作。你可能沒有寫過書,但你應該知道如何閱讀和寫作。”

一、軟體測試的Q&A

作為測試人員,我們可以一起考慮幾個問題。

問題一:哪些測試需要懂程式碼?

軟體測試人員會使用各種測試技術來執行此操作,包括手動測試、自動測試等。不同的測試策略要求不同的測試技術,我列舉了一部分:

問題二:軟體測試的門檻高嗎?

近年來,經濟下行加速功能測試轉向自動化測試,軟體測試的求職門檻確確實在提高。

研發流行敏捷開發,運維部署逐漸自動化,版本高速迭代。這意味著過去“點點點”的手動測試已經跟不上網際網路行業產品的更新迭代速度,已經逐漸被自動化測試技術接管。原本手動測試需要10個人完成的工作量,現在的自動化測試團隊只需要不到5個人就能完成。

當前各企業正在想盡辦法建設自動化測試體系,實現手動測試到自動化測試的升級,透過提高測試流程的有效性和效率來消除測試瓶頸。因此,企業對測試人員的要求已經基本上過渡到了自動化測試要求。除了要懂功能測試,還需要懂程式碼、介面自動化、UI自動化等。

在求職門檻大大提高的情況下,測試人員僅憑藉手動測試的技能,很難找到工作,也很難晉升。

問題三:不懂程式碼在實際工作中會出問題嗎?

有一定的程式碼知識可以幫助測試人員更好地理解軟體的內部邏輯,進而設計更有效的測試用例,但並非所有測試工作都需要深入理解程式碼。如果測試人員看不懂程式碼,實際工作會出現哪些問題?

(1)當測試人員無法準確解析程式碼時,報告的Bug描述可能含糊不清,導致開發人員難以復現問題或誤解問題的嚴重性。即便是較為表面的錯誤,也可能被測試人員誤判為關鍵缺陷。

(2)如果測試人員對開發知識掌握不足,可能會將有爭議的問題錯誤地標記為Bug,或者提出的改進建議難以實施,且無法提供切實可行的解決方案。、

(3)在發現Bug時,若測試人員無法精確定位其根源,可能會導致與開發團隊溝通成本增加。頻繁的交流不僅浪費時間,過多的溝通也可能引發其他問題。因此,測試人員對開發知識的掌握顯得尤為重要。

(4)缺乏開發知識可能會使測試人員在討論Bug時處於劣勢,面對開發人員的解釋,如果測試人員不瞭解背後的技術細節,可能無法有效回應。

(5)在自動化測試、效能測試和專案管理等領域,對軟體開發有深入的理解是必不可少的。設計高效的自動化測試框架、效能測試案例,或管理開發團隊,都需要對軟體開發有一定的掌握。

問題四:軟體測試人員需要掌握什麼技能?

除了溝通技巧、分析思維、團隊協作等必備的軟技能,軟體測試人員又需要具備哪些硬技能:

(1)全面瞭解軟體開發生命週期 (SDLC)
隨著軟體專案的複雜性不斷增加,測試人員必須精通從規劃和設計到部署和維護的每個階段。這些知識使我們能夠預測潛在問題,設計有效的測試策略,並確保測試活動與總體專案目標保持一致。

(2)熟練掌握自動化測試工具
自動化繼續改變測試領域的遊戲規則,熟練掌握自動化測試工具是我們測試人員的一項關鍵技能。掌握 Selenium、Appium、Jenkins、禪道ZTF等工具可讓測試人員自動執行重複任務、增加測試覆蓋率並提高效率。隨著越來越多的組織採用 DevOps 和持續整合/持續部署 (CI/CD) 實踐,能夠將自動化測試整合到 CI/CD 管道中的測試人員將在加速產品釋出並保持質量標準方面發揮重要作用。

(3)測試設計和執行方面的專業知識
測試設計和執行方面的專業知識仍然是軟體測試人員的一項基本技能。在 2024 年,制定全面的測試計劃、編寫清晰簡潔的測試用例並有效執行測試的能力比以往任何時候都更加重要。測試人員必須確保他們的測試是穩健的、可擴充套件的,並且能夠有效地識別缺陷。那些擅長設計和執行模擬真實場景的測試的人將為開發可靠且使用者友好的軟體產品做出重大貢獻。

(4)程式設計和指令碼語言知識

熟悉Java、Python、PHP等語言使測試人員能夠編寫自動化測試、瞭解程式碼庫並與開發人員更有效地協作。隨著開發人員和測試人員之間的界限越來越模糊,具有程式設計技能的人可以參與單元測試、審查程式碼以查詢潛在問題,甚至修復錯誤,從而提高軟體的整體質量。

二、軟體測試人員懂程式碼的好處

1. 視覺化和測試

測試人員可以更好地視覺化和理解應用程式背後的程式碼,從而幫助測試人員識別更多有用的測試用例。例如,軟體測試人員知道某個頁面元素正在使用 if/then 邏輯,他們能夠確保測試該演算法的兩條路徑。對於迴圈也是如此,眾所周知,迴圈的終點通常是發生錯誤的地方,因此透過了解迴圈構造的邏輯,軟體測試人員可以更準確地檢視邊界條件。

如今,隨著越來越多的開發團隊執行單元測試,白盒測試的實踐變得越來越不重要;但測試人員仍然可以透過對程式碼的理解來了解應用程式的更細微的方面,並建立測試來提高測試覆蓋率。

2. 自動化測試

懂程式碼的測試人員更容易建立自動化測試指令碼。這是持續整合 (CI) 的必需品,甚至 UI、API 和效能測試都可以自動化。這有助於加快測試周期,並使測試人員能夠專注於探索性測試以發現新問題。

使用 Selenium IDE等軟體測試工具可以輕鬆執行自動化測試。這類軟體測試工具所提供的GUI錄製回放功能,能夠達到提高測試用例複用率的目的。但這些好處是有限,它們無法自動執行某些測試的步驟,並且在應用程式更新時很容易崩潰,如Selenium預設不提供測試報告和錯誤恢復機制。

3. 與開發人員更好地溝通

懂程式碼的測試人員能夠與開發人員更好地溝通,因為他們能夠理解開發人員的思維方式和程式碼邏輯。這有助於他們更精確地報告Bug,深入討論問題的解決方案,並減少誤解和溝通障礙。同時,懂程式碼的測試人員能夠更快地理解新功能或變更,設計出有效的測試用例,提高測試效率。

三、軟體測試人員共勉

自動化測試是趨勢,只會做手動測試的人未來會逐漸失去競爭力。測試專家陳霽在《測試人員路在何方》中也提到了“做測試必須會寫程式碼。如果不懂程式設計,從事測試工作是非常吃虧的。”具體內容,我就不多講了,大家有興趣可以看一下這個影片。

最後,我們測試人員共勉:
大多數人都會覺得你那麼努力或做這些稀奇古怪的事情幹什麼,他們都覺得你像個“異類”。請耐住寂寞往前走,然後你會在路上碰到跟你志同道合的這些“異類”,當你們在一起一握手,你會發覺,原來我終於走到了別人走不到的路。

*參考資料:Brian Borg: Should QA Testers Be Able to Read Code?

相關文章