軟件測試的學習方法
軟件測試的學習方法
軟件測試就是利用測試工具按照測試方案和流程對產(chǎn)品進行功能和性能測試,那么如何學習軟件測試呢?別走開,接下來,學習啦小編就和大家分享軟件測試的學習方法,希望對大家有幫助!
軟件測試的學習方法:
一、抓包工具各自的特點:
1、httpwatch
特點:嵌入瀏覽器的抓包工具,結(jié)合瀏覽器使用界面清晰,方便易用,且提供自動化api,打開--錄制--保存結(jié)果文件;但只能查看抓取的信息,不能自定義修改;
2、fiddler
特點:客戶端抓包工具,通過代理方式獲取瀏覽器信息,且支持自定義請求(composer),自定義服務(wù)器返回等;但界面不太直觀,且只能抓取http協(xié)議;
3、firebug
特點:fixfox自帶的插件,與httpwatch功能非常相似,且支持控制跟蹤審查元素,可以修改控件名字等,功能十分強大,抓包只是firebug其中很小一個功能;
4、科來
特點:此工具直接監(jiān)視網(wǎng)卡,既能抓還能修改,抓取內(nèi)容更多更詳細,不僅僅支持http協(xié)議,還支持tcp/udp/ftp/pop3等協(xié)議,適合對協(xié)議要求相對較高的抓包活動;
二、闡述操作系統(tǒng)中的系統(tǒng)調(diào)用、中斷、上下文切換這三個概念的含義
系統(tǒng)調(diào)用:
在操作系統(tǒng)上如果想要運行你的程序,就得靠自己從面向底層硬件的代碼編起,但這件事太枯燥,且不是每個人都能做到,這樣操作系統(tǒng)就替我們做這些事情,把硬件封裝,統(tǒng)一提供一套接口,這些接口就是系統(tǒng)調(diào)用;
系統(tǒng)調(diào)用把應(yīng)用程序的請求傳給內(nèi)核,當操作系統(tǒng)接收到系統(tǒng)調(diào)用請求后,會讓處理器進入內(nèi)核模式,調(diào)用相應(yīng)的內(nèi)核函數(shù)完成所需的處理,當處理完成后,操作系統(tǒng)會讓處理器返回用戶模式,來執(zhí)行用戶代碼,提高了我們寫程序的效率,所以系統(tǒng)調(diào)用此時充當?shù)慕巧褪且粋€接口,外面由用戶程序調(diào)用,內(nèi)部連接內(nèi)核的其他部分,共同實現(xiàn)用戶的請求;
上下文:
上下文簡單來說就是一個環(huán)境,相對于進程而言,就是進程執(zhí)行時的環(huán)境,具體來說就是各個變量和數(shù)據(jù),包括進程打開的文件,內(nèi)存信息等;當發(fā)生進程調(diào)度時,導致進程切換時,進程的運行環(huán)境也應(yīng)及時切換,CPU切換到另外一個進程需要保存當前進程的狀態(tài)并恢復另一個進程的狀態(tài):當前運行任務(wù)轉(zhuǎn)為就緒狀態(tài),另一個被選定的就緒任務(wù)成為當前任務(wù),上下文切換包括保存當前任務(wù)的運行環(huán)境,恢復將要運行任務(wù)的運行環(huán)境;上下文切換就是這樣一個過程,他允許CPU記錄并恢復各種正在運行程序的狀態(tài),使它能夠完成切換操作;
通常在三種情況下可能會發(fā)生上下文切換:中斷處理,多任務(wù)處理,用戶態(tài)切換;
中斷:
中斷是為了設(shè)備與CPU之間的通信,是實現(xiàn)多道程序設(shè)計的必要條件,是CPU對系統(tǒng)發(fā)生的某個事件作出一種反應(yīng),CPU暫停正在執(zhí)行的程序,保留現(xiàn)場后自動轉(zhuǎn)去處理相應(yīng)的事件,處理完該事件后,到適當?shù)臅r候返回斷點,繼續(xù)完成被打斷的程序;例如:讀盤,讀一半,盤有問題,無法讀了,產(chǎn)生中斷,解決后,程序恢復,軟件錯誤也會中斷;特點:中斷是隨機的,可恢復的,自動進行處理的;
三、操作系統(tǒng)中的進程的概念和進程都有哪些狀態(tài)
進程是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ),是一次程序的執(zhí)行,是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行時發(fā)生的活動;程序是一個沒有生命的實體,只有處理器賦予程序生命時,它才能成為一個活動的實體,我們稱其為進程。
進程狀態(tài):
就緒狀態(tài):進程已獲取處理器外的所需資源,等待分配處理器資源,只要分配了處理器進程就可執(zhí)行。
運行狀態(tài):進程占用處理器資源;
阻塞狀態(tài):由于進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續(xù)執(zhí)行
四、 DNS根服務(wù)器的概念是什么?
當客戶端通過瀏覽器訪問網(wǎng)站時候,輸入的是域名需要把域名轉(zhuǎn)化為網(wǎng)絡(luò)識別的ip地址(即DNS解析),首先會查找本地域名緩存,如果不存在,向上一級當?shù)豂SP的DNS查找,比如你用的聯(lián)通網(wǎng)絡(luò),會去查找聯(lián)通的本地緩存,如果仍然查不到,繼續(xù)上一級,最終到根目錄服務(wù)器,其實根目錄服務(wù)器并沒有具體的域名對應(yīng)信息,但他可以告訴你去哪臺服務(wù)器去找,直到最終找到為止;
至于全球的13組根域名服務(wù)器,1個為主根服務(wù)器,放置在美國。其余12個均為輔根服務(wù)器,其中9個放置在美國,歐洲2個,位于英國和瑞典,亞洲1個,位于日本,由互聯(lián)網(wǎng)域名與號碼分配機構(gòu)ICANN統(tǒng)一管理。
五、網(wǎng)絡(luò)拓撲結(jié)構(gòu)一般分幾層,具體叫什么?
分三層,接入層,匯聚層,核心層;
六、性能測試的概念是什么?負載測試、壓力測試、配置測試呢?
性能測試:在一定的負載情況下,系統(tǒng)的相應(yīng)時間等特性是否滿足特定的性能需求;
負載測試:通過測試系統(tǒng)在資源超負荷情況下的表現(xiàn),以發(fā)現(xiàn)設(shè)計上的錯誤或驗證系統(tǒng)的負載能力;Linux系統(tǒng)中通過top命令查看,load average:第一分鐘內(nèi)平均負載(待處理的線程數(shù)),第五分鐘內(nèi)平均負載,第十五分鐘內(nèi)平均負載;業(yè)界定義值超過cpu核數(shù)的4倍,這個時候負載就重了;
壓力測試:指被測系統(tǒng)在一定資源(CPU/內(nèi)存)飽和的情況下,系統(tǒng)的運行情況;與負載測試的區(qū)別是沒有超負荷,在性能允許的范圍內(nèi)測試;
可靠性測試:被測系統(tǒng)在一定負載情況下長時間運行下運行情況;
配置測試:通過調(diào)整被測試系統(tǒng)軟硬件的不同配置,找到一個最合適被測系統(tǒng)的配置或者獲得被測系統(tǒng)在不同配置下的運行情況;比如配置線程數(shù),由于系統(tǒng)本身的特性,比如上下文切換影響性能的考慮,并不是越多越好,而多少合適,是通過配置測試實驗出哪個配置性能最好;
七、 用自己的話描述TPS、PV、UV的基本含義
TPS:每秒事務(wù)數(shù),單位時間內(nèi)被系統(tǒng)處理的事務(wù)數(shù)量,這里的事務(wù)只指一個動作;
PV:訪問一個URL產(chǎn)生一個PV,不管此用戶是同一個還是多個,只要點擊了URL就有一個PV,即頁面訪問量;
UV:獨立用戶訪問量,單個用戶訪問站點的所有頁面,此用戶可以產(chǎn)生多個PV,但算一個UV;日志分析中一般通過user-agent和IP來判斷是否是一個用戶;
八、并發(fā)用戶數(shù)和在線用戶數(shù)的區(qū)別是什么?
并發(fā)用戶數(shù):多個用戶同時操作,會對系統(tǒng)造成負載;
在線用戶數(shù):系統(tǒng)在線人數(shù),包括操作的人數(shù)和只登陸不操作(對系統(tǒng)不會造成負載)的用戶;
九、用自己的話描述選擇性能測試工具需要關(guān)注哪些方面
1、從成本上考慮,包括工具成本和學習成本,工具成本是工具是否開源,因為購買工具也是很花錢的,不是每個公司都可以支撐得了。學習成本就是在職人員是否具備使用這個工具的能力,相應(yīng)的語言編寫能力等,如果沒有需要花費多久時間去學習等等,這都需要成本的;選擇成本要在可接受范圍內(nèi)去選擇工具;
2、通信協(xié)議的考慮,性能測試工具都是基于協(xié)議的,如果被測系統(tǒng)是基于標準的TCP/IP協(xié)議,那可以有很多工具選擇,如SMTP/FTP/HTTP等可以選擇相應(yīng)的工具;如果被測系統(tǒng)是基于自有協(xié)議的,性能測試工具可能不支持,那就需要自己想辦法去實現(xiàn);
3、生命力,選擇性能測試工具需要考慮他的活力,軟件更新周期,市場占有率等,就是發(fā)展前途如何,可以持久使用,避免不必要的損失;
4、跨平臺 ,類似于JAVA的跨平臺能力,適合更多平臺的客戶;
軟件測試的原則:
1.軟件開發(fā)人員即程序員應(yīng)當避免測試自己的程序不管是程序員還是開發(fā)小組都應(yīng)當避免測試自己的程序或者本組開發(fā)的功能模塊。若條件允許,應(yīng)當由獨立于開發(fā)組和客戶的第三方測試組或測試機構(gòu)來進行軟件測試。但這并不是說程序員不能測試自己的程序,而且更加鼓勵程序員進行調(diào)試,因為測試由別人來進行會更加有效、客觀,并且容易成功,而允許程序員自己調(diào)試也會更加有效和針對性?! ?/p>
2. 應(yīng)盡早地和不斷地進行軟件測試
應(yīng)當把軟件測試貫穿到整個軟件開發(fā)的過程中,而不應(yīng)該把軟件測試看作是其過程中的一個獨立階段。因為在軟件開發(fā)的每一環(huán)節(jié)都有可能產(chǎn)生意想不到的問題,其影響因素有很多,比如軟件本身的抽象性和復雜性、軟件所涉及問題的復雜性、軟件開發(fā)各個階段工作的多樣性,以及各層次工作人員的配合關(guān)系等。所以要堅持軟件開發(fā)各階段的技術(shù)評審,把錯誤克服在早期,從而減少成本,提高軟件質(zhì)量。
3.對測試用例要有正確的態(tài)度:第一,測試用例應(yīng)當由測試輸入數(shù)據(jù)和預(yù)期輸出結(jié)果這兩部分組成;第二,在設(shè)計測試用例時,不僅要考慮合理的輸入條件,更要注意不合理的輸入條件。因為軟件投入實際運行中,往往不遵守正常的使用方法,卻進行了一些甚至大量的意外輸入導致軟件一時半時不能做出適當?shù)姆磻?yīng),就很容易產(chǎn)生一系列的問題,輕則輸出錯誤的結(jié)果,重則癱瘓失效!因此常用一些不合理的輸入條件來發(fā)現(xiàn)更多的鮮為人知的軟件缺陷。
4.人以群分,物以類聚,軟件測試也不例外,一定要充分注意軟件測試中的群集現(xiàn)象,也可以認為是“80-20原則”。不要以為發(fā)現(xiàn)幾個錯誤并且解決這些問題之后,就不需要測試了。反而這里是錯誤群集的地方,對這段程序要重點測試,以提高測試投資的效益。
5.嚴格執(zhí)行測試計劃,排除測試的隨意性,以避免發(fā)生疏漏或者重復無效的工作。
6.應(yīng)當對每一個測試結(jié)果進行全面檢查。一定要全面地、仔細地檢查測試結(jié)果,但常常被人們忽略,導致許多錯誤被遺漏。
7.妥善保存測試用例、測試計劃、測試報告和最終分析報告,以備回歸測試及維護之用。
在遵守以上原則的基礎(chǔ)上進行軟件測試,可以以最少的時間和人力找出軟件中的各種缺陷,從而達到保證軟件質(zhì)量的目的。
看了“軟件測試的學習方法”的人還看: