漫談自動化測試(一)——如何入門

在講如何入門之前,首先得對自動化測試有個概念 吧,否則怕你入錯行,貽誤終身啊微笑。什麼是自動化測試(Test Automation)?Wikipedia上如下定義:

In software testing, test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes.[1] 

Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or add additional testing that would be difficult to perform manually.(http://en.wikipedia.org/wiki/Test_automation)

英文沒看懂?好吧,對於初入門者,我也忍了,就簡單翻譯下吧。如下:

在軟件測試中,測試自動化就是用特定的軟件(與被測軟件區別開)去控制測試的執行,對比實際結果和期望結果。自動化測試能夠使已有的正式測試過程中的重複且必要的任務自動化,或者增加一些手工測試難以執行的測試。 

Wikipedia對自動化測試給出了簡單的定義,對它的功能也給出了說明。好了,既然對“自動化測試”有了大概的印象,那就開始準備踏上軟件自動化測試這條不歸之路吧。

必備知識技能

“知識就是力量”(Knowledge is power)--弗蘭西斯·培根(1561—1626),沒有必備的知識,在哪一行都很難混啊!“良田百畝,不如一技傍身”,說明技能也很重要啊(哎,如果有百畝良田,我真想回去種地哈^_^)。作爲自動化測試工程師,需要同時兼備軟件開發員和手工測試員的知識和技能,想想就知道門檻有多高了啊。

編程語言

作爲自動化測試工程師,首先你得會碼代碼吧,否則如何自動化呢?至於什麼語言,我個人認爲無所謂,其實各種編程語言只是工具而已,我們的目的是達到“軟件自動化測試”。但是話又說回來,以個人的經驗和體會,有些語言真心不太適合通用的自動化。我個人推薦 以C/C++ ,Java 和 Python爲主,shell和批處理腳本爲輔。

C/C++雖然編寫效率低下,但執行效率高; Java的類庫十分豐富,從GUI到網絡等應有盡有,也不用擔心內存泄露等問題(其實還是需要滴,不過對普通人來說可以略過);Python的開發效率極高,執行速度也不錯,類庫也十分豐富,學習門檻較低,十分適合初學者。不知道大家發現沒有,這幾種語言,都是可以運行在各種平臺上的(Linux/Unix,MAC,Windows等),這纔是我強烈推薦這幾種語言的原因,因爲你不知道哪一天,可能需要你把自動化測試框架或測試工具移植到另外一種平臺上運行,那時候就知道語言的選擇,其實也很重要!對於C#,Perl,Ruby等的擁護者,你們也可以儘管拿磚頭拍我,我都接着啊^_^。

書籍推薦:《The C Programming Language》(我故意不寫中文,是因爲中文有不少書同名,魚目混珠啊),《C++ Primer》,《Python核心編程》,《Java核心編程-第9版》《Core Java 9th Edition》(共2卷), 《算法導論》。

其實對於Python和Java,本身的幫助文檔就足夠了。其他的編程語言,可以自己尋找,覺得沒啥特別好推薦的。

網絡知識

不要說你精通各種網絡協議(HTTP,RTSP,FTP,SFTP,SMTP,RTMP,SNMP等等),至少應該熟悉下HTTP吧,否則在當今互聯網時代如何立足啊?另外,基本的網絡知識應該懂一點吧,至少知道路由器、網關、網卡、局域網、廣域網、UDP、TCP、網絡協議層等基本概念吧。

這些網絡知識,懂得越多,在網絡測試和設計網絡通信的工具時,就越能發揮它的價值。作爲自動化測試工程師,你必須要掌握socket基本知識,能夠利用各種編程語言的socke接口進行網絡工具編寫,因爲現在很少有測試工具不聯網(至少是內部局域網)進行自動化測試了啊。軟件安裝部署,遠程執行用例,測試結果發送等幾乎都離不開網絡。

書籍推薦:《TCP/IP詳解》(共三卷,理解第一卷就夠你在網絡的天空中翱翔了,理解第二卷寫個TCP/IP協議棧那都是小case,居家旅行必備良書!),如果看到這,你還去選擇其它網絡書籍(什麼21天XX,從入門到精通XX等書),各種協議的RFC文檔除外,那是對Richard Steven的侮辱啊。

數據庫

掌握SQL語句編寫技能,熟悉一些主流的數據庫如Oracle、MySQL、MSSQL、SQLite等和分佈式數據庫如HBase等基本知識,除非是做數據庫自動化測試,一般這方面的知識要求不算搞,掌握基本的 SQL 語句和主流數據庫的安裝部署,就能夠應付日常工作需要了。

閱讀書籍就不推薦了,網上一搜一大把,都半斤八兩,隨便拿本書或幫助文檔看看吧。

操作系統

瞭解Windows和Linux操作系統的工作原理,對深入理解編程和測試軟件都十分有幫助。比如Windows下一般程序最大申請內存不超過2G,Linux下默認開啓的線程數不超過1024個,這些都是與操作系統相關的知識,還有進程調度,磁盤IO,內存管理,系統鎖,內核API等知識,對於我們編寫自動化測試工具和測試軟件都大有裨益。當然咯,操作系統的水很深,需要長期積累,學點總比不學強,對吧?Windows和Linux常用操作和命令,比如批處理腳本和shell編程等。

書籍推薦:《深入理解計算機系統》、《深入理解Linux內核》、《程序員的自我修養—鏈接、裝載與庫》、《鳥哥的Linux私房菜》、《Windows核心編程》(這本我沒看過,口碑不錯,推薦它)。

架構設計

如果你打算從長遠發展,希望某一天自己能夠設計一款牛X的測試工具或框架,那麼架構設計的知識和技能你就得學習和掌握了。軟件架構、UML、設計模式、分佈式、高性能併發設計等知識和技能,都能夠讓你有能力打造一款屬於自己的測試工具或框架,在項目的需求分析或架構設計的評審會議上,你也能夠擁有一席之地。

書籍推薦:《設計模式:可複用面向對象軟件的基礎》(一點也不基礎哦,簡潔、深邃、精闢,值得反覆研讀)、《面向對象分析與設計》、《面向模式的軟件架構》(該書共5卷, 我至今也沒看完這5卷,努力中...害羞

研發管理

即使你不打算走上管理崗位,也需要研發管理的知識。這個研發管理概念比較寬泛,包含軟件工程如軟件需求設計、代碼管理、進度控制等,也涵蓋物料申請、人員調度和分配、協調溝通等等,這些技能都需要啊,否則怎麼開發自動化測試工具?怎麼保證自動化測試投入應用?如何與團隊成員(自動化測試工程師,手工測試工程師,軟件開發人員,管理者等)溝通?

書籍推薦:《人月神話》、《代碼大全》(涵蓋全面,值得收藏,累了還可以當枕頭^_^)。

行業知識

軟件行業覆蓋了現在的各行各業啊,挖掘機裏面也有嵌入式編程呢^_^。作爲自動化測試人員,瞭解被測軟件的應用領域,用戶使用習慣和使用流程等,對於自動化測試設計都很重要。不要求十分精通(當然咯,精通更好啦),但至少也要知道行業背景知識,用戶使用操作場景,行業常用術語等基本常識。

這個就沒法推薦書籍了,各行各業都不一樣啊,尋找下基本知識還是不難的,問百度,問Google吧。


PS:這些知識和技能,特別是推薦的那些書籍,部部都是經典之作!其實還有數據結構和算法(前面我只推薦了《算法導論》,其實還有《計算機程序設計藝術》等),軟件測試理論方法,軟件工程學等知識,這些知識和技能,可以系統的閱讀書籍,或者零零碎碎地學習即可。不要以爲書籍很多,其實除了特別說明的書以外,我可以負責任地說都閱讀過,有些書還閱讀過多次(不過書實在太多,信息量巨大,有些讀了也忘了,瀑布汗啊!)。

必備職業素養

有了前面那麼龐雜的知識體系,你的職業素養至少成功了一半。其實這裏的職業素養,不僅是針對自動化測試人員,對於所有的職場人員而言,我們都應該具備這些素養。

尊重事實

我們要尊重測試結果,不能爲了讓領導滿意而隨意篡改測試結果的數據。性能不達標,那不是你的錯;測試不通過,那也不是你的錯;你唯一要保證的就是你的測試工具沒有問題,是客觀公正的!軟件測試是一件嚴謹的工作,如果遺留或隱瞞缺陷,指不定哪天這個軟件缺陷會要了你或者別人的命,爲了所有人的生命財產安全,作爲質量控制員,作爲21世紀有思想有抱負有責任的青年,大家共同努力吧大笑

誠實守信

承諾測試工具或測試框架的交付日期,就必須做到,否則會因爲自動化測試工具或框架沒有準備好,而嚴重拖累項目進度,導致失去市場商機。對於不能完成或不可實現的需求,要勇於提出意見,不要偷工減料。比如對於視頻質量的自動化檢測,明明無法檢查音視頻是否同步,你也不告知大家,那就是你的過錯了。

積極主動

積極改進日常工作流程,作爲自動化測試員,要有“懶惰”的精神,能夠自動化完成的工作,絕對不要手工去操作完成,哪怕加班寫個工具,也不要做重複無聊的勞動。要以提高個人和團隊的工作效率爲目標,積極改善工具,即使重構代碼,完善幫助文檔等。

客戶至上

自動化測試的服務對象,一般就是本團隊的測試人員、開發人員和項目管理者。每個人關注點不一樣,測試人員關注易用性、可靠性、缺陷檢測,開發人員關注缺陷數,管理者關注測試結果報告(通過率、覆蓋度、性能指標等)。要儘自己最大努力,做到一鍵式操作(軟件部署、測試執行、發送報告等),配備簡潔完備的操作使用手冊。


好了,前面說了那麼多,估計把一羣想加入自動化測試的人員嚇跑了一大半。看到這裏,你應該很高興自己還堅持着(我碼字更不容易啊大哭)。作爲獎賞,如果你對推薦的書籍感興趣,可以私信給我聯繫,電子版的免費贈送啊。如有任何疑問,歡迎回復或私信給我交流。敬請關注《漫談自動化測試》後續的系列文章。

轉載請註明出處:《漫談自動化測試(一)——如何入門》  (http://blog.csdn.net/thomashtq/article/details/45217271)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章