身為小主管,每次在面試時,候選人總會表示想學習自動測試。原因無他:
因此對一般 QA 而言,自動測試是個目標,也是希望。
我其實是底層驅動程式開發出身,後來發現自己對整天沉浸在程式碼世界缺乏熱忱,所以職業生涯後半段改走技術支援路線。對曾經做過開發的我來說,自動測試簡直小菜一碟。曾有幸在類似 Cisco 的公司歷練過,了解正規測試能達到的水平及全自動化帶來的好處。因此,儘管有機會挑戰過產品及專案經理等職位,最終還是選擇在自動測試領域繼續深耕。
隨著電腦科學不斷演進,自動測試也經歷了幾個世代的變化。
第一代是純命令列形式,代表工具有 Tcl/tk 或 Pytest 之類的。操作上對於技術要求較多,需要懂 CLI 指令
以下是取自 pytest 官網的範例結果
$ pytest
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-8.x.y, pluggy-1.x.y
rootdir: /home/sweet/project
collected 1 item
test_sample.py F [100%]
================================= FAILURES =================================
_______________________________ test_answer ________________________________
def test_answer():
> assert inc(3) == 5
E assert 4 == 5
E + where 4 = inc(3)
test_sample.py:6: AssertionError
========================= short test summary info ==========================
FAILED test_sample.py::test_answer - assert 4 == 5
============================ 1 failed in 0.12s =============================
第二代則整合了圖形界面和自動錄製功能,以 Selenium, Appium, Playwright 等 UI 測試工具為代表,這也符合網頁蓬勃發展的歷史背景。
例如,Selenium Chrome Plugin
更上層的挑戰是如何管理眾多自動測試腳本和執行結果。這方面有許多解決方案,Robot Framework 就是其中之一。對於技術水準高的公司,若所有人都會寫程式,直接用 Python 編寫即可。但對於混合型團隊,例如部分手動、部分自動測試的情況,Robot Framework 較為適合,因為它可用表格形式撰寫測試項目,將複雜的實現邏輯隱藏在 Python Library 中,這點後面會深入說明。
另外談談協議這個領域。在遊戲業、即時通訊或交易所應用中,協議扮演極為重要的角色。與一般 Web 2.0 網頁純粹 RestfulAPI 形式不同,它需要更高頻且快速的互動。因此,通常採用 WebSockets 這類持久性連接通道作為基礎通訊協議。由於這是較小眾的領域,網路上相關教學資源相對較少。所以這次特地選擇這個主題,一來看到市場需求,二來符合我近期的工作內容。
還有些更個人化的原因,我希望藉此整理近期的工作心得,作為自己的記錄。另一方面,也希望我的分享能給大家一些啟發。過去二十幾年的職涯中,我大多在小公司默默耕耘,因此在公開場合留下的記錄不多,除了之前在澳洲打工度假的那些流水帳外。所以想藉此機會回顧自己的工作歷程,整合經驗,算是對自己的一次盤點。
也是第一次挑戰鐵人賽項目,希望能成功完賽,作為自己五十歲的禮物。