傳統的接口測試方法主要采用手工編輯接口報文的方法,這種方法只要按照接口文檔的描述構造測試報文就OK了,雖然簡(jiǎn)單,但是有失高效。于是這個(gè)方法有了升級版本,就是通過(guò)參數化報文中的關(guān)鍵字段,批量生成測試案例,這也是接口性能測試的主要方法之一。這個(gè)方法雖然解決了獲取報文的效率問(wèn)題,但是并不能很好解決覆蓋率的問(wèn)題,畢竟報文是人工構造出來(lái)的,并不能非常真實(shí)的體現實(shí)際的業(yè)務(wù)交易場(chǎng)景,實(shí)際測試結果也印證了這一觀(guān)點(diǎn)。于是,我們想既然傳統的接口測試是在正常的業(yè)務(wù)交易測試中覆蓋了,那么我們干脆去直接捕獲前段發(fā)起交易產(chǎn)生的接口消息報文。非常幸運,公司絕大部分的開(kāi)發(fā)部門(mén)都是嚴格按照LOG4J格式記錄應用交易日志的,因此我們只要按照一定的規則去分析應用的交易日志,就能夠提取出我們所需要的內容。
2、消息是否能夠覆蓋所有的程序分支問(wèn)題:
根據消息內容的不同,應用程序會(huì )選擇不同的程序邏輯分支,如何能夠覆蓋所有的分支,傳統方法只有通過(guò)白盒測試實(shí)現,但是驗收測試更偏重于黑盒或灰盒測試,因此過(guò)去經(jīng)常因為測試案例不全面,導致某一個(gè)未覆蓋分支的程序問(wèn)題流入生產(chǎn)環(huán)境。我們目前想到的方法,是通過(guò)在系統中導入存量的接口測試案例,并通過(guò)日志中捕獲的測試案例,經(jīng)過(guò)一段時(shí)間的積累,逐漸形成一個(gè)較為完整的接口測試案例庫。如果能夠旁路一臺生產(chǎn)環(huán)境應用服務(wù)器日志,效果會(huì )更好,畢竟生產(chǎn)的交易種類(lèi)和場(chǎng)景是最全面的,當然這里還要解決生產(chǎn)數據脫敏等問(wèn)題,對于金融行業(yè)還要面對很多制度流程的問(wèn)題。
3、如何判斷消息返回結果的正確性問(wèn)題:
每一個(gè)應用對于接口報文的設計都是遵照一定的規范和習慣,我們只需要梳理出標記交易成功狀態(tài)的字段就可以了。某些交易不包含這個(gè)字段,我們就需要進(jìn)行人工判斷,并對成功的結果進(jìn)行格式化(比如timestamp,流水號等),提取MD5特征值,作為判斷接口后續測試結果正確性的依據。不過(guò),狀態(tài)字段是成功并不代表接口測試通過(guò),畢竟返回結果中還包含了很多業(yè)務(wù)數據字段需要驗證。如果這些字段值變化比較規律(比如一直不變、持續增加或減少),我們準備定義一些模型規則去判斷它們。而那些上躥下跳的數據,那就留給人去判斷了。其實(shí),對于冒煙測試而言,我們認為并不需要苛求去判斷每一筆交易的正確性,只需要統計大量測試案例結果的成功率,并與前期成功率進(jìn)行比較,以判斷測試結果是否正常。
4、執行效率的問(wèn)題
我們理解的冒煙測試是要在盡可能短的時(shí)間內,對新的版本或測試環(huán)境進(jìn)行一個(gè)準入測試,以判斷其是否具有開(kāi)展后續是驗收及適應性測試的條件,因此冒煙測試的效率至關(guān)重要。我們的策略是通過(guò)異步小批量作業(yè)的方式不間斷的掃描日志處理報文,每日定時(shí)并發(fā)的方式去執行測試案例,執行時(shí)間取決于版本安裝時(shí)間或測試任務(wù)的需要,目前2萬(wàn)筆測試案例,基本可以控制在10分鐘之內。
原文轉自:http://blog.tingyun.com/web/article/detail/1340