企業(yè)頭像logo設計免費seo免費入門教程
目錄:導讀
- 前言
- 一、Python編程入門到精通
- 二、接口自動化項目實戰(zhàn)
- 三、Web自動化項目實戰(zhàn)
- 四、App自動化項目實戰(zhàn)
- 五、一線大廠簡歷
- 六、測試開發(fā)DevOps體系
- 七、常用自動化測試工具
- 八、JMeter性能測試
- 九、總結(尾部小驚喜)
前言
json模塊的使用
字典是一種存儲類型,json是一種格式(完全不同);
json.loads()函數(shù)是將json字符串轉化為字典(dict);
json.dumps()函數(shù)是將字典轉化為json字符串;
json.dump()和json.load()主要用來讀寫json文件函數(shù);
接口自動化測試概敘
什么是接口測試:
前后端不分離:淘寶網(wǎng)站(響應的數(shù)據(jù)在頁面,訪問響應的數(shù)據(jù)是html的)返回的是一整個html(做接口難,需要解析數(shù)據(jù),因為返回的是整個html代碼)
前后端分離,前端和后端通過api(接口交互),返回的只是數(shù)據(jù)本身(App可能并不需要后端返回一個HTML網(wǎng)頁)
(市面上主流項目前后端分離走json格式的)
發(fā)請求以json數(shù)據(jù)格式返回的,通過api接口協(xié)議前后端進行交互的
前端頁面
安卓或者ios app,網(wǎng)頁統(tǒng)層為前端展示(數(shù)據(jù)展示和用戶的交互),
前端框架:html,js,css,vue(展示漂亮),nodejs
后端
后臺數(shù)據(jù)處理,校驗,下訂單等等業(yè)務處理(c語言,c++,java(大型都走java),go,python)
前端和后端的數(shù)據(jù)交互(接口)通過接口
有些問題前端可能屏蔽,但是后端沒有做限制,校驗都沒有做的,繞過前端,抓包發(fā)請求的方式攻破后端,項目可能出現(xiàn)問題
接口的概念
接口是應用程序之間的相互調用
接口是實體或者軟件提供給外界的一種服務
軟件接口:api,微信提現(xiàn)調用銀聯(lián)的接口實現(xiàn)數(shù)據(jù)交互
一種是內(nèi)部接口:
方法與方法之間的交互;模塊與模塊之間的交互
另一種調用對外部包裝的接口
web接口:http,https,webserver(目前大多做web接口)
應用程序接口:soket接口,走的tcp/ip協(xié)議的
數(shù)據(jù)庫接口:
常用的接口方式(協(xié)議)
webservice :走soap協(xié)議通過http傳輸,請求報文和返回報文都是xml格式的,xml格式(soapui抓包)老項目(政府和銀行)
還要解析數(shù)據(jù),麻煩,而且速度可能有降低,通信比較嚴格
http協(xié)議:超文本傳輸協(xié)議(百分之70-80都走的http協(xié)議) get post delete put四種主要的請求方式
https協(xié)議:并非是應用層的一種新協(xié)議,只是http通信接口部分用ssl和tls協(xié)議代替而已
接口測試
項目需需求 :
案例:一個登錄接口
場景:產(chǎn)品上規(guī)定用戶名6-10個字符串下劃線
測試人員在前端做了校驗,通過
后端開發(fā)人員沒有做校驗
風險:直接抓包取篡改你的接口,然后繞過驗證,通過sql注入直接隨意登錄
危害:公司損失
接口測試是市場的主流需求
接口測試目標
可以發(fā)現(xiàn)客戶端沒有發(fā)現(xiàn)的bug,(隱藏的bug)(提交訂單,前端屏蔽了后端沒有,可以隨便亂填的)
及早爆出風險(保證質量正常上線)
接口穩(wěn)定了,前端隨便改
最重要加內(nèi)存系統(tǒng)安全性,穩(wěn)定性
接口自動化測試概敘(怎么做) (接口跑的是協(xié)議層。ui定位的是元素)
項目業(yè)務(了解項目業(yè)務);
接口文檔(api文檔);
接口用例;
自動化腳本(根據(jù)接口文檔和接口用例);
pytest框架(重點);
調試執(zhí)行(重點);
allure報告;
結果分析;
持續(xù)集成;
fiddler(抓包工具的使用)
fidder的使用技巧(能抓包,查看抓包數(shù)據(jù)):
能抓取https要設置證書:(免費的,開源的,能抓很多對應消息,app的也可以)
fidder是一款免費,靈活,操作簡單,功能強大的http代理工具,是目前最常用的http抓包工具之一
可以抓取所有的http/https包,過濾會話,分析請求詳細內(nèi)容,偽造客戶端請求,篡改服務器響應,重定向,網(wǎng)絡限速,斷點調試等功能
fiddler的工作原理:
正向代理(正向代理服務器,通過瀏覽器發(fā)送請求以前是直接發(fā)給服務器,fidder轉發(fā)(代理服務器),瀏覽器請求發(fā)給fidder代理服務器,fidder代理服務器轉發(fā)給服務器,服務器數(shù)據(jù)轉發(fā)給fidder代理服務器,代理服務器發(fā)給瀏覽器
正向代理:
轉發(fā)瀏覽器的請求和響應,抓包工具 對客戶端透明
反向代理:
nginx——負載均衡的——性能 一個服務器
tomcat db(現(xiàn)在用戶級別很大,一個tomcat搞不定,需要幫手,三個tomcat分擔流量(怎么協(xié)調加nginx–負載均衡))
瀏覽器發(fā)請求過來,不知道請求發(fā)給誰,請求量很大,通過nginx把請求分發(fā)到各個tomcat里面去,避免的一個tomcat承受不住
接口測試數(shù)據(jù)格式
接口自動化測試數(shù)據(jù)源(測試用例來源哪里)測試用例一般存放在哪里?
excel測試用例;yaml格式用例;csv
自動化腳本中的數(shù)據(jù)類型:
表單格式:
[urlencoded格式]:又叫form格式,或者是x-www-form-urlencoded格式(type類型為表單形式,傳數(shù)據(jù)表單形式)
表單格式是鍵值對組成的,鍵和值之間用=,多個值之間用& 如:name=zhengsan&age=16
json格式(str字符串:鍵值對類型的字符串)
json有對象,數(shù)組兩種結構,有字符串,數(shù)字,邏輯值,空值四種數(shù)據(jù)類型
用大括號{}表示對象,對象由屬性組成的,屬性由鍵值對組成的,鍵和值用冒號隔開,屬性之間用逗號隔開,鍵必須用雙引號引起來
用中括號[]表示數(shù)組,數(shù)組由單獨的值組成
json靈活,json可以嵌套
加密的token(token加密+上傳文件接口)
上傳文件接口請求頭需要Cookie: token=通過獲取 token 接口獲取(cookie里面放sessionid還是token都可以,看開發(fā)和接口文檔)如果判斷不了,可以使用fiddler抓個包查看
import requests, json
import hashlib # 這是加密庫def get_md5_data(psw): # MD5加密--password String md5(‘zr’+111111 +‘hg’)password = f"zr{psw}hg"md5 = hashlib.md5() #1:創(chuàng)建一個md5對象 md5.update(password.encode("utf-8")) #2:完成加密,updata方法加密 對象.方法(需要加密的對象.encode("utf-8")),加密時候最好設置編碼# 對字符串進行編碼后再進行一個加密# md5(b"zr111111hg") #也可以傳二進制數(shù)據(jù)直接進行編碼:如下# import hashlib# md5 = hashlib.md5()# md5.update(b'zr11111111hg')# print(md5.hexdigest())# 方法二:一行也可以寫# print(hashlib.md5(b'zr11111111hg')).hexdigest()---這樣寫也可以,(傳bytes類型??梢赃@么寫)# 3要輸出結果,returnreturn md5.hexdigest()# 1:獲取接口需要的token
HOST = "http://121.41.14.39:2001"def get_token(inname, inpsw):token_url = f"{HOST}/token/token" # urlheader = {"Content-Type": "application/x-www-form-urlencoded"} # 請求頭,封裝成字典# password String md5(‘zr’+111111 +‘hg’)----password需要md5加密# 打開md5加密網(wǎng)頁(百度查詢) 把“zr111111hg”加密碼提取出來:5c4fcc5add5d087de1e8534189c687f7# md5加密網(wǎng)站;http://tools.jb51.net/password/CreateMD5Password/payload = {"mobile": inname, "password": get_md5_data(inpsw)}reps = requests.post(token_url, data=payload, headers=header)return reps.json()["data"] # 這里的data就是我們要的token# 2:文件上傳接口
# post方法,文件上傳接口,先抓個包
# Content-Type: multipart/form-data; boundary=WebKitFormBoundaryLpsjAVSe95yonybu--文件上傳有個隨機參數(shù)boundary,算法可以做
# 做文件接口一般不帶這個type,也不帶頭,除非真的校驗,要去找對應的算法---麻煩(傳type會有問題)# 文件body---
# ------WebKitFormBoundaryLpsjAVSe95yonybu
# Content-Disposition: form-data; name="file"; filename="QQ圖片20201009011422.png"
# Content-Type: image/png
# name="file"---你傳給那個變量,文件名
# filename="QQ圖片20201009011422.png"---文件對象
# Content-Type: image/png 文件類型
# 文件不要寫絕對路徑(寫相對路徑)---不然代碼移植很麻煩
def file_doUpload():file_url = f"{HOST}/user/doUpload"# {變量:(文件名,文件對象,文件的類型)} ----文件對象需要open打開,open函數(shù)返回文件對象---文件對象有三個部分# 文件的打開不能用read,會亂碼,只能用rb模式打開,二進制模式打開,讀出是bytes字節(jié)的# 傳文件的話一般這樣做的需要--文件變量(文件對象)--組裝好payload = {"file": ("QQ圖片20201009011422.png", open("../data/QQ圖片20201009011422.png", "rb"), "jpg/png/gif")}reps = requests.post(file_url, files=payload)print(reps.json())file_doUpload()
下面是我整理的2023年最全的軟件測試工程師學習知識架構體系圖 |
一、Python編程入門到精通
二、接口自動化項目實戰(zhàn)
三、Web自動化項目實戰(zhàn)
四、App自動化項目實戰(zhàn)
五、一線大廠簡歷
六、測試開發(fā)DevOps體系
七、常用自動化測試工具
八、JMeter性能測試
九、總結(尾部小驚喜)
奮斗是航行人生的船,努力是驅動前行的風。不論起點如何,只要心懷夢想,堅定追求,每一次的努力都將鑄就更好的自己。相信自己的能力,勇往直前,讓奮斗點亮人生的星辰!
在奮斗的路途上,挫折與失敗只是磨礪,永不放棄是最大的勇氣。用努力與智慧,點亮心中的火焰,不斷追求卓越。相信自己的潛力,堅持奮斗,才能開啟屬于自己的輝煌之門!
沒有所謂的天生成功,只有不斷努力的奮斗。不要被困境所壓倒,要相信自己的堅持與才華。勇往直前,追逐夢想,每一次的奮斗都是成就的催化劑,讓我們用汗水書寫輝煌的篇章!