希望在手動測試和自動化測試中建立一個橋梁,利用手動測試産生的結果,來自動生成測試用例。
通過監控手動測試的結果,我們可以對手動測試的結果進行分析,得到請求的條件以及傳回的結果。
通過泛化請求條件,例如:邊界值,等價值,安全測試等,我們可以自動生成更多的測試用例。
通過自動生成的測試用例,我們可以得到傳回結果,以及預期的結果,以及判斷對錯。
python 3.7 pip install mitmproxy pymysql
mysql , gencase.sql 在 test資料庫 建proxyed,gencase 兩張表
修改 record.py 中的 live.kuaishou.com/rest/ 為你需要測試的應用中的伺服器url
def response(flow):
response =flow.response
if ‘live.kuaishou.com/rest/’ in flow.request.url:
2- python3 runproxy.py , 在8888 端口上啟動http/https 代理
3- 在手機上或者PC 上為http/https請求設定mitmproxy 代理
設定mitmproxy 代理方法請參考: 參見(https://www.jianshu.com/p/0cc558a8d6a2)
手機上手動測試web和app應用。 系統會在背景記錄請求。
APP ---- mitmproxy ---- web server
| record.py
mysql.proxyed
| gencase.py
mysql.gencase
| runcase.py
測試結果
對伺服器的請求,包括header,url , method,cookie,data
根據記錄的請求參數的類型,為每個參數生成不同的資料值,組合為測試用例。
目前支援的POST請求資料有 form-data, json, plaintext,
取出産生的測試用例,生成伺服器請求,向伺服器發送請求。
mysql接口函數
測試用例生成政策函數庫
這個版本僅對數字類型取值和字元串類型取值進行了資料的簡單擴充。
見 testcaselib.py ,對測試用例測擴充 主要修改這個檔案即可。
數字擴充為:
def extendcase_digital():
max32= 1024102410244-1
max64 = (max32+1)(max32+1)-1
return (0,max32,max64,-max32,-max64)
字元串擴充為:
def extendcase_str():
snull = ‘’
s1k = ‘a’*1024
s1M = 'a’10241024
return (snull, s1k)