1、請結合你熟悉的項目,介紹一下你是怎么做測試的?
-首先要自己熟悉項目,熟悉項目的需求、項目組織架構、項目研發接口等
-功能 + 接口 + 自動化 + 性能 是怎么處理的??
-第一步: 進行需求分析,需求評審,研發和測試對需求達成統一的理解
-第二步:架構師會輸出接口規范;
前后端開發根據接口進行開發
功能測試人員,開始根據需求設計測試用例
接口測試人員根據接口規范設計測試接口測試用例
-第三步:后端開發 先測接口
-第四步:接口測試人員對接口進行測試
-第五步:接口測試通過之后,輸出接口的測試報告
-第六步:功能測試人員,根據接口的測試報告和前端開發的提測,來開始進入功能測試,接口測試人員整理接口自動化腳本,并開始在驗收環境進行接口測試
-第七部: 功能測試人員測試環境測試通過后,進入驗收環境進行功能的驗收測試
-UI 自動化小組成員,開始編寫回歸測試的自動化UI測試的代碼
-第八步:發布到線上環境,進行最后一輪的功能回歸測試
-第九步:跟蹤產生BUG
2、你們公司是如何做接口測試的?
分析: 一般會發這類問題,最好結合項目回答,并且要回答出使用工具、技術、設計的人力安排、工作成果等
答: 我在上一家公司里面,對HRM人力資源系統進行過接口測試,負責的呢輪轂、員工的增刪蓋茶,部門的增刪蓋茶,用戶資源查詢接口測試,一共12個接口
在公司里我開展測試時,先要進行需求分析,然后開發開發代碼時,熟悉項目需求。等待開發提測試接口后,拿到接口文檔,然后根據接口文檔設計測試用例,使用postman 工具進行接口測試,經過3天的測試,一般能夠完成一輪的接口測試。測試完成后,如果所有測試用例都執行完畢,并且所有的bug都回歸測試通過,沒有嚴重等級bug之后,就可以移交功能測試。
在功能測試人員進行功能測試時,我們可以編寫自動化接口測試代碼,然后進行接口層的回歸測試。
同時,我們接口測試人員會提前在UAT驗收環境進行部署和回歸測試。等UAT回歸通過之后,前端測試就可以介入UAT測試。
等前端測設通過并發布上線之后,我們可以在UAT 環境使用持續集成技術,持續的監控已發布的版本質量,達到保證項目質量的目的
最后,我們使用接口測試自己數,對人力管理系統進行利系統接口層測試,測試效率比功能測試回歸的效率高了16倍,功能測試需要花費一天的時間才能執行完成回歸測試工作,我們接口人員利用自動化接口測試技術,只花了半個小時。而且還能持續的監控舊版本的代碼質量,提高我們的測試效率
如果面試官不打斷,就接著說:
這里面,我們使用Postman的斷言,關聯、引入外部數據文件,對接口進行測試。并且使用newman工具來生成HTML報告,利用mysql來連接數據庫,校驗數據庫的數據。
其中,一些大數據的測試場景,我們使用csv文件來完成測試。
讓人印象深刻的bug:
在工作中,我遇到一些讓我印象深刻的bug,其中我在測試登陸接口時,偶然發現,我們不輸入用戶名和輸入一個特定的密碼結果登陸成功了,然后讓我意識到這是一個后門,然后提單了,并且詢問開發為什么會有這種問題,最后開發說,這是數據庫中插入了一條臟數據,這個數據沒有用戶名,然后有密碼導致,他們會修復。
面試的建議:
1、最好能夠主導面試的分為,控制面試官問的問題。(如果他有準備往往很難控制)
2、面試官必然會問的3類問題:你簡歷中寫的技術;公司中使用的技術,擴展知識(超出面試者個人的知識,都是我們面試時不知道的內容)
3、面試的問題本質上就是我們怎么做的
例如: 你知道HTTP協議碼?
這個問題不是在問你知不知道HTTP協議,而是在問你 什么是HTTP協議,有什么特點,有哪些部分組成?
你寫過測試用例嗎?
我曾經對登陸接口設計過接口測試用例,按照測試方法論等價類、邊界值設計了登陸的測試用例,一共設計了46個,主要的關鍵元素時用例的測試名稱,操作步驟,嚴重等級,預期結果這些部分。
3、什么時候開展接口測試?
我們公司一般都是前后端開發鏈條后進行接口測試。
但是我們可以提前介入,例如在后端開發輸出接口文檔之后就開始進行模擬的接口測試,編寫測試腳本
我們可以在UAT階段進行接口的回歸測試
持續集成時,使用自動化接口自動的持續監控版本質量
4、接口測試和UI測試的工作是否重復?
答: 接口測試和功能測試是有重復場景的,如果是接口和UI測試時完全分離的,沒有重復。
接口測試和功能測試在業務邏輯上是重復的。但是接口測試更注重后端的交互,而功能測試可以注重前端UI交互,這樣的話各有側重點,能更好的管理測試。
但是當前行業中,很多公司基本上都是通過功能測試來進行接口測試的,有時候會省略接口測試,但是這種風險比較高,功能測試無法覆蓋厚點接口測試中性能和安全測試點,導致測試不充分,有很高的上線風險。
5、接口測試框架怎么搭建的?
答:我們公式使用的框架 python+unitest + request + parameterized + HTMLTestRuuner +pymysql 來進行測試接口
其中 unitest 主要用來管理測試用例
requests模塊用來發送接口請求和封裝接口
parameterized 用于參數化
HTMLTestRunner 用于生成測試報告
pymysql操作數據庫
在我們接口框架中,我們首先是新建一個項目,然后再把項目所需要的目錄結構搭建好,接著安裝框架需要使用requests,parameterized htmltestrunner pymysql這些工具包
編寫腳本會調用封裝的接口,來進行接口測試。最后再run_suite.py生成測試報告。report目錄用來存放測試報告,utils存放自定義的模塊
自我介紹要簡潔,條理要清晰
6、接口之間有依賴時怎么處理?
答; 可以用關聯,我之前在公司對人力資源管理系統進行接口測試時,其中登陸、員工管理模塊都有依賴關系,我遇到后,使用postman 工具,先獲取上一個接口的響應,然后保存到全局變量,接著在下一個接口中調用保存的變量,從而實現關聯來解決接口之間的依賴關系。
代碼實現也是將response響應消息中的值保存為變量,在下一次的接口中調用
7、如何判斷接口測試的結果 是成功還是失敗?
1、斷言接口的返回數據和預期是否一致
2、如果需要更新數據庫的數據,需要到數據庫中查詢數據是否和修改的一致
3、數據庫中修改完成還需要查詢一下,看看是否能夠正常的查詢
8、常用的接口請求方式和區別
答:常見的接口請求方式:GET POST PUT delete
GET:用于查詢
POST:用于新增
PUT 用于修改
DELETE: 用于刪除
其中 GET 和POST有顯著的區別:
1、GET 沒有請求體,它的請求參數直接放在了url中,post 是有請求體的
2、GET請求相對來講不安全,因為參數直接暴露了,post將數據放在了請求體中,相對來講安全
3、GET請求的數據包比POST的小
4、get請求支持的編碼格式沒有post多
9、發送HTTP請求時,傳遞參數的途徑有哪些?
10、自動化測試多久構建一次? 一天構建兩次
11、使用工具和代碼 實現接口自動化測試的區別
答:
工具:使用簡單,但是不靈活,可以應用一些非定制化需求的測試
代碼: 非常靈活,可以定制化
12、HTTP和HTTPS的區別
HTTP默認工作端口號是80,以明文的方式發送內容,不適合敏感信息的傳輸
HTTPs默認工作端口號是443,加了一個SSL 來加密數據包,
HTTP和HTTPS的區別:
1、HTTP明文傳輸,數據未加密,安全性差,HTTPS(SSL+HTTP) 數據傳輸過程是加密的,安全性好
2、使用HTTPS協議 要使用到 CA證書
3、HTTP 頁面響應比HTTPS快,主要是因為HTTP使用TCP三次握手建立連接,客戶端和服務端需要交換三個包;而
HTTPS除了TCP的三個包 還需要加上SSL的9個包,一共是12個包
4、http和https 使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443
5、HTTPS 起始就是構建在ssl、TLS 之上的http協議,所以https比HTTP更耗費服務器資源。
13、cookie和session的區別
cookie -- 客戶端會話技術? cookie 保存在客戶端,攜帶cookie 請求服務器
session -- 服務端會話技術? sessionID 保存在服務端,攜帶sessionID 請求服務器
token -- 令牌? token保存在客戶端? 攜帶token請求服務器
如何定位前后端bug?????????????????????????
問題:修改了參數后 點擊提交 沒有反應,這個時候怎么定位時前端還是后端的問題?
要用fidder抓包來看
1、看一下前端是否發送的正確的請求消息,如果沒有發送或者發送了錯誤的請求消息 則是前端問題
2、如果發送了正確的請求消息: 但是服務器沒有相應數據返回,則是服務端問題
3、如果發送了正確請求消息,服務端響應了 但是相應錯了,這個還是服務端的問題
4、如果發送了正確的請求,服務端也相應了,相應也是正確的,這個就是前段問題
B站2023年最詳細的python接口自動化測試全棧測試開發技術入門到精通教程