軟件測(cè)試人員如何做好需求分析
需求是產(chǎn)品必須完成的事以及必須具備的品質(zhì)。
功能性需求
功能性需求是產(chǎn)品必須完成的那些事,要求一定的功能和品質(zhì)。
例子:培訓(xùn)機(jī)構(gòu)的班主任可以給所在班級(jí)學(xué)員打考勤
非功能性需求
非功能性需求是產(chǎn)品必須具備的屬性或品質(zhì)。諸如觀感、可用性、安全性和法律限制等。
例子: 平臺(tái)用戶數(shù)為5萬人,每天登錄用戶數(shù)為10000左右,網(wǎng)絡(luò)的帶寬為100M帶寬。在工作時(shí)間根據(jù)資料名稱條件進(jìn)行搜索,可以在3秒內(nèi)得到搜索結(jié)果。
這類需求通常在產(chǎn)品的功能確定之后(但并非總是如此)。也就是說,一旦知道了產(chǎn)品要做的事情,就可以確定它的行為方式,它需要具備什么品質(zhì)以及它的響應(yīng)速度、可用性、可讀性和安全性。
限制條件
限制條件是全局性的需求。它們可以是對(duì)項(xiàng)目本身的限制,或是對(duì)產(chǎn)品最終設(shè)計(jì)的限制。
例子:南京平臺(tái)必須在2010年開學(xué)的第一學(xué)期上線
客戶是在說,如果顧客不能在給定的時(shí)間前使用該產(chǎn)品,那么它就沒有什么用了。其效果是,需求分析師必須對(duì)需求進(jìn)行限制,只包括那些在最后期限前能夠提供最大價(jià)值的需求。
需求分析的重要性
背景:馮大勇吃魚時(shí)嗓子被魚刺卡住了。現(xiàn)在正坐在椅子上候診。
大夫:(在桌上拿起一份掛號(hào)單,大聲的喊)馮大勇!
馮大勇:(病怏怏的樣子,邊走邊咳嗽)我是。
大夫:怎么了?(低頭整理手中的資料,自言自語,并打手勢(shì),示意馮大勇坐下)
馮大勇:我...(咳嗽)...我今天...(咳嗽)
大夫:不用說了,我知道了。(從桌子下面拿出一個(gè)大盒子,放在桌子上)我看你適合吃這種藥。這是本院獨(dú)家開創(chuàng)的哮喘新藥“咽喉糖漿”,療程短,見效快,一個(gè)療程吃3盒,平均每天只需花費(fèi)3塊錢。給你先開6盒吧!(邊說邊開藥方)
馮大勇非常驚訝地瞪大眼睛并止不住地彎腰大聲咳嗽,以至于把魚刺都咳出來了。馮大勇從口里掏出一條巨型魚刺,遞給醫(yī)生。醫(yī)生見到魚刺先是吃驚,而后又非常尷尬。
醫(yī)生不了解病人的需求就用藥,是草菅人命;銷售員不了解客戶的需求就進(jìn)行推銷,不僅自己要徒勞無功地浪費(fèi)很多口舌,更重要的是完不成銷售的目標(biāo)。給客戶 推銷軟件產(chǎn)品,也相當(dāng)于醫(yī)生給病人治病,應(yīng)當(dāng)首先充分、全面地了解客戶的需求所在、期望所在,然后才能帶給他一個(gè)完美的解決方案。
需求分析沒有做好的后果一般會(huì)有下列現(xiàn)象:
1、浪費(fèi)時(shí)間和資源來滿足用戶并不需要的需求(過度實(shí)現(xiàn)一些功能);
2、開發(fā)出來的產(chǎn)品技術(shù)上先進(jìn),但不滿足用戶需求;
3、總是需要比較長(zhǎng)的時(shí)間來達(dá)成對(duì)產(chǎn)品設(shè)計(jì)的共識(shí);
4、在產(chǎn)品設(shè)計(jì),開發(fā)和測(cè)試工作中對(duì)于用戶需求的解釋不一致;
5、員工會(huì)厭倦因需求不斷被重新解釋而導(dǎo)致的返工;
6、未說明的或不正確的需求會(huì)導(dǎo)致員工與用戶間的不滿;
7、不穩(wěn)定的產(chǎn)品,用戶的不滿意對(duì)我們未來的市場(chǎng)造成損失;
8、浪費(fèi)時(shí)間,增加成本,使得在一些投標(biāo)的項(xiàng)目中不能低價(jià);
1、如果你在編碼的時(shí)候發(fā)現(xiàn)某幾行有誤,那么改掉這幾行就行了。而如果在編碼階段發(fā)現(xiàn)需求有誤,那么你很可能需要改變所有代碼來適應(yīng)新的需求
2、在需求階段消除問題的代價(jià)最小,而如果需求問題等到產(chǎn)品發(fā)布出去后才發(fā)現(xiàn)的話,那修復(fù)的成本就會(huì)N倍的增加。
3、穩(wěn)定的需求是軟件開發(fā)的關(guān)鍵。有了穩(wěn)定的需求,軟件開發(fā)工作可能從結(jié)構(gòu)設(shè)計(jì)到詳細(xì)設(shè)計(jì)到代碼到測(cè)試都會(huì)平穩(wěn)順利的進(jìn)行。
為什么要做需求分析
1、“決策性”--要不要做這個(gè)產(chǎn)品,通過對(duì)市場(chǎng)需求的分析來決策項(xiàng)目是否需要立項(xiàng);
2、“方向性”--良好的需求分析可以對(duì)項(xiàng)目人員明確方向,讓項(xiàng)目成員知道下面應(yīng)該如何實(shí)施;
3、“策略性”--既然知道了為什么要做需求分析,就需要了解什么是需求分析,及如何做。需求分析并不是簡(jiǎn)單的對(duì)與錯(cuò),比如說做一個(gè)產(chǎn)品,“做技術(shù)最先進(jìn)的軟件,還是做最好賣的軟件”,這個(gè)需求有錯(cuò)嗎,沒有,只能說需要從不同的地方去考慮,去定位。如何進(jìn)行需求分析
“ 需求分析”不代表“用戶要求什么就是什么”也不代表“我們能做什么就做什么”,做為需求人員,在進(jìn)行需求分析的時(shí)候,首先應(yīng)該明白用戶的需求,然后再加上 自己的分析處理過程,知道哪些我們現(xiàn)在能做,哪些我們做不了,哪些我們咬咬牙齒能做,需求人員在做需求分析的時(shí)候不能一味的成為客戶的傳話筒,要有自己的 分析。
一般可以從三個(gè)方面去考慮:
1、功能需求--產(chǎn)品應(yīng)該完成哪些功能,即向用戶提供的功能,一般來說這個(gè)都是比較硬性的標(biāo)準(zhǔn);
2、非功能性需求--用戶可能不能明確告訴你的一些需求,比如說性能達(dá)到什么要求,可靠性方面,響應(yīng)時(shí)間,擴(kuò)展性,性能方面等,這塊的內(nèi)容并不 是說用戶需要,而是說不知道需要做成什么樣的,我們不能不做,做了只會(huì)對(duì)自己受益。要不然等到后期用戶使用感覺這慢,那不爽,那倒霉的還是是自己;
3、限制條件--在需求分析中需要考慮一些條件約束,規(guī)則等,比如客戶的約束,行業(yè)的約束,法律的約束以及自己的約束等,這些都需要在需求分析考慮清楚,要不然做出一款白人狂毆黑人的游戲給黑人玩,那就慘了……
測(cè)試需求分析的步驟
1 、 熟悉需求背景及商業(yè)目標(biāo):
a) 了解清楚項(xiàng)目發(fā)起的原因,是為了解決用戶的什么問題。
b) 當(dāng)前的解決方案是不是最優(yōu)的,為什么會(huì)這樣做?
2 、業(yè)務(wù)模型法:
a) 考慮本項(xiàng)目與外部系統(tǒng)的交互,劃分系統(tǒng)邊界(除了本項(xiàng)目的需求中要求做的事情,其他的都可以是外部系統(tǒng),本系統(tǒng)和外部系統(tǒng)之間的交互就是系統(tǒng)的邊界),可以參考系統(tǒng)分析說明書。
b) 確定測(cè)試范圍和關(guān)注點(diǎn)。系統(tǒng)的邊界是測(cè)試的重點(diǎn),特別需要關(guān)注邊界交互時(shí)的數(shù)據(jù)交互。
3 、業(yè)務(wù)場(chǎng)景法:
a) 考慮用例的調(diào)用者;考慮每一個(gè)用例提供的服務(wù)是供哪些外部用例或者系統(tǒng)調(diào)用,找出所有的調(diào)用者。調(diào)用的前提、約束都要考慮。每一個(gè)調(diào)用都可以考慮成一個(gè)大的業(yè)務(wù)流程。(一般和外部有交互的用例出錯(cuò)的概率比較大,需要重點(diǎn)關(guān)注)
b) 考慮系統(tǒng)內(nèi)部各個(gè)用例之間的交互,形成內(nèi)部業(yè)務(wù)流程圖。需要分析每個(gè)用例之間的約束關(guān)系、執(zhí)行條件,組織出各種業(yè)務(wù)流程圖。
4 、功能分解法
a). 業(yè)務(wù)功能:與用戶實(shí)際業(yè)務(wù)直接相關(guān)的功能 或細(xì)節(jié)。
b). 輔助功能:輔助完成業(yè)務(wù)功能的一些功能或者是細(xì)節(jié),比如,設(shè)置過濾條件。
c). 數(shù)據(jù)約束:功能的細(xì)節(jié),主要是用于控制在執(zhí)行功能時(shí),數(shù)據(jù)的顯示范圍、數(shù)據(jù)之間的關(guān)系等。
d). 易用性需求:功能的細(xì)節(jié),產(chǎn)品中必須提供了,便于功能操作使用的一些細(xì)節(jié),比如快捷鍵就是典型的易用性需求。
e). 編輯約束:功能的細(xì)節(jié),在功能執(zhí)行時(shí),對(duì)輸入數(shù)據(jù)項(xiàng)目的一些約束性條件,比如只能輸入數(shù)字。
f). 參數(shù)需求:功能的細(xì)節(jié),在功能中,需要根據(jù)參數(shù)設(shè)置不同,進(jìn)行不同處理的細(xì)節(jié)。
g). 權(quán)限需求:功能的細(xì)節(jié),這里的權(quán)限是指在功能的執(zhí)行過程,根據(jù)根據(jù)不同的權(quán)限進(jìn)行不同處理的,不包括直接限制某個(gè)功能的權(quán)限。
某日,老師在課堂上想考考學(xué)生們的智商,就問一個(gè)男孩:“樹上有十只鳥,開槍打死一只,還剩幾只?”
男孩反問:“是無聲槍么?”
“不是。”
“槍聲有多大?”
“80~100分貝。”
“那就是說會(huì)震的耳朵疼?”
“是。”
“在這個(gè)城市里打鳥犯不犯法?”
'不犯。“
“您確定那只鳥真的被打死啦?”
“確定。”老師已經(jīng)不耐煩了,“拜托,你告訴我還剩幾只就行了,OK?”
“OK。鳥里有沒有聾子?”
“沒有。”
“有沒有關(guān)在籠子里的?”
“沒有。”
“邊上還有沒有其他的樹,樹上還有沒有其他鳥?”
“沒有。”
“方圓十里呢?”
“就這么一棵樹!”
“有沒有殘疾或餓的飛不動(dòng)的鳥?”
“沒有,都身體倍棒。”
“算不算懷孕肚子里的小鳥?”
“都是公的。”
“都不可能懷孕?”
“………,決不可能。”
“打鳥的人眼里有沒有花?保證是十只?”
“沒有花,就十只。”
老師腦門上的汗已經(jīng)流下來了,下課鈴響起,但男孩仍繼續(xù)問:“有沒有傻的不怕死的?”
“都怕死。”
“有沒有因?yàn)榍閭H被打中,自己留下來的?”
“笨蛋,之前不是說都是公的嘛!”
“同志可不可以啊!”
“…………,性取向都很正常!”
“會(huì)不會(huì)一槍打死兩只?”
“不會(huì)。”
“一槍打死三只呢?”
“不會(huì)。”
“四只呢?”
“更不會(huì)!”
“五只呢?”
“絕對(duì)不會(huì)!!!”
“那六只總有可能吧?”
“除非你他媽的是豬生的才有可能!”
“…好吧,那么所有的鳥都可以自由活動(dòng)么?”
“完全可以。”
“它們受到驚嚇起飛時(shí)會(huì)不會(huì)驚慌失措而互相撞上?”
“不會(huì),每只鳥都裝有衛(wèi)星導(dǎo)航系統(tǒng),而且可以自動(dòng)飛行。”
“恩,如果您的回答沒有騙人,”學(xué)生滿懷信心的回答,“打死的鳥要是掛在樹上沒掉下來,那么就剩一只,如果掉下來,就一只不剩。”
老師當(dāng)即倒!先看一段關(guān)于日志文件的需求描述如下:“軟件要將所有的訪問者都要記錄下來,對(duì)每次訪問要記錄訪問開始時(shí)間、訪問結(jié)束時(shí)間、訪問者的IP地址這三個(gè)信息作為一條日志記錄。要求以天為單位每天生成一個(gè)訪問記錄日志文件。
在這段需求描述中,我們首先要想象自己是日志模塊的開發(fā)者,根據(jù)這段需求描述,是否能夠開發(fā)出日志模塊來呢?日志文件要記錄的信息內(nèi)容上面都提到了:訪問開始時(shí)間、結(jié)束時(shí)間、IP地址。乍一看好像可以根據(jù)這個(gè)需求描述進(jìn)行開發(fā)。
但仔細(xì)來分析一下這段需求的話,就會(huì)發(fā)現(xiàn)并不是想象的那樣樂觀。先找出需求中涉及的三個(gè)顯性元素:
1、訪問者
2、訪問記錄
3、日志文件
首先對(duì)訪問者和訪問記錄這兩個(gè)元素進(jìn)行分析,先看訪問者有那些屬性,除了描述中提及的訪問時(shí)間和IP地址外,訪問者還有那些屬性呢?顯然訪問者 的訪問內(nèi)容是最重要的屬性,僅記錄訪問時(shí)間和訪問者的IP地址是否足夠呢,從日志能分析出什么有用的信息呢?從時(shí)間信息上最多只能看出那段時(shí)間訪問的人數(shù) 較多,得到用戶的時(shí)間分布規(guī)律,但很難對(duì)用戶的行為有深入的分析,只有知道訪問者在訪問那些內(nèi)容才能得到更有價(jià)值的信息。象Web服務(wù)器軟件要記錄下訪問 的URL信息以便知道訪問者訪問的內(nèi)容,所以訪問記錄中遺漏了關(guān)于訪問內(nèi)容的信息。
從訪問記錄這個(gè)元素來分析,訪問記錄主要屬性是記錄格式,每條記錄是以什么格式來記錄呢?沒有描述出來。有經(jīng)驗(yàn)的開發(fā)者就知道日志記錄格式是一 個(gè)很重要的問題,因?yàn)槿罩居涗浀姆治鲆话闶切枰褂脤iT的分析軟件或者寫專門的分析程序來分析的。如何設(shè)計(jì)合理的記錄格式來利用已有的日志分析軟件來進(jìn)行 分析是首要考慮的問題。
再對(duì)日志文件這個(gè)元素進(jìn)行分析,先看看日志文件有那些屬性,首先日志文件具有文件名,還有存放位置,文件格式,文件內(nèi)容、文件創(chuàng)建時(shí)間、文件大小、文件權(quán)限等屬性。
需求描述中提到了每天要生成一個(gè)日志文件,從文件創(chuàng)建時(shí)間屬性來看,每天有24小時(shí),到底從什么時(shí)候開始創(chuàng)建文件,從0點(diǎn)開始還是從幾點(diǎn)開始,沒有描述出來。
---從文件名屬性來看,如何命名日志文件,需求中也沒有提及。從存放位置屬性來看,日志文件存放在什么地方也沒有說明。是不是所有的日志文件都存放在應(yīng)用程序同一子目錄下?
---從文件格式屬性來看,首先日志文件是以文本方式存儲(chǔ)還是以二進(jìn)制格式存儲(chǔ)?再者,文件的內(nèi)容是以何種格式記錄,每條訪問記錄間如何分隔,是以回車換行作為分隔還是以其他字符作為分隔?都沒有描述。
---從文件內(nèi)容屬性來分析,除了存放上述描述的內(nèi)容外,是否還可以保存其他內(nèi)容,如果不能保存其他內(nèi)容的話,需求描述中應(yīng)該加上一句”日志文件中只能存儲(chǔ)訪問記錄信息,不得儲(chǔ)存其他記錄信息“。
---從文件大小屬性來分析,日志文件的大小有沒有限制?如果某天處于訪問高峰期,訪問特別多,是否需要將日志文件分拆成多個(gè)是一個(gè)需要考慮的問題。
---從文件權(quán)限屬性來分析,日志文件是否機(jī)器上的所有用戶都可以訪問還是只有特定的用戶可以訪問?文件是否需要設(shè)置權(quán)限是一個(gè)需要考慮的問題。
所以在對(duì)上述需求描述進(jìn)行分析后,你會(huì)發(fā)現(xiàn)需求描述中有很多的問題沒有描述清楚。也許有人會(huì)有疑問,如果將所有上面說到的問題都描述出來的話會(huì) 不會(huì)工作量太大了??jī)H從需求分析的角度來講,需求規(guī)格描述得較細(xì)的話確實(shí)會(huì)增大很多工作量,但從整個(gè)開發(fā)過程來看,需求描述完整的話,后續(xù)階段的開發(fā)產(chǎn)生 歧義和遺漏的可能性就很小,實(shí)際上后續(xù)階段節(jié)約的時(shí)間會(huì)大大超過需求所多花的時(shí)間。
測(cè)試人員在需求階段應(yīng)做哪些工作
1)首先,測(cè)試用例和測(cè)試工作本身是不斷完善的,在開發(fā)過程的初期,可以認(rèn)為是需求階段,或者沒有規(guī)范需求工作的設(shè)計(jì)階段。如果有一個(gè)比較明確的需求文檔,可以在這個(gè)階段檢查完了需求文檔以后開始設(shè)計(jì)測(cè)試用例。這里,對(duì)于需求文檔的檢查主要是兩個(gè)方面:
---檢查需求文檔描述的正確性,測(cè)試人員要對(duì)于真實(shí)的系統(tǒng)所涉及的業(yè)務(wù)非常熟悉,比如一個(gè)簡(jiǎn)單的財(cái)務(wù)軟件,那么測(cè)試人員本身就要對(duì)會(huì)計(jì)工作熟 悉,財(cái)務(wù)制度熟悉,在檢查需求文檔的時(shí)候不要迷信所謂的”都是用戶真實(shí)的需求“,這里存在兩個(gè)問題,一是用戶是否真的能正確地描述自己的需求,二是需求人 員是否真的能正確地理解需求。另外,還有一個(gè)用戶的需求是否符合行業(yè)規(guī)范的問題,如果不符合,那么是否要確認(rèn)--這里存在一個(gè)隱患,用戶可能會(huì)在開發(fā)的后 期突然要求他們自己要走行業(yè)規(guī)范,讓你的需求變動(dòng),所以要事先明確好。
---檢查需求文檔描述的準(zhǔn)確性。主要是考慮文檔中是否存在描述的模糊的地方,對(duì)于自己不清楚的問題一定要明確。這個(gè)時(shí)候是要保證需求的可測(cè)試性--我的意思是說保證需求是可以完全為測(cè)試工作服務(wù)的。
2)那么在檢查完了需求之后,就可以開始設(shè)計(jì)測(cè)試用例了,在這個(gè)階段因?yàn)闆]有開始設(shè)計(jì)工作,所以對(duì)于測(cè)試用例的考慮不能僅僅從界面出發(fā),而應(yīng)該從業(yè)務(wù)角度出發(fā),從實(shí)際業(yè)務(wù)出發(fā)來設(shè)計(jì)測(cè)試用例。
當(dāng)然,這個(gè)階段所設(shè)計(jì)的測(cè)試用例是不夠完善的,只能涵蓋某些內(nèi)容,但是我認(rèn)為這些用例不僅僅全部都是功能測(cè)試用例,而且在整個(gè)項(xiàng)目中都將有效。 。
3)不過,當(dāng)缺少需求文檔時(shí),那就要發(fā)揮測(cè)試人員自己的能動(dòng)性了,要主動(dòng)的工作,而不是被動(dòng)的等待。要自己嘗試著去熟悉實(shí)際業(yè)務(wù),要盡量通過自己所能想到的方法來開展工作。
posted on 2013-05-20 10:41 順其自然EVO 閱讀(2272) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄 、defalut managerment system 缺陷管理系統(tǒng)