**:
寫這篇日誌
其實是有感而發。剛剛偶然看到論壇上有位童鞋在詢問非計算機專業的做自動化的話難不難,看內容貌似這位童鞋應該才參加
測試
軟體測試
工程師的「三十六變」》所寫的,
自動化測試
工程師/架構師是我們測試人員的發展方向之一,要想向技術方面發展的話,可以說是大多數測試人員的理想目標。但被大多數人所忽視的一點現實是,很多人可能都沒有想過:以我現在對測試的理解,對測試技術的掌握,究竟達沒達到
學習
自動化測試的條件。這個條件是什麼呢?就是兩個字:思想。有很多羨慕做自動化的人,也有很多人尤其是不懂技術的管理者將自動化看做是軟體測試的銀彈,造成了自動化測試確實很火,好像大家都在盲目地追求自動化的現象。其實自動化測試沒有大家想得那麼神秘,說白了,它就是利用工具以及工具能理解的程式代替人去完成測試,去通過比較執行的結果來判斷測試是否通過。它的優勢很明顯,它不會煩,不會發脾氣,隨便多複雜的操作,反覆執行成千上萬遍,只要你的程式沒有問題,都會毫無怨言地為你執行完畢,而且比人快得多得多;但劣勢也非常明顯,最大的缺點就是工具不會思考,它不像人一樣會設計新事物,它也不會變通,它是由人設計出來的。所以在這裡,重要的不是學習哪種工具,用哪種工具,重要的是你的測試思想,你對被測系統的思考,這是任何工具都不能代替的。如果你對測試沒有系統的認識,你對被測系統沒有自己的思考,你無法應用你所掌握的測試知識制定更好的測試策略,那麼即使你對工具的使用滾瓜爛熟,對各種工具技巧倒背如流,那麼你仍然只是乙個會寫script的測試人員罷了,你跟只會跑case,點按鈕,按
手機
的人沒有什麼兩樣,因為你們都沒有自己的思想。你想想,沒有思想的人,能成長嗎?
那說了那麼多,究竟我所認為的比較理想的學習自動化的過程是怎樣的呢?還是拿我自己的實際經歷來舉例吧,本人從事軟體測試的這麼幾年時間以來,回想自己當初急切地想進步,想掌握「高階」技術(這裡指自動化)的
心情
,跟現在很多童鞋是一樣的,所以我非常能夠理解。我當初也迷茫過,也迫不及待地在網上到處搜尋什麼才是最熱門的自動化測試工具,然後找本程式設計的書,學啊學,練啊練,就盼著能早日修成正果。結果卻經常事與願違,不是專案用不上,就是因為換了公司,如從
web
轉到了嵌入式測試,我學的那些工具就只能是壓箱底了,從而不得不又重新學習另一種工具,另一種語言。而且由於缺少了對測試的理解和認識,就算我辛苦地學會了這些工具的使用,我也無法設計出優良的case,無法發揮出工具真正的力量。慢慢地我明白了,其實我需要學習的不是如何使用這些工具,我真正需要學習的是軟體測試的思想,包括軟體測試整個知識體系,比如測試的流程,不同的測試型別,它們的目的和用途,不同的測試設計方法,以及和開發模型的關係。如何報告缺陷,如何管理缺陷,如何對測試結果進行分析,同時還有一些程式設計方面的能力(這也是為自動化做鋪墊)。這些才是我做好軟體測試的基礎,它就是幫助你以後學習自動化,做好自動化所必需的第一步,也可以說是乙個precondition,只有這個precondition達到了,你進入下一步,學習自動化才是自然而然的事,不然的話,你就會發現你的自動化發展之路終有一天會block,因為你的前置條件沒有滿足,就跟跑case是一樣一樣的,呵呵。如果再通俗點用古代那些武林高手學武功來打個比喻的話,對軟體測試知識體系的理解,對測試基礎知識的掌握就相當於學習內功心法,而那些工具只相當於是倚天劍屠龍刀,內力不深厚,就算是絕世**在你手中都只能是一堆廢鐵而已,不能發揮任何作用。而現如今這個浮躁的社會,能夠潛心修煉內功心法的人少之又少,所以才空有諸多童鞋在剛做了一年黑盒手工測試就開始埋怨測試如何如何技術含量低,如何如何沒有發展前途的論調,實在是可悲。
如果你覺得自己對軟體測試已經有了足夠的了解,滿足了第一步的條件的話(這個標準請參照我上一段所說的我們真正需要學習的內容,這個時期通常按照經驗值的話短的需要兩年左右,多的三五年,看各人努力的水平),接下來第二步,就像小學公升初中一樣,我們就可以自然而然地進入自動化測試的學習了。這個時候你學習自動化你會覺得這個過程非常地自然,全然沒有直接進入軟體測試就開始學自動化測試的那種茫然感,為什麼這麼說呢?因為在你有了對軟體測試足夠的了解之後,你自然就會思考如何才能提高測試的效率,在你所在的專案裡面,哪些環節可以用自動化工具來代替人,哪些測試型別可以使用工具來自動化,而哪些地方又不適合用自動化。進而再思考該用什麼樣的工具,然後又該如何使用這些工具。你會發現一切都是理所應當去思考的事,因為你已經對測試有足夠的了解了,你站在了一定的高度去看整個過程,一目了然。再打個比喻,就好像你長大了,成熟了,就應該去找物件談戀愛一樣,你的心理和生理都需要戀愛了。對,就是這種感覺,你應該有這樣的感覺,呵呵。
再接下來又該做什麼呢?當你使用自動化工具到了一定的程度,你具備了一定的自動化測試經驗後,你就會深深地認同一句話:金無赤足,人無完人。對,當然工具也不例外。無論你選用什麼樣的工具,都會有它的不足。這個時候你就會再進一步地思考下面這些問題:這些工具的實現原理是什麼?它是怎麼
工作
的?它們應用了些什麼樣的框架?如果現成的工具不能滿足專案的測試需求的話,我能不能利用這些測試框架以及自身對測試的理解,對工具進行改進,甚至是自己去寫一些工具來滿足這些沒有被滿足的需求?在這個時候,這些問題會自然地冒到你的腦子中,如果你思考了,並且去研究了,並最終嘗試去實現了,不管最後有沒有成功,你都會發現你看待問題的層次又高了一些,不用任何人去指點你,你都能夠主動地思考工具的原理,並嘗試去改進它,這難道不值得高興嗎?所謂「熟能生巧」,這就是真正的「巧」所在了。如果能夠在這個層次去思考問題,去看待問題,我相信你再回頭看看你曾經在沒有專案需求的情況下糾結於去學習某種特定的工具是多麼地不成熟,可以想象你當時的茫然溢於言表。而如今,在你具備這些經驗和功力之後,就如經歷了大風和大浪,你會有一種「得道」的感覺,這可能才是你真正掌握自動化測試精髓的時候。最後,你可能又會將你自己做的工具進一步抽象出來,給大家再分享你所改進甚至是發明的新的平台和框架,「獨樂樂不如眾樂樂」,影響他人而不是被他人所影響,大師都是這樣想的,不是嗎?
其實說了這麼多,總結起來只有一句話:學習自動化是乙個水到渠成的過程,不需要你去拔苗助長。要知道,出來混總是要還的。並不只有程式設計才是藝術,測試也是門藝術,而且是很多人都看不懂的藝術。外行永遠只能看熱鬧,只有內行才看得懂其中的門道。好了,痴人說夢般地說了這麼多,在這個浮躁的社會,或許並不會有太多人在意我所寫的這些,也絕對不會有太多人因此而改變對測試的看法,對自動化的看法。文筆雖然不好,本人能力也有限,只希望有不明白而又想明白的人能夠得到一些靈感,我就感覺很滿足了,呵呵。
自動化雜談之我們應該以怎樣的過程學習自動化
寫這篇日誌 其實是有感而發。剛剛偶然看到論壇上有位童鞋在詢問非計算機專業的做自動化的話難不難,看內容貌似這位童鞋應該才參加測試 軟體測試 工程師的 三十六變 所寫的,自動化測試 工程師 架構師是我們測試人員的發展方向之一,要想向技術方面發展的話,可以說是大多數測試人員的理想目標。但被大多數人所忽視的...
自動化雜談之我們應該以怎樣的過程學習自動化
那說了那麼多,究竟我所認為的比較理想的學習自動化的過程是怎樣的呢?還是拿我自己的實際經歷來舉例吧,本人從事軟體測試的這麼幾年時間以來,回想自己當初急切地想進步,想掌握 高階 技術 這裡指自動化 的心情,跟現在很多童鞋是一樣的,所以我非常能夠理解。我當初也迷茫過,也迫不及待地在網上到處搜尋什麼才是最熱...
應該知道的自動化測試陷阱2
並非所有的測試都可以被自動化。自動化測試是手工測試的增強。乞求專案中的測試百分百實現自動化是不合理的。在首次引入自動化測試時,最好先驗證一下,工具是否能識別出所有物件和第三方的控制項。這對於基於gui的測試工具來說非常重要,因為這類工具往往在識別一些個性化控制項方面有困難,例如一些calendar ...