結(jié)束篇:
Fitnesse是一個(gè)有著非常好的創(chuàng)意的軟件。它試圖拉近開(kāi)發(fā)者與用戶(hù)的距離。通過(guò)前面的介紹,大家可能也看出來(lái)了,其實(shí)最終還是要落實(shí)到編碼(fixture)上。這些編碼一般來(lái)說(shuō)要由測(cè)試人員來(lái)寫(xiě)。那么就引發(fā)了我的一些思考:
一、有沒(méi)有必要對(duì)每個(gè)需求都制定驗(yàn)收“表格”。如果這樣做,就意味著要寫(xiě)非常非常多的fixture。寫(xiě)這些代碼需要花費(fèi)相當(dāng)?shù)臅r(shí)間,而時(shí)間是昂貴的成本。在能取得大體相同的效果時(shí),有沒(méi)有成本更少的辦法?
二、這些代碼本身是否存在bug,調(diào)試這些代碼以及日后維護(hù)這些代碼是否還要付出更多的成本?――我曾經(jīng)很熱衷于自動(dòng)化測(cè)試工作的推進(jìn),但是后來(lái)我觀察到,如果一段自動(dòng)化測(cè)試代碼寫(xiě)出來(lái)僅僅執(zhí)行幾次就完了,那么這種自動(dòng)化我認(rèn)為完全沒(méi)有意義。
三、所以,我的觀點(diǎn)是自動(dòng)化只用在那些需要大量回歸、功能固定、相對(duì)底層的測(cè)試上就好了,測(cè)試代碼要盡量的簡(jiǎn)單;盡量不要增加復(fù)雜的邏輯;盡量通用以提高利用率;所花費(fèi)的時(shí)間要盡量少。
基于以上理解,我這里給出一個(gè)通用的fixture和fitnesse表格,此表格在我公司主要用于接口測(cè)試,當(dāng)然也可以用于一般性的頁(yè)面檢查。實(shí)際運(yùn)行將近兩年了,效果還可以。fitnesse內(nèi)置的一些fixture應(yīng)該有類(lèi)似功能,但我覺(jué)得查找和學(xué)習(xí)使用的時(shí)間可能比自己寫(xiě)更長(zhǎng),就自己寫(xiě)了。
calis.http.Exist |
||
start url |
key words |
verify? |
http://cn.bing.com/search?q=%E4%B8%AD%E5%9B%BD |
中國(guó)/中華人民共和國(guó) |
ok |
http://www.126.com |
郵箱帳號(hào)登錄/動(dòng)態(tài)密碼登錄 |
ok |
…… |
…… |
ok |
使用也很簡(jiǎn)單,在start url輸入地址,檢查返回的字符串中是否全部包含了key words指定的字符串。每個(gè)字符串用/分隔。如果全部包含了返回ok,未全部包含返回NoExist。盡管很簡(jiǎn)單,但非常通用,可以用于檢測(cè)一切支持REST請(qǐng)求而返回的html、xml、json等。
上述代碼中已知的問(wèn)題有:
1.對(duì)非utf-8格式的返回不支持
2.只支持“與”檢查,不支持關(guān)鍵字的其他邏輯關(guān)系
3.未對(duì)html上的轉(zhuǎn)義符做處理,比如在頁(yè)面上顯示為<,其實(shí)編碼是<,那么需要檢查<而不是<
4.未對(duì)start url做編碼處理,比如有空格會(huì)導(dǎo)致異常。此時(shí)需要手工修改為%20等。
5.由于關(guān)鍵字是由/分隔,那么檢測(cè)返回值中是否含有/是做不到的。
鑒于我一向堅(jiān)持的觀點(diǎn)――測(cè)試代碼要盡量簡(jiǎn)單,我無(wú)意改進(jìn)這些內(nèi)容。