融界2024年3月15日消息,據國家知識產權局公告,中控技術股份有限公司申請一項名為“web端頁面檢測方法“,公開號CN117707921A,申請日期為2023年9月。
專利摘要顯示,本發明涉及一種web端頁面檢測方法,屬于計算機技術領域,包括:獲取待檢測web端的目標頁面的前端元素;基于操作圖標的類別屬性,獲取與目標頁面關聯的新界面的前端元素,新界面為通過目標頁面中的操作圖標直接及間接調用的新顯示框;基于獲取的目標頁面及新界面的前端元素,獲取待檢測web端頁面中的檢測內容;根據基準文件對檢測內容進行分析,得到檢測結果。本發明的檢測過程中,由于利用前端元素的操作圖標的類別屬性,對各操作圖標的遍歷觸發,從而訪問了各種場景下頁面,實現了待檢測web端的各場景下頁面動態模擬,以在動態模擬變化過程中批量獲取待檢測內容,實現了web端檢測的自動及全面性,最終提升了檢測效率。
本文源自金融界
眾號搜索:TestingStudio 霍格沃茲測試開發的干貨都很硬核
本文霍格沃茲測試學院學員月關學習實踐筆記
因為本章的內容是使用jq工具配合完成,因此在開始部分會先花一定的篇幅介紹jq機器使用,如果讀者已經熟悉jq,可以直接跳過這部分。
先來看應用場景,App 經常會有一些信息展示的列表頁,比如商家的菜品、股票的公司、文章的列表展示等,例如下面這樣:
菜品不夠吃的話~不是,是菜品數量較少不夠測試的量,假如我們想要測試幾百個菜品時,會不會在刷的時候是否有性能影響,展示是否正常,列表展示的邊界值測試等;
而要測就得有數據展示,這個時候要是通過后端去找或者造這么多數據是有點麻煩的,其實我們這個測試的測試點就是要測試前端頁面的展示和性能,只要有這部分數據就可以,無所謂數據是否真實從數據庫得來。
這個時候可以就可以利用mock的手段,對這種大數據進行等價類的生成,使前端可以拿到這類數據即可,而Charles正是我們實現手工mock測試的利器之一!
按慣例,先看官網對jq的解釋:
jq 官網地址:https://stedolan.github.io/jq/
大概意思就是輕量靈活的Json處理命令行。
用途
說到這大概有些人有點感覺它能用來做什么了,為啥手工mock要使用jq了?沒錯!要用它來處理接口返回的json數據以達到mock的效果。
https://stedolan.github.io/jq/download/
最簡單的過濾,.這是一個過濾器,它接受輸入,并將其不變地生成為輸出。
簡單的說就是原樣輸出來:
$ echo '{"jq": "jqTest"}' | jq '.'
{
"jq": "jqTest"
}
可以通過.key或.key1.key2的方式來獲取對應的value,這樣的方式是不是有點像jsonpath?
$ echo '{"jq": {"jqTest": 1} }' | jq '.jq'
{
"jqTest": 1
}
$ echo '{"jq": {"jqTest": 1} }' | jq '.jq.jqTest'
1
$ echo '{"jq": {"jqTest": 1} }' | jq '.["jq"]'
{
"jqTest": 1
}
其實就是在對象過濾的基礎上加個索引而已,學過編程的都懂的~ 左閉右開,當然是針對數組的操縱,這里就以一種對象過濾寫法基礎上舉例子,
.key[index]
$ echo '{"jq": ["jqTest",1] }' | jq '.jq[0]'
"jqTest"
.key[ startIndex: endIndex]
$ echo '{"jq": ["jqTest",1] }' | jq '.jq[0:1]'
[ "jqTest" ]
可以利用{} 、[]構建新的對象(數組)
$ echo '{"jq": ["jqTest",1] }' | jq '{ newJq: .jq[1], }'
{
"newJq": 1
}
如果其中一個表達式有多個結果,那么輸出也會產生多個結果
$ echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' |jq '{user, title: .titles[]}'
{
"user": "stedolan",
"title": "JQ Primer"
}
{
"user": "stedolan",
"title": "More JQ"
}
如果key是不存在的,value將會賦值為null
$ echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' |jq '{user111, title: .titles[]}'
{
"user111": null,
"title": "JQ Primer"
}
{
"user111": null,
"title": "More JQ"
}
如果再鍵的周圍加括號就意味著它將作為表達式進行計算。
$ echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' |jq '{(.user): .titles[]}'
{
"stedolan": "JQ Primer"
}
{
"stedolan": "More JQ"
}
計算
echo "10" | jq '(.+2)*5'
echo null | jq '{a: 1} + {b: 2} + {c: 3} + {a: 42}'
echo '["xml", "yaml", "json"]' | jq '. - ["xml"]'
echo '{"a":5}' | jq ‘.a+=10'
獲取長度
echo '[[1,2], "string", {"a":2}, null]' | jq '.[] | length’
這里要特別介紹一下數組的運算操作,也是下面實現目標的手段
jq 對于數組可以有并集(’+’)和差集(’-’)的操作:
并集('+'):有數組a,b; a+b就會得到一個包含所有a,b數組元素的新數組:
$ echo '{"a": [1,2,3] ,"b": [3,4,5]}' | jq '.a+.b'
[ 1, 2, 3, 3, 4, 5 ]
差集('-'):有數組a,b; a-b就會得到一個只包含a中元素,不包含b中元素的新數組:
$ echo '{"a": [1,2,3] ,"b": [3,4,5]}' | jq '.a-.b'
[ 1, 2 ]
更多用法可參考官網:
https://stedolan.github.io/jq/manual/#Basicfilters
如下圖中的科普推薦欄目中有 2 則科普文章,現在想要mock幾十甚至上百篇文章或廣告。
{
"code": 1,
"msg": null,
"data": {
"pageNumber": 0,
"pageSize": 10,
"totalElements": 12,
"totalPages": 2,
"pageList": [{
"id": 18,
"title": "老年癡呆癥有哪些危害?",
"type": "patient",
"img": "https://greenvalley.oss-cn-shanghai.aliyuncs.com/hospital/a295c2081459450ba6679db48d6a2471_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAH</p>"
}, {
"id": 17,
"title": "你了解老年癡呆是如何發病的嘛?",
"type": "patient",
"img": "https://greenvalley.oss-cn-shanghai.aliyuncs.com/hospital/953fc541af7b4576b233d2d6b364bddf_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAK</p>"
}]
}
}
$ mockData=$(cat /tmp/guanggao.json)
$ echo "$mockData"
{
"code": 1,
"msg": null,
"data": {
"pageNumber": 0,
"pageSize": 10,
"totalElements": 12,
"totalPages": 2,
"pageList": [{
"id": 18,
"title": "老年癡呆癥有哪些危害?",
"type": "patient",
"img": "https://greenvalley.oss-cn-shanghai.aliyuncs.com/hospital/a295c2081459450ba6679db48d6a2471_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAH</p>"
}, {
"id": 17,
"title": "你了解老年癡呆是如何發病的嘛?",
"type": "patient",
"img": "https://greenvalley.oss-cn-shanghai.aliyuncs.com/hospital/953fc541af7b4576b233d2d6b364bddf_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAK</p>"
}]
}
}
這里用到的是jq對數組的并集(‘+’)運算,兩個數組相加,最終得到一個包含兩個數組所有元素的新數組。
mockData=$(echo "$mockData" | jq '.data.pageList+=.data.pageList')
$ echo "$mockData"
{
"code": 1,
"msg": null,
"data": {
"pageNumber": 0,
"pageSize": 10,
"totalElements": 12,
"totalPages": 2,
"pageList": [
{
"id": 18,
"title": "老年癡呆癥有哪些危害?",
"type": "patient",
"img": "https://gv.oss-cn-shanghai.aliyuncs.com/hospital/a295c2081459450ba6679db48d6a2471_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAH</p>"
},
{
"id": 17,
"title": "你了解老年癡呆是如何發病的嘛?",
"type": "patient",
"img": "https://gv.oss-cn-shanghai.aliyuncs.com/hospital/953fc541af7b4576b233d2d6b364bddf_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAK</p>"
},
{
"id": 18,
"title": "老年癡呆癥有哪些危害?",
"type": "patient",
"img": "https://gv.oss-cn-shanghai.aliyuncs.com/hospital/a295c2081459450ba6679db48d6a2471_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAH</p>"
},
{
"id": 17,
"title": "你了解老年癡呆是如何發病的嘛?",
"type": "patient",
"img": "https://gv.oss-cn-shanghai.aliyuncs.com/hospital/953fc541af7b4576b233d2d6b364bddf_700_360.png",
"content": "<p>https://fx.wxbjq.net.cn/preview/6cAK</p>"
}
]
}
}
按照上述的方法,每次列表的元素個數都會翻倍,也就是操作n次就變成2的n次方倍,指數增長的速度就不用多說了~
這樣根據自己的需要得到數據后將新數據存入json文件,最重要的數據準備過程也就完成了:
$ echo "$mockData" > /tmp/MockTest.json
說了這么多“廢話”,總算是到了主角了,其實數據準備好了,工具的使用還是很簡單的,Charles有一個叫做Map Local的功能,在你要mock的請求上右擊就可找到:
Map Local可以對指定的接口返回使用本地文件進行替換,如這里替換為上文中廢話半天生成的數據文件MockTest.json:
然后再次刷新頁面,看看效果,頁面的列表就如愿倍增了,也不用去數據庫添加數據,保存一份json文件即測即用即可:
以上,期待大家一起交流,多多指正。
文轉自霍格沃茲測試開發學社學員學習筆記
原文鏈接:https://ceshiren.com/t/topic/29276
Python全棧開發與自動化測試開發班
由淺入深實戰進階,從小白到高手
以Python全棧開發為基礎,深入教授自動化測試技能,為學員打造全面的技術能力。通過系統學習和實際項目實戰,學員將具備在職場中脫穎而出的競爭力。不僅能夠靈活運用Python進行開發,還能夠保障項目質量通過自動化測試手段。這是一個全面提升職業競爭力的機會。
Python開發必備基礎技能與項目實戰
Pvthon 編程語言/算法和數據結構/面向對象編程Web后端開發/前端開發/測試管理平臺項目實戰
人工智能ChatGPT實戰
人工智能輔助學習各種開發和測試技能/Pytorch深度學框架/平臺開發實戰
數據分析與自動化辦公
數據采集/Pandas與數據處理技術/ECharts與數據可視化技術/爬蟲實戰/自動化辦公/批量文件處理
UI自動化測試與高級項目實戰
Web自動化測試/App自動化測試/ PageObject設計模式
接口自動化測試
接口協議分析/Mock實戰/服務端接口測試
性能測試
性能測試流程與方法/JMeter 腳本參數化/Grafana監控系統搭建
簡歷指導與模擬面試
1V1簡歷指導/模擬真實面試/測試開發崗面試全攻略名企私教服務 名企專家1v1輔導/行業專家技術指導/針對性解決工作難題/績效提升輔導與晉升復盤
名企私教服務 先學習后付費 高額獎學金
專屬社群+晚自習在線答疑
5V1全方位輔導作業+考試強化學習效果
簡歷修改 模擬面試 就業內推 面試復盤
*請認真填寫需求信息,我們會在24小時內與您取得聯系。