理論上講,做軟件測試的要求有什么就要懂什么,不是什么人都可以做的。但實際上測試工程師是有初、中、高三級之分的。而初級工程師所需要的知識不多,一般只需要學過簡單的理論即可。中、高級相信需要一段過渡時期的,它們都必須以工具為主。
至于教材,可以說所有的計算機教材都是其中的一部分,就差你是什么方向的測試工作。一般來說,開始的時候,你只需要一本《軟件測試理論》入門即可。有空可以看看《測試的藝術》一書(得益網有得下載)。
什么數據庫\開發(fā)語言,這些與軟件測試都是什么關系???
至于這個問題,首先要說明,軟件測試一般可分為:單元測試、集成測試、系統(tǒng)測試、驗收測試。單元測試一方面是直接對代碼進行直讀,所以它要求必需懂得開發(fā)語言,另一方面它要寫驅動和樁,所以也要懂開發(fā)語言。(一般單元測試都是要開發(fā)人員扶助的)。而數據庫,簡單來說每當我們要驗證一條記錄的所有信息是否完整,都需要進入數據庫中查看,查看是否有漏某個字段;而從更高層次來講,它涉及到系統(tǒng)性能調優(yōu)問題。
軟件測試基礎學習需要掌握哪些內容?首先,要有寬泛的計算機基礎知識。微機原理,數據結構,數據庫,操作系統(tǒng)原理,編譯原理,邏輯,編程語言,網絡,等等,都要系統(tǒng)地學習過。都精通不大可能,因為人的興趣都不相同,但是這些功課的基本知識點是應當了解的。
我們在談到職業(yè)的類別的時候,我們可以說C程序員,C#程序員,Java程序員,而沒有C測試員,C#測試員,Java測試員,程序員可以只擅長某一門編程語言,測試員卻不行。為什么呢?
測試員是代表用戶的,在做測試的時候,他(她)需要考慮到方方面面的事情。例如對于一個用C寫的上網撥號程序,測試員需要考慮:
(1) 程序的功能是否正確;(要求計算機知識)
(2) 是否符合用戶的使用習慣;(要求界面設計知識和換位思考能力)
(3) 性能是否滿足要求,例如長時間使用;穩(wěn)定性;(要求深入的計算機知識)
(4) 是否能夠滿足用戶可能的不同操作系統(tǒng)的要求;(要求計算機知識)
(5) 如果在全球發(fā)布,是否滿足不同語言和文化的需求;(要求軟件國際化測試知識)
(6) 如何搭建測試環(huán)境;(動手能力,硬件知識)
(7) 做代碼檢查;(比較深入的C語言知識)
(8) …
所以,各方面都了解一點,你在做測試的過程當中你會感覺順手得多。如果某寫方面還差一些,沒有關系,計算機行業(yè)的特點就是邊做邊學,只要是個有心人,學習是很快的。
其次,要掌握一門編程語言。原因很簡單:一行代碼不會,你始終是門外漢。
具備計算機操作基礎:這點對于計算機專業(yè)的學生沒有什么大問題的,會使用電腦操作、會簡單Office軟件。
如果不會呢,可以自己在網上找資料自學,很簡單。具備軟件測試基礎知識:軟件測試基礎理論知識。
實踐需要理論知識指導。我們可以從相關書籍或者網上找到軟件測試基礎理論知識,具有詳細的理論解釋。
具備一定的數據庫操作技術:對于常用的數據庫,簡單的操作要具備。學習數據庫可以自己安裝一個數據庫,常練習。
具備一定的邏輯推理能力:這點主要偏向于寫測試用例。測試用例是軟件測試的核心。
寫測試用例,可以參考網絡一些比較經典的例子,模仿寫。寫多了經驗就有了。
掌握軟件測試缺陷管理工具:QC、Mantis、JIAR等。軟件測試離不開缺陷管理。
軟件測試缺陷管理工具有效管理缺陷、提高軟件質量。這方面的知識建議從網絡或者書籍途徑學習。
掌握軟件測試工具:Loadrunner、ruby、QTP等,學習測試工具提高測試效率,這也有助于你測試職業(yè)生涯的規(guī)劃。學會一門開發(fā)腳本語言:學會開發(fā)腳本語言有助于學習軟件測試工具。
根據自己的興趣和基礎選擇學習。
需要以下材料
1、軟件測試基礎知識:
測試計劃編寫、設計測試用例、編寫測試報告、編寫B(tài)UG報告單、跟蹤BUG修復情況、還需要良好的溝通能力、以及各種測試階段所使用的測試方法、單元測試、功能測試、集成測試、系統(tǒng)測試等等、CMMI /ISO9001
2、各種測試工具的使用:
我們在測試的工作中為了能夠提高工作效率進程會用到很多工具、QTP、LR、QC、TD、Bugfree、VSS、SVN等等工具、雖然說工具不是萬能的但是工具能為我們提高工作效率所以不能吧工具當神一樣看待、但是必須得會熟練的使用
3、操作系統(tǒng)相關知識:
Windows、linux、uinx這些都必須會使用、而且不僅僅是簡單的操作、一般的服務管理、注冊表編輯、命令行操作都需要會、可以想象下一個連apache服務都不會安裝配置的人、誰能想象你可以做好基于apache環(huán)境的測試工作、什么?不知道怎么查看磁盤壓力、IO數據。windows linux都有提供自帶的工具可用于查看這些數據、perfmon、top什么的。
4、數據庫知識:
現(xiàn)在Oracle的DBA待遇比一般的開發(fā)人員待遇還高就知道數據庫在企業(yè)中的重要性了、作為測試人員雖然不需要有DBA的能力、但是基本的數據庫操作你必須得會把、不管是Oracle、DB2、MSsql還是mysql最少都應該能熟悉使用其中的一二。
5、計算機硬件知識:
做過性能測試的朋友都知道在性能測試過程中硬件性能也是一個非常重要的指標、CPU、內存、IO、帶寬等等、如果你是做硬件測試的。那么就更不用說了。交換機、路由器、防火墻這些設備都需要有所了解。
6、網絡協(xié)議:
如果你還知道TCP和UDP有什么不一樣的話請趕快去補充點知識吧、互聯(lián)網時代、一切都通過網絡傳輸、常用協(xié)議必須得了解、曾經面試了一個測試工程師做了2年的測試居然不知道自己測試軟件使用什么協(xié)議、這樣的人是你的話你敢招么?
7、開發(fā)語言即代碼編寫能力:
雖然不會寫代碼也能做測試、但是如果你想做到高級測試工程師以上、那么代碼編寫能力就是必選項、如果不會寫代碼、那么你不可能成為高級測試。高級測試工程師的一部分工作就是在寫測試工具。雖然測試也需要寫代碼但不需要和開發(fā)一樣那么精通某一門語言、可是測試卻需要了解很多門開發(fā)語言(舉一個簡單的例子:你現(xiàn)在所在的項目從C++語言、2年后你換工作了、新公司的開發(fā)語言是java或者是VB什么的)所以在開發(fā)語言中測試需要更廣的學習。
8、行業(yè)知識:
行業(yè)知識之所以寫在最后面是因為前面的7條我們都可以通過學習來掌握、但是唯獨行業(yè)知識卻只能通過工作經驗來積累、不要說你去看幾本書就知道通信行業(yè)、醫(yī)療行業(yè)、或者是航天行業(yè)、你認為在書本上面能學到么?
由于行業(yè)知識的特殊性所以建議朋友們不要頻繁的跳槽、經驗的積累是需要時間來沉淀的。
9、具有一定的美學觀:
這個說起來比較拗口一點、簡單來說不管是開發(fā)活動還是測試活動、最后的目標就是將產品推向市場、而且得到用戶的認可。所以如果產品在需求分析階段就出現(xiàn)了偏離用戶航道、那么就算測試 開發(fā)做得再好這個項目也是一樣會失敗。所以各位如果有幸能夠參加需求評審的話、請不要吝嗇你的言論。
10、請不要忘記時刻學習著:
這點我相信大家應該都能理解所以不用寫什么:僅此一點“不學習就會落后”
總結:說了那么多技能或者是說是需要掌握的技術、如果你沒有一顆發(fā)現(xiàn)缺陷之美的心態(tài)、沒有一顆以提高質量為前提來投入工作中、那么就算你其他做得再好也不過是萬千軟件測試從業(yè)人員中的一枚。測試活動大部分用于發(fā)現(xiàn)缺陷、而發(fā)現(xiàn)缺陷之后的工作尤為重要:怎么樣從發(fā)現(xiàn)缺陷到提高質量。
1. 具備計算機操作基礎:這點對于計算機專業(yè)的學生沒有什么大問題的,會使用電腦操作、會簡單Office軟件。如果不會呢,可以自己在網上找資料自學,很簡單。
2. 具備軟件測試基礎知識:軟件測試基礎理論知識。實踐需要理論知識指導。我們可以從相關書籍或者網上找到軟件測試基礎理論知識,具有詳細的理論解釋。
3. 具備一定的數據庫操作技術:對于常用的數據庫,簡單的操作要具備。學習數據庫可以自己安裝一個數據庫,常練習。
4. 具備一定的邏輯推理能力:這點主要偏向于寫測試用例。測試用例是軟件測試的核心。寫測試用例,可以參考網絡一些比較經典的例子,模仿寫。寫多了經驗就有了。
5. 掌握軟件測試缺陷管理工具:QC、Mantis、JIAR等。軟件測試離不開缺陷管理。軟件測試缺陷管理工具有效管理缺陷、提高軟件質量。這方面的知識建議從網絡或者書籍途徑學習。
6. 掌握軟件測試工具:Loadrunner、ruby、QTP等,學習測試工具提高測試效率,這也有助于你測試職業(yè)生涯的規(guī)劃。
7. 學會一門開發(fā)腳本語言:學會開發(fā)腳本語言有助于學習軟件測試工具。根據自己的興趣和基礎選擇學習。
首先需要了解的就是計算機系統(tǒng)組成介紹,包括計算機系統(tǒng)的組成、計算機系統(tǒng)抽象層次結構、軟件的定義、軟件的基本分類。
要熟悉操作系統(tǒng)的定義和主要功能,常用的操作系統(tǒng)。還要熟悉進制轉換,包括數制、十進制、二進制、八進制、十六進制以及它們之間的轉換。
熟悉邏輯代數的定義、基本邏輯關系與運算、邏輯變量。掌握計算機網絡基礎,包括認識網絡、網絡協(xié)議、分層思想、常見的網絡分層模型、各層對應功能和協(xié)議。
其次要掌握軟件的生命周期,熟悉軟件開發(fā)過程模型,包括瀑布模型,快速原型模型、螺旋模型。掌握軟件測試過程模型,包括V模型、W模型。
為接下來軟件測試系統(tǒng)化的學習打好基礎。還要掌握軟件測試的定義,熟悉軟件測試的目的、軟件測試的意義,掌握軟件測試工作流程和實際軟件工作流程。
通過對軟件測試概論的學習,對軟件測試工作流程做到熟悉,培養(yǎng)未來測試工作中的良好習慣。另外還需要掌握軟件缺陷定義,熟悉缺陷產生的原因和軟件缺陷第二定義,掌握缺陷報告編寫。
通過對軟件缺陷相關知識的學習,學會日常工作中缺陷報告的提交,明確bug的嚴重程度及優(yōu)先級。更多科普就在IT優(yōu)就業(yè)。
軟件測試是一門新興行業(yè),平均薪酬不錯,而且入門簡單。需要掌握一定的開發(fā)語言基礎,相關網絡和數據庫的基礎知識,以及主要的軟件測試理論?;A學習的話有人引導就會相當簡單,因此建議最好找一個做測試工作的朋友指導學習效率最高。如果是完全自學,建議安排好時間,幾方面知識學習同時開始:
1.軟件測試基礎理論和方法。這塊的東西學起來其實不多,重要的是實際的應用。主要掌握黑白盒測試、測試策略、測試方法、測試設計、測試報告等相關理論。在網上或書店隨便找一份軟件測試學習的書籍都夠用了。
2.網絡和數據庫基礎知識。現(xiàn)在的軟件基本都離不開網絡和數據庫應用。所以這兩塊的基礎知識也是必須掌握的。不需要太深,網絡知道互聯(lián)網發(fā)展,現(xiàn)代網絡架構,IP分配知識,網絡七層協(xié)議等,數據庫要會基本的增刪改查語句操作。這個在網上找一些資料和練習題做一做就可以了。
3.開發(fā)語言基礎。這個很重要。測試要深入發(fā)展,掌握至少一門開發(fā)語言是很必要的。實際測試的技能需求是大于開發(fā)的,除了常用開發(fā)語言,最好是能掌握一門腳本語言,作為測試自動化能力拓展的基礎。這是通向高級測試的必備技能。這塊需要投入很大,但不需要在工作初期要求太高,可以再工作中不斷提升。自己選定一門開發(fā)語言和腳本語言,持續(xù)學習即可。
1)熟悉計算機基礎知識;
(2)熟悉操作系統(tǒng)、數據庫、中間件、程序設計語言基礎知識;
(3)熟悉計算機網絡基礎知識;
(4)熟悉軟件工程知識,理解軟件開發(fā)方法及過程;
(5)熟悉軟件質量及軟件質量管理基礎知識;
(6)熟悉軟件測試標準;
(7)掌握軟件測試技術及方法;
(8)掌握軟件測試項目管理知識;
(9)掌握C語言以及C++或Java語言程序設計技術;
(10)了解信息化及信息安全基礎知識;
(11)熟悉知識產權相關法律、法規(guī);
(12)正確閱讀并理解相關領域的英文資料。
通過本考試的合格人員能在掌握軟件工程與軟件測試知識的基礎上,運用軟件測試管理方法、軟件測試策略、軟件測試技術,獨立承擔軟件測試項目;具有工程師的實際工作能力和業(yè)務水平。
軟件測試是一個入門簡單、但深入難的工作
入門的時候只要會看懂中文、理解能力沒問題就可以按照測試用例來執(zhí)行用例了
進一步之后需要會的知識會越來越多
1、操作系統(tǒng)的知識(什么軟件都是運行在操作系統(tǒng)之上的、一般的操作必須要會)
2、數據庫知識(現(xiàn)在還能找到多少不需要數據庫的大型軟件捏?)
3、計算機網絡(通信呀通信、千萬不要TCP和UDP都分不清楚)
4、計算機硬件(你要是C/S架構的測試或者是做性能測試、那么計算機硬件都是必修課了、總得知道IO是什么IOPS又是啥)
5、各種測試工具的使用、什么QC/TD/BUGfree/QTP/LR之類的 不需要樣樣精通但是必須要熟練使用
6、軟件測試基礎知識(這年頭沒有知識是萬萬不能的、軟件測試基礎知識其實買幾本書好好看看就能學個差不多了)
7、開發(fā)語言(做到高級軟件測試的人都是會寫點小工具的)
8、測試環(huán)境配置:這個要說下、我在做配置管理的時候發(fā)現(xiàn)很多測試人員居然連自己的測試環(huán)境都配置不好、一個連自己的測試環(huán)境都不會配置的人會成為一個合格的測試么。(你要測試web的apache、tomcat、iis之類的得會配置吧)
PS:希望你不要被我寫的這么多東西嚇到了、這些知識是在軟件測試的進化過程中慢慢積累起來的、不是所有人都一開始就會了、你是計算機專業(yè)畢業(yè)的。那么計算機硬件、網絡、操作系統(tǒng)、數據庫什么的都應該在學校的時候有學到的、所以應該不是問題
最后:祝你好運
【IT168 技術文章】 一、軟件測試概述 軟件測試是軟件開發(fā)過程的重要組成部分,是用來確認一個程序的品質或性能是否符合開發(fā)之前所提出的一些要求。
軟件測試的目的,第一是確認軟件的質量,其一方面是確認軟件做了你所期望的事情(Do the right thing),另一方面是確認軟件以正確的方式來做了這個事件(Do it right)。第二是提供信息,比如提供給開發(fā)人員或程序經理的反饋信息,為風險評估所準備的信息。
第三軟件測試不僅是在測試軟件產品的本身,而且還包括軟件開發(fā)的過程。如果一個軟件產品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。
因此軟件測試的第三個目的是保證整個軟件開發(fā)過程是高質量的。 軟件質量是由幾個方面來衡量的:一、在正確的時間用正確的的方法把一個工作做正確(Doing the right things right at the right time.)。
二、符合一些應用標準的要求,比如不同國家的用戶不同的操作習慣和要求,項目工程中的可維護性、可測試性等要求。三、質量本身就是軟件達到了最開始所設定的要求,而代碼的優(yōu)美或精巧的技巧并不代表軟件的高質量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。
四、質量也代表著它符合客戶的需要(Quality also means “meet customer needs”.)。作為軟件測試這個行業(yè),最重要的一件事就是從客戶的需求出發(fā),從客戶的角度去看產品,客戶會怎么去使用這個產品,使用過程中會遇到什么樣的問題。
只有這些問題都解決了,軟件產品的質量才可以說是上去了。 測試人員在軟件開發(fā)過程中的任務: 1、尋找Bug; 2、避免軟件開發(fā)過程中的缺陷; 3、衡量軟件的品質; 4、關注用戶的需求。
總的目標是:確保軟件的質量。二、常用的軟件測試方法 1.黑盒測試 黑盒測試顧名思義就是將被測系統(tǒng)看成一個黑盒,從外界取得輸入,然后再輸出。
整個測試基于需求文檔,看是否能滿足需求文檔中的所有要求。黑盒測試要求測試者在測試時不能使用與被測系統(tǒng)內部結構相關的知識或經驗,它適用于對系統(tǒng)的功能進行測試。
黑盒測試的優(yōu)點有: 1)比較簡單,不需要了解程序內部的代碼及實現(xiàn); 2)與軟件的內部實現(xiàn)無關; 3)從用戶角度出發(fā),能很容易的知道用戶會用到哪些功能,會遇到哪些問題; 4)基于軟件開發(fā)文檔,所以也能知道軟件實現(xiàn)了文檔中的哪些功能; 5)在做軟件自動化測試時較為方便。 黑盒測試的缺點有: 1)不可能覆蓋所有的代碼,覆蓋率較低,大概只能達到總代碼量的30%; 2)自動化測試的復用性較低。
2.白盒測試 白盒測試是指在測試時能夠了解被測對象的結構,可以查閱被測代碼內容的測試工作。它需要知道程序內部的設計結構及具體的代碼實現(xiàn),并以此為基礎來設計測試用例。
如下例程序代碼:HRESULT Play( char* pszFileName ){if ( NULL == pszFileName )return;if ( STATE_OPENED == currentState ){PlayTheFile();}return;}讀了代碼之后可以知道,先要檢查一個字符串是否為空,然后再根據播放器當前的狀態(tài)來執(zhí)行相應的動作??梢赃@樣設計一些測試用例:比如字符串(文件)為空的話會出現(xiàn)什么情況;如果此時播放器的狀態(tài)是文件剛打開,會是什么情況;如果文件已經在播放,再調用這個函數會是什么情況。
也就是說,根據播放器內部狀態(tài)的不同,可以設計很多不同的測試用例。這些是在純粹做黑盒測試時不一定能做到的事情。
白盒測試的直接好處就是知道所設計的測試用例在代碼級上哪些地方被忽略掉,它的優(yōu)點是幫助軟件測試人員增大代碼的覆蓋率,提高代碼的質量,發(fā)現(xiàn)代碼中隱藏的問題。 白盒測試的缺點有: 1)程序運行會有很多不同的路徑,不可能測試所有的運行路徑; 2)測試基于代碼,只能測試開發(fā)人員做的對不對,而不能知道設計的正確與否,可能會漏掉一些功能需求; 3)系統(tǒng)龐大時,測試開銷會非常大。
3.基于風險的測試 基于風險的測試是指評估測試的優(yōu)先級,先做高優(yōu)先級的測試,如果時間或精力不夠,低優(yōu)先級的測試可以暫時先不做。有如下一個圖,橫軸代表影響,豎軸代表概率,根據一個軟件的特點來確定:如果一個功能出了問題,它對整個產品的影響有多大,這個功能出問題的概率有多大?如果出問題的概率很大,出了問題對整個產品的影響也很大,那么在測試時就一定要覆蓋到。
對于一個用戶很少用到的功能,出問題的概率很小,就算出了問題的影響也不是很大,那么如果時間比較緊的話,就可以考慮不測試?;陲L險測試的兩個決定因素就是:該功能出問題對用戶的影響有多大,出問題的概率有多大。
其它一些影響因素還有復雜性、可用性、依賴性、可修改性等。測試人員主要根據事情的輕重緩急來決定測試工作的重點。
4. 基于模型的測試 模型實際上就是用語言把一個系統(tǒng)的行為描述出來,定義出它可能的各種狀態(tài),以及它們之間的轉換關系,即狀態(tài)轉換圖。模型是系統(tǒng)的抽象。
基于模型的測試是利用模型來生成相應的測試用例,然后根據實際結果和原先預想的結果的差異來測試系統(tǒng),過程如下圖所示。三、軟件測試的類型 常見的軟件測試類型有: BVT 。
聲明:本網站尊重并保護知識產權,根據《信息網絡傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個月內通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.712秒