1. 程式人生 > >java版本-API介面測試框架搭建

java版本-API介面測試框架搭建

基本概念:testng ,http, json, mysql, jenkins, spring

陸陸續續搭建起來的介面測試框架,使用起來並不是特別的理想,所以走上了一條迭代優化的不歸路
所謂的框架是指,用例的組織,批量執行,測試報告,引數化配置。

測試框架應該提供哪些功能?

單個功能點的測試
多個用例的組織
日誌記錄
報告展示

1.0需求: http請求傳送, json解析, json格式校驗, 資料庫資料訪問,持續整合部署。
2.0需求: motan協議測試,dubbo協議測試,mq測試

http請求傳送

HttpClient自己封裝-----醜
unirest–還是不理想
rest-assured—目前的解決方案

json解析

fastjson

json格式校驗

json schema

資料庫訪問和sql執行

jdbc

持續整合,用例的批量執行

jenkins,mvn test

testng

很好的測試框架
監聽器:通過監聽器實現失敗用例重跑,實現用例執行結果入庫,失敗用例釘釘群告警。
註解
依賴注入:testng + spring 實現依賴注入。
斷言檢查: assertj

springboot 用例服務平臺後端使用springboot

JSON api
mybatis mapper封裝增刪查改,需要手動寫的是多表和複合查詢

react + antd 用例服務平臺前端使用react搭建

搜尋表單
新增和修改Modal框
刪除按鈕
表格:分頁器,total, pageSize, pageNum
圖表展示

日誌記錄

apache的log4j是日誌的一種實現

import org.apache.log4j.Logger;
private static Logger log = Logger.getLogger(XXX.class);

log4j.properties檔案
### 設定###
log4j.rootLogger = info,stdout,D,E

### 輸出資訊到控制擡 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 輸出DEBUG 級別以上的日誌到= logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 輸出ERROR 級別以上的日誌到 logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

為什麼要用java來做介面測試?主要是公司服務端是java的,考慮到可以複用服務端程式碼,以及後續非http協議的介面的測試,所以選擇了java。對於java真的是又愛又恨,愛她的強大,恨她的繁瑣。