軟件測試中單純技術(shù)角度看自動(dòng)化測試誤區
以下是我個(gè)人對自動(dòng)化測試的一些經(jīng)驗和總結,僅供參考
自動(dòng)化的最終目標是什么?
很多人以為是像工業(yè)革命一樣消滅手工勞動(dòng)者,在這里等于手工測試人員。但是測試存在一個(gè)目前來(lái)看還算正確的、其他行業(yè)不多見(jiàn)的悖論:任何時(shí)候,你都不能準 確知道還有多少bug,就像警察不能準確知道還有多少賊一樣。所以自動(dòng)化的最終目標——目前來(lái)說(shuō)——是解放盡量多的人手去進(jìn)行更多的測試,除非有一種手段 能像《少數派報告》里面的預言少女一樣預知所有的bug。因為永遠有bug,有未知的bug,所以目前不存在能覆蓋所有bug的手段,這意味著(zhù)總需要人的 參與,F代化手段只是減少了而不是杜絕對人員的需求。所以如果認為自動(dòng)化工作一做完就沒(méi)活干,那你就大錯特錯了。正認為這些人閑下來(lái),他們有空發(fā)現更難發(fā) 現的bug。這本來(lái)沒(méi)什么大不了的,但是擱在計劃階段如果過(guò)分樂(lè )觀(guān),牛皮吹得太大的話(huà),到后面就不容易圓回去了。因為按上面分析,自動(dòng)化測試總有些地方是 力有不逮的,如果這些地方?jīng)]有安排好人手時(shí)間,只要在這些地方出大問(wèn)題,那你就玩完了。
能否/怎樣自動(dòng)驗證?
這個(gè)問(wèn)題每次復審測試計劃的時(shí)候我都會(huì )問(wèn),針對每一個(gè)提出要實(shí)施自動(dòng)化的地方。每個(gè)人、每個(gè)工具談?wù)撟詣?dòng)化的時(shí)候都在說(shuō)如何真實(shí)模擬用戶(hù)使用產(chǎn)品的情況, 這很好,絕對需要關(guān)心。不過(guò)我得問(wèn)一句:測試的最后結果是什么?如果你回答“各種使用產(chǎn)品的場(chǎng)景已經(jīng)運行過(guò)“就嘎然而止的話(huà),你就漏掉了一大塊:最起碼還 得加上“產(chǎn)品能工作/不能工作“!所以模擬用戶(hù)使用產(chǎn)品的各種情況,只是解決上述問(wèn)題的第一部分;如何得出測試通過(guò)/不通過(guò)的最終結論,才是解決問(wèn)題第二 部分的基礎部分,還有詳細缺陷描述、上下文數據收集等沒(méi)做到呢!
所以讓機器像人一樣使用產(chǎn)品,并沒(méi)有解決全部問(wèn)題,剩下的事情還有多少,這是需要視情況而定的。如果只是解決了第一個(gè)問(wèn)題就認為萬(wàn)事大吉,那簡(jiǎn)直就是在賭運氣——有些時(shí)候自動(dòng)驗證是小菜一碟,但很多時(shí)候不是。
令事情惡化的是,自動(dòng)驗證了產(chǎn)品的一些指標,并不能反映產(chǎn)品的真實(shí)質(zhì)量。有時(shí)驗證過(guò)的指標通過(guò)了,其實(shí)其他地方暴露了問(wèn)題卻沒(méi)有檢查:比如說(shuō)界面說(shuō)沒(méi)有查 詢(xún)結果,這是期望的,實(shí)際上查詢(xún)請求根本沒(méi)有發(fā)過(guò)去,不去檢查底下做了什么的話(huà)是發(fā)現不了這種bug的;有時(shí)驗證過(guò)的指標不通過(guò),其實(shí)只是個(gè)小問(wèn)題,大問(wèn) 題需要通過(guò)別的指標暴露出來(lái)的:比如說(shuō)返回結果跟預期的不一致,實(shí)際上該有的都有,只是沒(méi)有排好順序而已,但是被標記成重要的測試用例沒(méi)有通過(guò),把開(kāi)發(fā)人員搞個(gè)雞飛狗跳。
這個(gè)話(huà)題深入下去,那就涉及到白箱測試策略、邏輯推演、嗅探和代碼注入以及布景偽造(environment mockup)等領(lǐng)域,但我想強調的只是,如果考慮自動(dòng)化測試,自動(dòng)驗證絕對不是可忽略的問(wèn)題。
整合現有還是自力更生?
這個(gè)話(huà)題用于辯論賽是最好不過(guò)的,它符合“沒(méi)有定論“這個(gè)要求 。所以我只談一下使用每種手段時(shí)的一些不正確的假設。
“現有的工具多少經(jīng)過(guò)測試,質(zhì)量比自己做的更有保證“。先不在“是不是更有保證”這個(gè)話(huà)題上鉆牛角尖,我們先關(guān)注幾個(gè)問(wèn)題:整個(gè)測試方案里面哪些部分是關(guān) 鍵,質(zhì)量不好會(huì )導致致命后果的?這些部分有專(zhuān)人保證質(zhì)量嗎?出事的時(shí)候反應時(shí)間和修復效果如何?如果這些問(wèn)題的答案是“我充分了解”或者“沒(méi)問(wèn)題”,那我 也同意這個(gè)觀(guān)點(diǎn)(我敢打賭,回答“不清楚”或者“很不妙”的人已經(jīng)跑去重新考慮整個(gè)測試方案了)。
“整合現有的工具省時(shí)間和人力”。類(lèi)似的幾個(gè)問(wèn)題:你能在這些工具中自由地調試產(chǎn)品的缺陷嗎?整合方案能適應產(chǎn)品的演變嗎?幾個(gè)月后呢?幾個(gè)版本后呢?有需要變動(dòng)的話(huà)代價(jià)多少?(嘩啦啦又跑掉一大隊人了)
“自力更生好控制”。投入產(chǎn)出比如何?引用的技術(shù)可靠嗎?如果你是開(kāi)發(fā)者(之一),別人都覺(jué)得好控制嗎?誰(shuí)來(lái)測試你的自力更生成果?
“有些事情必須得自力更生“。剪裁現有工具難度如何?時(shí)間允許嗎?
其實(shí),縱觀(guān)所有提出的問(wèn)題,我想強調的一點(diǎn)是,自動(dòng)化測試的開(kāi)發(fā)跟產(chǎn)品開(kāi)發(fā)一樣,也是需要規劃和管理的,回答這些問(wèn)題也是自動(dòng)化測試項目管理的一部分。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/