軟件測試需要學習的東西_第1頁
軟件測試需要學習的東西_第2頁
軟件測試需要學習的東西_第3頁
軟件測試需要學習的東西_第4頁
軟件測試需要學習的東西_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

刖言軟件測試發展到今天,已經逐漸形成一門學科,但是還不夠系統。初學者面對鋪天蓋地的資料應該如何選取?應該從哪里入手?如何迅速的掌握各種業務各項測試技能以便開展工作?在保證測試質量的前提下,一日內編寫或執行1000個測試用例是不是夢想?入行多年者面對復雜的業務邏輯,海量的測試需求,如何在最短的時間內進行測試?如何盡可能更早的開展測試?如何對系統架構進行測試?如何全面提高測試質量與測試效率?如何百尺竿頭更進一步?本文將針對這些問題進行初步解答,主要闡述解決這些問題應該具備哪些能力及如何鍛煉這些能力,至于實際工作中解決問題的具體操作步驟本文不做表述,可關注后續文章。前兩章主要探討一名合格的測試工程師應該具備哪些能力,對列舉的能力將會做簡要說明。第三章重點說明應該如何鍛煉這些能力,此為本文的重點。最后一章是筆者對軟件測試虛無縹緲雜亂無章的一些想法。本文的讀者群涵蓋所有對軟件測試感興趣的朋友。下面,我們開始。第一章綜合素質筆者以為,作為一名合格的測試工程師,綜合素質是最重要的,綜合素質也就是我們常說的軟技能,它代表著一個人的潛力有多大,未來發展有多寬廣。核心素質有以下五點:溝通、分析、組織、學習、心態,下面將會分別闡述。溝通作為一名軟件測試工程師,優先加強的應該是哪方面的溝通能力?是文字溝通能力。試想,如果連缺陷描述都無法準確清晰的用文字表達出來,還有開發愿意和你合作嗎?特別是隨著異地開發的項目越來越多,文字溝通的場景也會越來越多。當然,口頭溝通也很重要,通過面對面或者電話語音交流是很直接的方式,這也是為什么許多鼓吹敏捷開發的團隊喜歡坐在一起的原因,認為這樣會降低溝通成本。但事實上,真的在任何時刻都能降低成本嗎?無效冗長的會議大家都參與過,這里不做深入討論。不知道其他人有沒有這種體驗,筆者偶爾在查閱測試用例庫或閱讀工作郵件的時候會忍不住哈哈大笑,語句不通錯別字也就罷了,寫的像聊天記錄一樣盡是口頭語就讓人很無奈了。所以,這里首先強調的是提高文字表達能力,其次才是口頭溝通能力。另外要特別注意的是,溝通能力包含兩方面,一方面是說(寫),一方面是聽(讀),表達與聆聽同等重要。筆者發現很多測試工程師表達能力不錯,但聆聽能力很差,有時候甚至忽略聆聽。對方話沒講完就急匆匆的打斷,即使聽了兩句也馬上反駁對方,這是惡習,比抽煙喝酒打老婆還要惡虐。分析早期我們認為測試的唯一工作就是發現問題,在很多文獻資料上均有類似描述。但筆者以為,測試發展到今天,單純的發現問題已不再是測試工作的全部,測試工作應包含發現問題、分析問題、解決問題三個方面。發現問題以測試人員為主開發人員為輔,分析問題開發測試共同完成,解決問題以開發人員為主測試人員為輔。在測試工作中每時每刻都需要用到分析能力,同時,分析能力是評估一名測試工程師是否優秀最重要的考核點。就像我們常說的缺陷預防一樣,怎么預防?對已發生問題的產生原因能準確定位并把類似問題進行歸類,對未發生問題能充分預知風險并準備應對方案,這就是我們追求的零缺陷,這些工作有不需要高度分析能力的嗎?再例如測試計劃,我們做計劃是拍腦袋亂猜嗎?是掐指算命嗎?肯定很多人回答不是,但實際上往往很多人就是這么做的。測試計劃的制定過程是首先收集大量相關信息,然后抽絲剝繭在雜亂無章的信息中尋找到關鍵點并梳理清脈絡,最終據此定出計劃。我們說部分未來是可以推測出來的,就是這個道理。在做計劃時會用到許許多多輔助分析的理論方法,這里就不一一闡述了。艾森豪威爾有句名言:“Aplanisnothing,planningiseverything."Planning就是分析的過程。組織劉備自己不會帶兵打仗,為什么他下面的五虎將會死心塌地的服從他?因為五虎將會將兵,劉備會將將。“運籌帷幄之中,決勝千里之外",這是帥才;“三軍中取敵上將之首級如探囊取物",這是將才。帥才也好將才也好,都離不開組織能力。這里說的是廣義上的組織能力,不僅僅指團隊管理、跨部門協調這些內容。不少人認為開發與測試的工作是對立的,經常會有沖突,沒錯,的確會有。出現沖突怎么辦?這時候需要通過高度的組織能力對雙方的合作關系進行充分的調整。人與人之間本來就會不斷的有磨擦,有人的地方就有恩怨,有恩怨就有江湖,人就是江湖。那為什么有的人能左右逢源,讓人感覺與他合作如沐春風呢?這就是組織能力的表現。再比方說,在真正的敏捷團隊中,無論工作有多苦多累,無論團隊成員構成有多復雜,整個團隊都會有一個共同的表象,那就是“開心",真正的敏捷團隊一定是個開心的團隊。所以筆者常說,敏捷團隊的領導者一定要有非常強烈的人格魅力,能牢牢的把整個團隊凝聚在一起,這種人格魅力往往就體現在組織能力上。有人也許會問,舉辦大型活動算不算組織能力的體現?算,當然算。但現在很多人白白浪費了這樣的機會,在籌備過程中僅僅起到工作分解或傳聲筒的作用,可惜。學習“一目十行過目不忘",這種天才是有的,筆者非常羨慕有時甚至是嫉恨他們。普通人需要花費一兩年才能掌握的知識,這些天資縱橫的人只用一兩天就可以了,并且很多技能仿佛天生就會,根本不用后天的學習。幸好這種人非常少,否則根據社會達爾文主義的觀點,我們普通人沒有任何生存空間。軟件測試從業人員有個明顯特點一一復合型。"知己知彼百戰百勝”,當我們要對某項產品進行測試,那么必然要先了解此產品的各種背景,這導致測試人員需要學習各種各樣的知識,并且要不斷的學習,快速的學習。入行幾年后或許我們會感到掌握的技能雜而不精,此時需要深入的學習,全面的學習。學習能力往往被看作是一個人有無潛力的重要標志,針對軟件測試工程師而言,“快速學習”尤為重要。筆者一直想尋找一種方法,能讓測試人員不了解行業背景不懂測試技術也能正常開展測試工作,但可惜的是一直沒找到。那么變通下,通過'快速學習”是否也能達到類似的效果呢?應該是可以的。學習最核心的是什么?知之者不如好之者,好之者不如樂之者。心態多年前筆者讀過一篇文章一一《寫給浮躁的IT同仁》,讀后深有同感。一個浮躁的社會造就了眾多浮躁的人,軟件測試本該是個做學問的領域,可惜啊可惜。人往往是自私的,荀子曰:"人之初,性本惡。”筆者深以為然。絕大多數人都認為自己是最可憐最委屈最被不公正對待的,捫心自問真是這樣嗎?佛教有個觀點"明心見性”,這是筆者孜孜不倦所追求的精神境界,與大家共勉。大家應該都明白,沒有絕對的公平社會,從來就沒有,縱觀古今中外歷朝歷代什么時候絕對公平過?我們不要一味的怨天尤人,如果改變不了環境就努力的去適應它,這是升斗小民應該具備的心態。先做人后做事,不論是綜合素質還是專業技能,在所有能力中,心態是最重要的。但要特別說明下,心態和態度不是一碼事。此外,有人認為工作態度高于工作能力,筆者并不贊同這種觀點,更有甚者把工作態度與是否聽話混為一談這就更扯淡了。國人講究"君以國士待我,我必國士報之”,一顆平常心加上一顆感恩心,足夠了。第二章專業技能《笑傲江湖》里有寫到華山派分為劍氣二宗,金大師在書中是褒揚劍宗的,令狐沖全無內力單憑神鬼莫測的劍法就打遍天下無敵手。那么在測試領域里,方法與技術哪個更重要?此話題爭論太多一時半會說不清楚,但筆者是贊同方法更重要的。有道是萬法歸宗,一力降十會,就是這個道理。下文所說的技能涵蓋了方法與技術。另請注意,當專業能力上升到一定程度后,需要從廣度轉為深度,即要在某一特定領域內做深做強,切勿變成雜而不精。測試方法目前測試領域內大大小小的測試方法上百種,有的被廣大測試工程師所接受并在實際工作中大量運用,有的僅停留在理論研究階段,還有的只是某些機構為了發表學術論文東拼西湊胡亂編造的。那么這么多方法應該如何選擇?《神雕俠侶》里有這么一段:法王笑道:"人各有志,那也勉強不來。楊兄弟,你的武功花樣甚多,不是我倚老賣老說一句,博采眾家固然甚妙,但也不免駁而不純。你最擅長的到底是那一門功夫?要用甚麼武功去對付郭靖夫婦?”這幾句話可將楊過問得張口結舌,難以回答。他一生遭際不凡,性子又是貪多務得,全真派的、歐陽鋒的、古墓派的、九陰真經、洪七公的、黃藥師的,諸般武功著實學了不少。這些功夫每一門都是奧妙無窮,以畢生精力才智鉆研探究,亦難以望甚涯岸,他東摘一鱗、西取半爪,卻沒一門功夫練到真正第一流的境界。遇到次等對手之時,施展出來固然是五花八門,叫人眼花撩亂,但遭逢到真正高手,卻總是相形見絀,便和金輪法王的弟子達爾巴、霍都相較,也是頗有不及。他低頭凝思,覺得金輪法王這幾句話實是當頭棒喝,說中了他武學的根本大弊。楊過第一反應是什么呢?他走出茅棚,在山頂上負手而行,苦苦思索,甚是煩惱,想了半天,突然間心念一動:“我何不取各派所長,自成一家?天下武功,均是由人所創,別人既然創得,我難道就創不得?”想到此處,眼前登時大現光明。最終他的決定是什么?楊過睡了半夜,次晨一早起來又想。七日之中,接連昏迷了五次。說要綜納諸門,自創一家,那是談何容易?以他此時的識力修為固然絕難成功,那更不昃十天半月間之事。但連想數日之廢,恍然有悟,猛地明白諸般武術皆可為我所用,既不能合而為一,也就不必強求,日廢臨敵之際,當用則用,不必去想武功的出處來歷,也已與自創一派想差無幾。想明白了此節,登時心中舒暢。這就是筆者想要表達的。作為一名合格的測試工程師首先一定要見識廣博,最新的行業動態,各種測試方法等等都需要了解。然后在此基礎上,實際工作中需要用到什么方法就用什么方法,信手拈來,千萬不要書到用時方恨少。筆者一直在勸喻團隊中的工程師,不要整天只知道埋頭干活像鴕鳥一樣,要經常抬起頭來放眼看世界,井底之蛙坐井觀天是要不得的,這樣下去路只會越走越窄。最后,當各方面積累到一定程度會發生量變到質變,如果還具備過人的天賦并能百尺竿頭更進一步,則可開宗立派自成一家,就象楊過最后自創“黯然銷魂掌”一樣。筆者在日常工作中最常用的是路徑法、場景法,以組合測試、探索性測試作為輔助。路徑法主要用來做測試需求分析,關注的是節點;場景法主要用來做測試設計,關注的是路徑;組合測試主要用來對規則性的用例進行篩選,減少測試用例數量;探索性測試主要用于交叉測試或測試大掃除之類的測試活動。這些方法的詳細論述網上有很多,這里就不一一闡述了。如何把這些方法貫穿在一起?之前的分享有詳細表述過,這里也不啰嗦了。現在業內有兩種測試理念很流行,一種是基于模型測試(MBT),一種是云測試。筆者以為這兩種測試方式一定是未來測試行業發展的大方向。隨著測試智能化的發展,今后測試工程師入行的門檻會越來越低乃至于消失。到那時,只需要很少一部分測試精英維護測試智能化平臺,其它大部分的測試工作可交由任何人來完成,真正實現“IT民工”的夢想。很多人應該都讀過"四人幫”的《設計模式》,大多數人雖然看不懂但都明白這是核心,是重中之重。測試方法也是如此,它是測試工作的靈魂,測試用例與測試腳本孰重孰輕?不言而喻。最后說明一點,在筆者印象中測試人員是肯定要參與需求分析及系統設計過程的。記得很早前有位工作十來年的開發工程師對筆者說:“你真牛叉這些工作你都參與”。實際上他沒明白,這本身就是測試人員的工作,測試人員本來就需要具備這些能力。所以筆者總說現在國內合格的測試工程師很少,大部分都是濫竽充數,同時也是筆者為什么在所帶領團隊中大力提倡組員多研究測試方法的原因。基礎技能基礎,或許說基本更合適一點。工欲善其事,必先利其器。前面已經談到測試人員是復合型的,要對待測產品的行業背景、技術背景有深入了解。在測試智能化遠沒有發展成熟的今天,測試工程師必需掌握基礎技能。筆者遇到過不少剛入行的新人,他們問的最多問題是"測試人員是否需要懂編碼”。筆者一般回答"欲窮千里目,更上一層樓”。其實不僅僅是測試人員,但凡和技術沾邊的工種都需要懂編碼。編碼是最基礎的技能,無論哪一門語言,至少要會一種,如果能再具備一定的產品開發經驗那就更好了。但請注意,過猶不及,不要單純拿編碼能力的高低來衡量測試人員水平的高低,測試人員最核心的技能仍是在測試設計上,不要本末倒置。同樣,像數據庫、操作系統、網絡協議、建模等等都屬于基礎技能的范疇。可能測試人員在這些技能的掌握程度上沒有專業人士強,沒關系,因為這些技能最終是為測試專有技能所服務的,如此而已。當然,如果個人有興趣深入研究那是最好。筆者記得剛接觸Linux系統的時候拼命讀源碼,剛接觸網絡協議的時候厚厚幾本《TCP/IP詳解》放在床頭,可惜的是都沒堅持下來。為什么說測試工程師轉崗容易?現在該明白了吧。測試模式瀑布開發、快速開發、迭代開發、敏捷開發等等等等,這么多開發模式聽著是不是犯暈?探討哪種模式更好其實是扯淡,就象探討是由“開明君主治理的封建制度國家”好,還是由“腐朽無能政府統治的民主制度國家”好一樣,均屬于哲學問題。同理,測試模式有V模型、X模型、H模型、前置模型,淘寶還提出了SPR模型以及最近正在探索的CCI模型,哪種更好?合適的就是最好的。盡信書不如無書,這道理很多人都說懂,實際上呢?大多數人依然是照本宣科,死搬硬套。在大多數情況下,工程師應該盡量追求神似而不是形似,特別是奮戰在一線的工程師,要明白“將在外君命有所不受”的道理。在當前以結果為導向這種西式管理的氛圍下,更多的是要拿出讓各方面滿意的成績單。當然,也有部分人以此為借口逃避流程逃避制度,高舉敏捷大旗卻行偷懶之實。要知道能量守恒,在某方面偷懶在其它方面會付出更多,這樣做其實是把自身工作轉嫁到他人身上,比方說把自身應該完成的保證產品質量工作轉嫁給他人,這樣的人要招天譴。"適可而止”這四個字說起來簡單,真要做到非常難,需要大量的實踐經驗,這也是為什么測試工程師職業生命周期較長的原因。筆者認為,在當下絕大多數項目團隊里,V模型足夠使用,或者在部分地方進行改良即可適應項目團隊工作的需要。要知道,經典是永遠不會過時的。那么在行政體系上呢?一個測試部門應該采用怎樣的組織結構?目前流行的是一分為二,一部分做技術支撐,另一部分做產品測試,還有極端的是測試人員只做測試技術支撐,產品測試交由開發人員自行完成。至于在產品測試里再細分單元測試、集成測試或功能測試、性能測試等角色,竊以為不需要,因為在廣義上,都是功能。測試要做的就是V&V,檢驗已實現的功能是否正確,檢驗是否正確實現了功能。測試工具這里所說的工具是廣義上的,可以說各種各樣只要能輔助測試人員開展測試工作的工具都包含在內。為什么Mercury(筆者還是習慣稱為mercury而不是hp)的產品能得到廣大測試工程師的認可?因為它滿足了測試工程師工作的需要。工具干嘛用的?輔助測試工作用的。筆者一直覺得Mercury的架構師真是不得了,產品設計的如此漂亮。什么是測試架構師?這就是。測試工具有很多,這里不一一列舉了。每年國際上會評選年度最佳測試工具,有興趣的朋友可以多了解下,這算是測試工具的風向標。有人曾經爭論什么才能稱之為測試工具,例如針對某一特定產品開發的一段測試代碼是否算是測試工具。筆者以為,從廣義上講是,但在通常所說的范圍下不是,因為它不具備通用性,它只能為特定產品服務。所以筆者常常告誡測試人員,第一不要總吹噓自己開發了多少測試工具,充其量那只能算是一段測試代碼;第二要理解測試工具的本質,開發了一堆工具結果根本不能有效提高測試質量、測試效率,無法幫助測試人員發現更多的缺陷,有意義嗎?當然,有一點肯定沒錯,多試用不同種類的測試工具并研究其原理,如果能對其進行改進,那么恭喜,離專家又進了一步。第三章能力修煉修煉要素以下列舉的十八要素僅供參考,這些要素并沒有優先級或前后順序,但有一點是必需確保的,那就是堅持,至少堅持一個月。如果能把全部要素堅持做一個月,筆者保證測試工程師自身能力會有大幅度提高。如果能堅持一年甚至更長時間直至養成習慣,那么恭喜,離牛人不遠了。1、 每日至少抽出30分鐘關注測試行業新聞,包括各種業內動向,技術前沿等。推薦國內網站:51testing、ITPUB、Javaeye、infoq、博客園、Oracle中國用戶組……2、 每日寫一篇博文,200字左右,記錄當日工作完成情況及次日需完成工作,流水帳也可。3、 每晚入睡前回顧當天表現,檢討一言一行。4、每日清晨計劃當日需完成工作并確定優先級。5、 每日早晚對著鏡子微笑一次。6、 每日閱讀,書的種類不限,不一定是技術類。7、 每日選取一位從來沒交流過的同事進行交流。8、 每日至少編寫30行代碼。9、 每日收看新聞聯播,重播也可。10、 每日洗澡。11、 至少每隔兩日看一集推理類電視劇,推薦《金田一少年事件簿》。12、 至少每隔三日參加一次益智分析類游戲,推薦“圍棋”、“三國殺”。13、 每三日研究一個技術類工具并發表研究文章,推薦從Excel開始研究。14、 每周至少與朋友外出活動一次,推薦極放松的活動,例如喝酒。15、 一周內不要連續兩天加班。16、 每周至少一次與上級開展交流。17、 每月至少單身外出一次,推薦西湖邊靜坐。18、 每月至少儲蓄20%當月收入,至多儲蓄60%。測試工程師的一天7:30起床7:35洗漱,計劃當天工作8:00出門,面對鏡子給自己個微笑8:30早餐,什么都不要想8:50公司,開機接收郵件、消息9:10瀏覽業內新聞9:40大多數人已到公司,開始當天工作12:00中飯,小飯桌上別談工作更別一副憂國憂民的樣子大談國計民生13:00技術研究并沉淀14:00繼續本日工作,編碼,主動與沒交流過的同事進行交流,組織晚上活動18:00晚飯,總結本日工作18:30撰寫當日工作博文18:45加班19:45三國殺21:00回家,洗澡21:30中央新聞頻道,喝酒22:00電視劇,喝酒22:30讀書,喝酒23:00上床,自我反省23:15呼呼呼呼注意:以上主要表達一種思路,勿糾結勿全部模仿。進階目錄通常情況下,能力提升是一個漸進過程,但提升到某一高度遇到瓶頸時則需要突破。這有點類似大乘佛法里所說的,從漸修到頓悟,再從頓悟到圓修。本身中國佛教界對此就有不少爭論,南方慧能系(稱南頓)與北方神秀系(稱北漸)分別講究頓悟與漸悟,而在頓悟中又有道生頓悟、禪宗頓悟,所以說每個人的進修道路是不盡相同的,也不一定有高下之分,主要看對自我認知是否清晰,在不同階段需要何種提升方式,這才是重點。在個人能力提升的道路上,上級主管的支持及培養是非常重要的。好主管會因地制宜因人而異,每次安排超出其能力一點的工作,讓其不斷的有挑戰。同時在實施過程中,主管會默默支持,與其一同制定解決方案并跟進實施過程,最終讓其獨享成功的成果與喜悅。此外,每人擅長的領域不同,有的人所具備的能力很契合當前工作,因此會成為主攻手,有的不太符合只能做輔助。但請注意,在多方協作工作中,必然有人在前攻城拔寨做明星,有人在后默默耕耘做后勤,這些不能單純的以高下來衡量,況且說不定哪天換成其它工作,這主次之分就倒過來了。以下是能力漸進提升的階梯目錄,從前到后有順序之分。1、 基礎:前文所說的基礎技能必需掌握,推薦Java+Oracle+Uml組合。掌握程度一般不用太深,測試工具開發職位的除外。特別注明,Junit是一定要掌握的。市面上書籍很多,筆者推薦《Java編程思想》、《Oracle9i參考手冊》、《UML精粹》。2、 專業:前文所說的測試方法、測試工具必需掌握。其中對于測試工具,如果開源則盡可能閱讀源碼。推薦書籍《計算機軟件測試技術》、《軟件測試藝術》、《軟件測試》。3、 實戰:前文所說的測試模式必需掌握。至少全程參與二十次項目,至少參與兩次50人以上規模的項目,至少編寫測試用例10000個,至少發現缺陷5000個,至少編寫測試腳本20000行,至少擔任過三次測試負責人,所有產品發布后遺漏缺陷總數小于50個并呈收斂趨勢。推薦書籍《設計模式》、《人月神話》、《軟件測試經驗與教訓》。4、 沉淀:深入了解質量控制原理,對功能性(含安全)、效率、易用性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論