點選上方頭像關注我,每周上午 09:00準時推送,每月不定期贈送技術書籍,小視窗回複“資源”、“測試工具包”領取測試資源。
本文3258字,閱讀約需9分鐘
Hi,大家好。今天給大家分享一波接口自動化面試題,如果想要擷取更多面試題,可以在背景回複“面試順利”。
一
Python基礎
清單反轉有哪幾種方式?
第一種:通過倒序切片反轉,步長是 -1;
第二種,使用reversed 函數 ,可以實作反轉;
reversed傳回的結果是一個反轉的疊代器,我們需要對其進行 list 轉換。
第三種,使用sorted函數 ,可以實作反轉;
清單推導式是什麼?
推導式 是 Python 中用來生成資料的一種進階用法,Python 不僅有清單推導時,還有字典推導式、集合推導式、生成器表達式;它的文法都是一樣的,都是通過 for 循環來建立資料的一種簡寫的方式。
推導式它将循環和條件判斷結合,進而避免文法冗長的代碼,提高代碼運作效率。
1)文法格式
第一種文法:
[exp1 for x in data if condition]
第二種文法:
[exp1 if condition else exp2 for x in data]
2)實戰練習
執行個體1:傳回1-10的所有偶數乘以2的結果。
輸出結果如下:
[4, 8, 12, 16, 20]
執行個體2:傳回1-10的所有偶數乘以2,奇數乘以3的結果。
輸出結果如下:
[3, 4, 9, 8, 15, 12, 21, 16, 27, 20]
3)執行效率測試
上文有介紹說清單推導式可以提高代碼執行效率,接下來我們通過例子來證明下這個結論。
①先用我們常用的for循環統計時間。
輸出結果:
for循環總耗時:0.18744373321533203秒
② 用清單推導式統計時間。
輸出結果:
清單推導式總耗時:0.09278202056884766秒
從for循環和清單推導式耗時結果來看,清單推導式執行效率是優于正常的for循環的。
什麼是閉包函數?
1)什麼是閉包?
在函數嵌套的前提下,内部函數使用了外部函數的變量,并且外部函數傳回了内部函數,我們把這個使用外部函數變量的内部函數稱為閉包。
2)閉包的構成條件?
必須有内嵌函數
内嵌函數必須引用外部變量
外部函數必須傳回内嵌函數
3)閉包的使用
Python裝飾器就是閉包概念的一種展現,如下示範很典型的閉包場景,單例模式的裝飾器。
from functools import wraps
def Singleton(cls):
instance = {}
@wraps(cls)
def wrapper(*args, **kwargs):
if cls not in instance:
instance[cls] = cls(*args, **kwargs)
return instance[cls]
return wrapper
接下來寫出一個計時器裝飾器,記錄函數的執行時間。
json.loads和json.dumps的差別?
1)含義
# 微信公衆号:ITester軟體測試小棧
json的dumps方法和loads方法,可實作資料的序列化和反序列化。
json.dumps: 将python對象轉換為json格式資料。
json.loads: 将json格式資料轉化為python對象。
2)應用場景
① json.dumps
代碼如下:字典轉為字元串。
輸出内容如下:
<class 'dict'>
<class 'str'>
{"name": "ITester軟體測試小棧", "author": "coco", "age": "18"}
② json.loads
這裡我們用之前寫過的接口自動化文章為例,從Excel讀取資料後,通過資料驅動,打斷點後發現讀取的參數為字元串類型,是以我們通過 json.loads轉化下格式。
有興趣的小夥伴,可以點選連結檢視曆史文章:Python接口自動化之資料驅動。
二
接口測試相關
什麼項目适合做自動化測試?
适合做自動化測試的項目,簡答來說,就是不變的、重複的、規範的。具體來說,滿足以下幾個方面:
- 需求變化不太頻繁;
- 項目周期要足夠長;
- 腳本可以重複使用:在一些典型的場景,比如說 “冒煙測試、回歸測試” 的地方就是經常使用自動化測試;
- 被測試的軟體是否規範:是否有需求文檔、規範的接口文檔、是否有原型圖、接口設計是否比較規範;
- 手工測試是無法完成的:比如說需要性能測試,通過自動化測試的成本不是特别高;
- 測試團隊成員具有一定的程式設計能力。
你是怎麼開展自動化測試工作的?
實際工作中開展自動化測試,我主要從以下幾個方面開展:
- 首先根據産品的業務特性整理自動化的一個功能模闆;
- 其次,我們會根據項目情況以及人員現狀,來制定自動化測試計劃;
- 第三,我們會從功能用例當中挑選合适的用例來轉成自動化用例;
- 第四,架構選型,選擇程式設計語言或者工具來實作,我們選擇的是 Python 語言來實作的;
- 第五,自動化測試的腳本開發;
- 第六,根據項目來制定自動化執行方案;
- 第七,輸出測試報告,以及自動化測試成果的彙報,跟進後期的維護;
接口測試用例的編寫要點有哪些?
- 必填字段:請求參數必填項、可選項;
- 合法性:輸入輸出合法、非法參數;
- 邊界:請求參數邊界值等;
- 容錯能力:大容量資料、頻繁請求、重複請求(如:訂單)、異常網絡等的處理;
- 響應資料校驗:斷言、資料提取傳遞到下一級接口;
- 邏輯校驗:如兩個請求的接口有嚴格的先後順序,需要測試調轉順序的情況;
- 性能:對接口模拟并發測試,逐漸加壓,分析瓶頸點;
- 安全性:構造惡意的字元請求,如:SQL注入、XSS、敏感資訊、業務邏輯。
你平常做接口測試的過程中發現過哪些 bug?
正常錯誤:接口沒實作,沒按約定傳回結果,邊界值處理出錯等;輸入異常值(空值、特殊字元、超過約定長度等),接口抛錯,沒做封裝處理;輸入錯誤的參數、多輸入、少輸入參數;
接口可能出現的錯誤:安全性問題,如明文傳輸、傳回結果含有敏感資訊,沒對使用者身份資訊做校驗,沒做惡意請 求攔截等;
性能問題:如接口并發插入多條相同操作,響應時間過長,接口壓測出現瓶頸等。
你所知道的接口安全性方面的測試?
接口的安全測試主要有以下幾個方面:
- 接口對于請求參數篡改的預防:引入簽名、參數MD5加密等;
- 接口身份認證存在的漏洞:cookie仿冒、session劫持、平行和垂直越權;
- 完善接口的防刷機制:比如暴力破解短信驗證碼、找回密碼功能的枚舉破解安全問題;
- 競争條件—利用線程并發漏洞:超過限制下單、同時申請多筆退款;
- 注入類攻擊:sql注入、sqlmap 接口注入檢查;
- 資料保護:檢查請求及響應是否包含敏感資訊;
- 安全日志,管理操作需要記錄日志。
更多系列文章
敬請期待
我是CoCo,計算機科學與技術專業,深漂大廠網際網路民工(女),坐标深圳。5年工作經驗,3年持續輸出技術文。ITester軟體測試小棧(ID:ITestingA)号主,專注于軟體測試技術和寶藏幹貨分享,每周準時更新原創技術文章,每月不定期贈送技術書籍,願我們在更高處相逢。喜歡記得星标⭐我,每周及時獲得最新推送,第三方轉載請注明出處。
想擷取更多最新幹貨内容
快來星标 置頂 關注我