純技術角度看自動化測試的迷思

2021-08-22 10:51:51 字數 2050 閱讀 3824

談到自動化測試方面的誤區,不少文章傾向於從人性、管理、職業規劃等方面進行**。我這次專門從計畫、設計、實現、維護等技術角度總結一下。

很多人以為是像工業革命一樣消滅手工勞動者,在這裡等於手工測試人員。但是測試存在乙個目前來看還算正確的、其他行業不多見的悖論:任何時候,你都不能準 確知道還有多少bug,就像警察不能準確知道還有多少賊一樣。所以自動化的最終目標——目前來說——是解放盡量多的人手去進行更多的測試,除非有一種手段 能像《少數派報告》裡面的預言少女一樣預知所有的bug。因為永遠有bug,有未知的bug,所以目前不存在能覆蓋所有bug的手段,這意味著總需要人的 參與。現代化手段只是減少了而不是杜絕對人員的需求。所以如果認為自動化工作一做完就沒活幹,那你就大錯特錯了。正認為這些人閒下來,他們有空發現更難發 現的bug。這本來沒什麼大不了的,但是擱在計畫階段如果過分樂觀,牛皮吹得太大的話,到後面就不容易圓回去了。因為按上面分析,自動化測試總有些地方是 力有不逮的,如果這些地方沒有安排好人手時間,只要在這些地方出大問題,那你就玩完了。

這個問題每次複審測試計畫的時候我都會問,針對每乙個提出要實施自動化的地方。每個人、每個工具談論自動化的時候都在說如何真實模擬使用者使用產品的情況, 這很好,絕對需要關心。不過我得問一句:測試的最後結果是什麼?如果你回答「各種使用產品的場景已經執行過「就嘎然而止的話,你就漏掉了一大塊:最起碼還 得加上「產品能工作/不能工作「!所以模擬使用者使用產品的各種情況,只是解決上述問題的第一部分;如何得出測試通過/不通過的最終結論,才是解決問題第二 部分的基礎部分,還有詳細缺陷描述、上下文資料收集等沒做到呢!

所以讓機器像人一樣使用產品,並沒有解決全部問題,剩下的事情還有多少,這是需要視情況而定的。如果只是解決了第乙個問題就認為萬事大吉,那簡直就是在賭運氣——有些時候自動驗證是小菜一碟,但很多時候不是。

令事情惡化的是,自動驗證了產品的一些指標,並不能反映產品的真實質量。有時驗證過的指標通過了,其實其他地方暴露了問題卻沒有檢查:比如說介面說沒有查 詢結果,這是期望的,實際上查詢請求根本沒有發過去,不去檢查底下做了什麼的話是發現不了這種bug的;有時驗證過的指標不通過,其實只是個小問題,大問 題需要通過別的指標暴露出來的:比如說返回結果跟預期的不一致,實際上該有的都有,只是沒有排好順序而已,但是被標記成重要的測試用例沒有通過,把開發人員搞個雞飛狗跳。

這個話題深入下去,那就涉及到白箱測試策略、邏輯推演、嗅探和**注入以及布景偽造(environment mockup)等領域,但我想強調的只是,如果考慮自動化測試,自動驗證絕對不是可忽略的問題。

這個話題用於辯論賽是最好不過的,它符合「沒有定論「這個要求

「現有的工具多少經過測試,質量比自己做的更***「。先不在「是不是更***」這個話題上鑽牛角尖,我們先關注幾個問題:整個測試方案裡面哪些部分是關 鍵,質量不好會導致致命後果的?這些部分有專人保證質量嗎?出事的時候反應時間和修復效果如何?如果這些問題的答案是「我充分了解」或者「沒問題」,那我 也同意這個觀點(我敢打賭,回答「不清楚」或者「很不妙」的人已經跑去重新考慮整個測試方案了)。

「整合現有的工具省時間和人力」。類似的幾個問題:你能在這些工具中自由地除錯產品的缺陷嗎?整合方案能適應產品的演變嗎?幾個月後呢?幾個版本後呢?有需要變動的話代價多少?(嘩啦啦又跑掉一大隊人了)

「自力更生好控制」。投入產出比如何?引用的技術可靠嗎?如果你是開發者(之一),別人都覺得好控制嗎?誰來測試你的自力更生成果?

「有些事情必須得自力更生「。剪裁現有工具難度如何?時間允許嗎?

其實,縱觀所有提出的問題,我想強調的一點是,自動化測試的開發跟產品開發一樣,也是需要規劃和管理的,回答這些問題也是自動化測試專案管理的一部分。

折騰上個版本的自動化測試框架是新人最頭疼的事情。但了解了一些事情之後,原先的事情就沒那麼令人頭疼了。很多人忙於了解舊框架本身,其實世界一直在變,現在專案需要解決的問題才是關鍵。無論上個版本的東西多麼輝煌,只有它適合現在的專案(的部分)才是有價值的。所以關於舊的自動化測試技術,了解什麼能用得上,而不是了解它是什麼,才是需要做的事情。就好像汽車修理工知道怎樣拆舊車零件來修新車,並不需要他知道怎樣造一輛出來或者知道怎樣修好舊的那輛。

另乙個極端是「舊的不好浪費,繼續用「。「能用「這個結論是基於以前專案的情況的,現在能不能用,值不值得用得看現在的需求。人們要理髮就是個很好的例子:總不能因為頭髮長出來要耗養分不好浪費,就一輩子都不剪吧?

純技術角度看自動化測試的迷思

談到自動化測試方面的誤區,不少文章傾向於從人性 管理 職業規劃等方面進行 我這次專門從計畫 設計 實現 維護等技術角度總結一下。很多人以為是像工業革命一樣消滅手工勞動者,在這裡等於手工測試人員。但是測試存在乙個目前來看還算正確的 其他行業不多見的悖論 任何時候,你都不能準 確知道還有多少bug,就像...

python自動化測試,自動化基本技術原理

在之前的文章裡面提到過 做自動化的首要本領就是要會 透過現象看本質 落實到實際的it工作中就是 透過介面看資料。掌握上面的這樣的本領可不是容易的事情,必須要有紮實的計算機理論基礎,才能看到深層次的本質東西。資料庫應用系統 可能是最典型的網路應用程式了,關於它的軟體架構如下 一般在邏輯上分為4層 使用...

測試自動化 自動化測試的定義

相關術語 automated testing test tool,automated testing test suite,automated testing test script等.具體參見 http en.wikipedia.org wiki test automation 推薦書籍 1 軟體...