一、軟件測(cè)試概述
軟件測(cè)試是軟件開發(fā)過程的重要組成部分,是用來確認(rèn)一個(gè)程序的品質(zhì)或性能是否符合開發(fā)之前所提出的一些要求。軟件測(cè)試的目的,第一是確認(rèn)軟件的質(zhì)量,其一方面是確認(rèn)軟件做了你所期望的事情(Do the right thing),另一方面是確認(rèn)軟件以正確的方式來做了這個(gè)事件(Do it right)。第二是提供信息,比如提供給開發(fā)人員或程序經(jīng)理的反饋信息,為風(fēng)險(xiǎn)評(píng)估所準(zhǔn)備的信息。第三軟件測(cè)試不僅是在測(cè)試軟件產(chǎn)品的本身,而且還包括軟件開發(fā)的過程。如果一個(gè)軟件產(chǎn)品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此軟件測(cè)試的第三個(gè)目的是保證整個(gè)軟件開發(fā)過程是高質(zhì)量的。
軟件質(zhì)量是由幾個(gè)方面來衡量的:一、在正確的時(shí)間用正確的的方法把一個(gè)工作做正確(Doing the right things right at the right time.)。二、符合一些應(yīng)用標(biāo)準(zhǔn)的要求,比如不同國(guó)家的用戶不同的操作習(xí)慣和要求,項(xiàng)目工程中的可維護(hù)性、可測(cè)試性等要求。三、質(zhì)量本身就是軟件達(dá)到了最開始所設(shè)定的要求,而代碼的優(yōu)美或精巧的技巧并不代表軟件的高質(zhì)量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、質(zhì)量也代表著它符合客戶的需要(Quality also means “meet customer needs”.)。作為軟件測(cè)試這個(gè)行業(yè),最重要的一件事就是從客戶的需求出發(fā),從客戶的角度去看產(chǎn)品,客戶會(huì)怎么去使用這個(gè)產(chǎn)品,使用過程中會(huì)遇到什么樣的問題。只有這些問題都解決了,軟件產(chǎn)品的質(zhì)量才可以說是上去了。
測(cè)試人員在軟件開發(fā)過程中的任務(wù):
1、尋找Bug;
2、避免軟件開發(fā)過程中的缺陷;
3、衡量軟件的品質(zhì);
4、關(guān)注用戶的需求。
總的目標(biāo)是:確保軟件的質(zhì)量。
二、常用的軟件測(cè)試方法
1. 黑盒測(cè)試
黑盒測(cè)試顧名思義就是將被測(cè)系統(tǒng)看成一個(gè)黑盒,從外界取得輸入,然后再輸出。整個(gè)測(cè)試基于需求文檔,看是否能滿足需求文檔中的所有要求。黑盒測(cè)試要求測(cè)試者在測(cè)試時(shí)不能使用與被測(cè)系統(tǒng)內(nèi)部結(jié)構(gòu)相關(guān)的知識(shí)或經(jīng)驗(yàn),它適用于對(duì)系統(tǒng)的功能進(jìn)行測(cè)試。
黑盒測(cè)試的優(yōu)點(diǎn)有:
1)比較簡(jiǎn)單,不需要了解程序內(nèi)部的代碼及實(shí)現(xiàn);
2)與軟件的內(nèi)部實(shí)現(xiàn)無關(guān);
3)從用戶角度出發(fā),能很容易的知道用戶會(huì)用到哪些功能,會(huì)遇到哪些問題;
4)基于軟件開發(fā)文檔,所以也能知道軟件實(shí)現(xiàn)了文檔中的哪些功能;
5)在做軟件自動(dòng)化測(cè)試時(shí)較為方便。
黑盒測(cè)試的缺點(diǎn)有:
1)不可能覆蓋所有的代碼,覆蓋率較低,大概只能達(dá)到總代碼量的30%;
2)自動(dòng)化測(cè)試的復(fù)用性較低。
2. 白盒測(cè)試
白盒測(cè)試是指在測(cè)試時(shí)能夠了解被測(cè)對(duì)象的結(jié)構(gòu),可以查閱被測(cè)代碼內(nèi)容的測(cè)試工作。它需要知道程序內(nèi)部的設(shè)計(jì)結(jié)構(gòu)及具體的代碼實(shí)現(xiàn),并以此為基礎(chǔ)來設(shè)計(jì)測(cè)試用例。如下例程序代碼:
HRESULT Play( char* pszFileName ){
if ( NULL == pszFileName ) return;
if ( STATE_OPENED == currentState )
{PlayTheFile();}
return;}
讀了代碼之后可以知道,先要檢查一個(gè)字符串是否為空,然后再根據(jù)播放器當(dāng)前的狀態(tài)來執(zhí)行相應(yīng)的動(dòng)作??梢赃@樣設(shè)計(jì)一些測(cè)試用例:比如字符串(文件)為空的話會(huì)出現(xiàn)什么情況;如果此時(shí)播放器的狀態(tài)是文件剛打開,會(huì)是什么情況;如果文件已經(jīng)在播放,再調(diào)用這個(gè)函數(shù)會(huì)是什么情況。也就是說,根據(jù)播放器內(nèi)部狀態(tài)的不同,可以設(shè)計(jì)很多不同的測(cè)試用例。這些是在純粹做黑盒測(cè)試時(shí)不一定能做到的事情。
白盒測(cè)試的直接好處就是知道所設(shè)計(jì)的測(cè)試用例在代碼級(jí)上哪些地方被忽略掉,它的優(yōu)點(diǎn)是幫助軟件測(cè)試人員增大代碼的覆蓋率,提高代碼的質(zhì)量,發(fā)現(xiàn)代碼中隱藏的問題。
白盒測(cè)試的缺點(diǎn)有:
1)程序運(yùn)行會(huì)有很多不同的路徑,不可能測(cè)試所有的運(yùn)行路徑;
2)測(cè)試基于代碼,只能測(cè)試開發(fā)人員做的對(duì)不對(duì),而不能知道設(shè)計(jì)的正確與否,可能會(huì)漏掉一些功能需求;
3)系統(tǒng)龐大時(shí),測(cè)試開銷會(huì)非常大。
3. 基于風(fēng)險(xiǎn)的測(cè)試
基于風(fēng)險(xiǎn)的測(cè)試是指評(píng)估測(cè)試的優(yōu)先級(jí),先做高優(yōu)先級(jí)的測(cè)試,如果時(shí)間或精力不夠,低優(yōu)先級(jí)的測(cè)試可以暫時(shí)先不做。有如下一個(gè)圖,橫軸代表影響,豎軸代表概率,根據(jù)一個(gè)軟件的特點(diǎn)來確定:如果一個(gè)功能出了問題,它對(duì)整個(gè)產(chǎn)品的影響有多大,這個(gè)功能出問題的概率有多大?如果出問題的概率很大,出了問題對(duì)整個(gè)產(chǎn)品的影響也很大,那么在測(cè)試時(shí)就一定要覆蓋到。對(duì)于一個(gè)用戶很少用到的功能,出問題的概率很小,就算出了問題的影響也不是很大,那么如果時(shí)間比較緊的話,就可以考慮不測(cè)試。
基于風(fēng)險(xiǎn)測(cè)試的兩個(gè)決定因素就是:該功能出問題對(duì)用戶的影響有多大,出問題的概率有多大。其它一些影響因素還有復(fù)雜性、可用性、依賴性、可修改性等。測(cè)試人員主要根據(jù)事情的輕重緩急來決定測(cè)試工作的重點(diǎn)。