實(shí)現方案:
實(shí)現架構非常簡(jiǎn)單,就是一套開(kāi)源的ELK日志采集架構,加上python開(kāi)發(fā)的接口測試框架和結果統計功能,如下圖所示:
主要步驟如下:
1,通過(guò)開(kāi)源ELK實(shí)現應用日志的采集與管理。在客戶(hù)端部署logstash agent,并配置日志采集策略;日志記錄以key-value的格式上送REDIS內存數據庫,這個(gè)設計主要是為了在client和server之間做一個(gè)緩沖,保證了日志記錄的0丟失;ELSTICSEARCH提供了日志的全文檢索功能,并提供了API服務(wù)用來(lái)外部調用
2,利用python的pyes庫調用ELSATICSEARCH的API服務(wù),根據特征字段抓取xml和json格式的接口報文。
3,對采集到的接口報文進(jìn)行格式化處理,格式化日期、流水號或時(shí)間戳等字段,并對格式化后的報文做MD5的校驗。
4,利用python的http和socket接口庫實(shí)現接口測試案例,這里可能要根據不同應用做一些客戶(hù)化,盡量通過(guò)通用的方式實(shí)現。
5,對于異常的測試案例進(jìn)行自動(dòng)退出。為了保證案例集的可用性,我們這里做了一個(gè)簡(jiǎn)單的接口退出規則,如果執行超過(guò)三次且每次都失敗的接口案例,會(huì )被系統自動(dòng)定義為失效案例。
6,對案例的執行結果進(jìn)行成功率分析和錯誤歸因分析,最終發(fā)現存在的接口問(wèn)題。這里不再關(guān)注每一個(gè)測試案例返回的成功和失敗,而是針對每一類(lèi)接口的成功率、失敗率和錯誤類(lèi)型進(jìn)行統計,從數值和數量變化的角度去發(fā)現問(wèn)題。
7,接口定義平臺提供了一個(gè)web的接口定義模塊,幫助業(yè)務(wù)測試人員根據接口文檔編輯接口要素,并拼裝成接口報文進(jìn)行測試。對于復雜的交易場(chǎng)景(比如流程長(cháng)或交互次數多),可以在平臺上編排接口的調用順序和前后項邏輯關(guān)系,實(shí)現一個(gè)比較復雜場(chǎng)景的接口測試。雖然這個(gè)功能更偏重于自動(dòng)化測試,但是這個(gè)功能幫助我們實(shí)現了無(wú)法通過(guò)應用前段功能測試覆蓋的接口測試,是非常好的補充。
通過(guò)上述方法,我們在一周的時(shí)間里,在3個(gè)應用進(jìn)行了試驗,發(fā)現了30多個(gè)接口,接近2萬(wàn)筆報文案例,案例的有效性可以達到了97%。通過(guò)每日對這些案例進(jìn)行自動(dòng)化測試,發(fā)現了一些接口功能和應用環(huán)境配置的問(wèn)題。
原文轉自:http://blog.tingyun.com/web/article/detail/1340