Python自动化一--接口测试基础知识,jmeter操作介绍
一,接口概念
?1)系統(tǒng)對外的接口:比如你要從別的網(wǎng)站或服務(wù)器上獲取資源或信息,別人肯定不會把數(shù)據(jù)庫共享給你,他只能給你提供一個他們寫好的方法來獲取數(shù)據(jù),你引用他提供的接口就能使用他寫好的方法,從而達到數(shù)據(jù)共享的目的,比如說咱們用的app、網(wǎng)址這些它在進行數(shù)據(jù)處理的時候都是通過接口來進行調(diào)用的。
?2)程序內(nèi)部的接口:方法與方法之間,模塊與模塊之間的交互,程序內(nèi)部拋出的接口,比如bbs系統(tǒng),有登錄模塊、發(fā)帖模塊等等,那你要發(fā)帖就必須先登錄,要發(fā)帖就得登錄,那么這兩個模塊就得有交互,它就會拋出一個接口,供內(nèi)部系統(tǒng)進行調(diào)用。
二,接口分類:常用webservice和http api
1)webservice接口:是走soap協(xié)議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候都用通過工具才能進行調(diào)用,測試。
2)http api接口:是走http協(xié)議,通過路徑來區(qū)分調(diào)用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有g(shù)et和post等方法,這也是最常用的兩種請求方式。
三,前后端概念
前端是什么呢,對于web端來說,咱們使用的網(wǎng)頁,打開的網(wǎng)站,這都是前端,這些都是html、css寫的;對于app端來說呢,它就是咱們用的app,android或者object-C(開發(fā)ios上的app)開發(fā)的,它的作用就是顯示頁面,讓我們看到漂亮的頁面,以及做一些簡單的校驗,比如說非空校驗,咱們在頁面上操作的時候,這些業(yè)務(wù)邏輯、功能,比如說你購物,發(fā)微博這些功能是由后端來實現(xiàn)的,后端去控制你購物的時候扣你的余額,發(fā)微博發(fā)到哪個賬號下面,那前端和后端是怎么交互的呢,就是通過接口。 說的通俗點,前端負責(zé)貌美如花,后端負責(zé)養(yǎng)家糊口。
四,接口測試
接口測試是測試系統(tǒng)組件間接口的一種測試。接口測試主要用于檢測外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個子系統(tǒng)之間的交互點。測試的重點是要檢查數(shù)據(jù)的交換,傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
其實接口測試就和普通功能測試沒什么區(qū)別,區(qū)別就是功能測試是在頁面上點點點,在頁面上輸入值,提交數(shù)據(jù)看結(jié)果,而接口測試沒有頁面,通過接口規(guī)范文檔上的調(diào)用地址、請求參數(shù),拼接報文,然后發(fā)送請求,檢查返回結(jié)果。
五,接口測試的必要性
1)可以發(fā)現(xiàn)很多在頁面上操作發(fā)現(xiàn)不了的bug
2)檢查系統(tǒng)的異常處理能力
3)檢查系統(tǒng)的安全性、穩(wěn)定性
4)前端隨便變,接口測好了,后端不用變
六,接口測試流程
1)需求評審,熟悉業(yè)務(wù)和需求
2)開發(fā)提供接口文檔
3)編寫接口測試用例
4)用例評審
5)提測后開始測試
6)提交測試報告
七,接口文檔規(guī)范
接口文檔至少包括:接口說明,調(diào)用URL,請求方法(get/post), 請求參數(shù),參數(shù)類型,請求參數(shù)說明
八,如何測http接口
1)url?param=value¶m2=value 這種是最簡單的一種,問號前面是請求url,后面是請求的參數(shù)名和參數(shù)值,多個參數(shù)用&來連接 https://api.douban.com/v2/book/search?q=鄒偉偉
2)還有一種就是入?yún)⑹莏son串的,那就不能拼接參數(shù)了,需要借助工具來完成比如postman?
如何測webservice接口
webservice接口怎么測試呢,他不需要你在拼報文了,會給一個webservice的地址,或者wsdl文件,直接在soapui導(dǎo)入,就可以看到這個webservice里面的所有接口,也有報文,直接填入?yún)?shù)調(diào)用,看返回結(jié)果就可以了。 天氣預(yù)報wsdl地址:http://www.webservicex.net/globalweather.asmx?wsdl
九,http接口中GET請求和POST請求的區(qū)別
1)GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在BODY中。
2)GET的URL會有長度上的限制,則POST的數(shù)據(jù)則可以非常大。
3)POST比GET安全,因為數(shù)據(jù)在地址欄上不可見。
4)一般get請求用來獲取數(shù)據(jù),post請求用來發(fā)送數(shù)據(jù)。
cookie和session
cookie是存儲在瀏覽器客戶端本地的一個鍵值對 ,用于登錄
session是存放在服務(wù)器端的一個鍵值對
十,HTTP狀態(tài)碼
1)200 2開頭的都表示這個請求發(fā)送成功,最常見的就是200,就代表這個請求是ok的,服務(wù)器也返回了。
2)300 3開頭的代表重定向,最常見的是302,把這個請求重定向到別的地方了,
3)400 400代表客戶端發(fā)送的請求有語法錯誤,401代表訪問的頁面沒有授權(quán),403表示沒有權(quán)限訪問這個頁面,404代表沒有這個頁面
4)500 5開頭的代表服務(wù)器有異常,500代表服務(wù)器內(nèi)部異常,504代表服務(wù)器端超時,沒返回結(jié)果
十一,通用接口用例設(shè)計
1)通過性驗證:首先肯定要保證這個接口功能是好使的,也就是正常的通過性測試,按照接口文檔上的參數(shù),正常傳入,是否可以返回正確的結(jié)果。
2)接口安全:
? ? 1.繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,后端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加?
? ? 2.繞過身份授權(quán),比如說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,我傳一個其他的賣家能不能修改成功
? ? 3.參數(shù)是否加密,比如說我登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規(guī)則是否容易破解。
? ? 4.密碼安全規(guī)則,密碼的復(fù)雜程度校驗
? ? 5.用戶進行提交操作的接口要考慮防刷機制
? ? 6.業(yè)務(wù)邏輯的接口要考慮是否暴露了敏感信息(比如獲取題目接口中返回了題目的答案)
? ? 7.提交輸入信息的操作接口,要考慮xss漏洞風(fēng)險(跨站腳本攻擊)??
3)異常驗證:異常的,也就是我不按照你接口文檔上的要求輸入?yún)?shù),來驗證接口對異常情況的校驗。比如說必填的參數(shù)不填,輸入整數(shù)類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎么來,我就不怎么來,其實也就這三種,必傳非必傳、參數(shù)類型、入?yún)㈤L度。
4)根據(jù)業(yè)務(wù)邏輯:根據(jù)業(yè)務(wù)邏輯來設(shè)計的話,就是根據(jù)自己系統(tǒng)的業(yè)務(wù)來設(shè)計用例,這個每個公司的業(yè)務(wù)不一樣,就得具體的看自己公司的業(yè)務(wù)了,其實這也和功能測試設(shè)計用例是一樣的。 舉個例子,拿bbs來說,bbs的需求是這樣的:登錄失敗5次,就需要等待15分鐘之后再登錄 ;新注冊的用戶需要過了實習(xí)期才能發(fā)帖 ;刪除帖子扣除積分 。像這樣的你就要把這些測試點列出來,然后再去造數(shù)據(jù)測試對應(yīng)的測試點。
5)接口性能:涉及到大數(shù)據(jù)量的接口時,要考慮接口的響應(yīng)時間,還有接口的qps
? ?比如輸入以下代碼會出現(xiàn)警告框提示
? ?http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!
? ?處理方法是對用戶提交的數(shù)據(jù)進行過濾處理
十二,接口測試用例模板
接口測試用例包含字段:
? 1)項目 是哪個項目的??
? 2)模塊 這個接口是屬于哪個功能模塊的
? 3)用例id
? 4)接口名稱
? 5)用例標(biāo)題 用例是干嘛的
? 6)請求方式 GET/POST
? 7)請求url url地址
? 8)請求參數(shù)
? 9)前置條件 有依賴的時候,比如說要測登錄失敗3次的
?10)結(jié)果驗證 預(yù)期結(jié)果
?11)請求報文
?12)返回報文
?13)測試結(jié)果 通過/失敗
?14)測試人員
十三,用Jmeter做接口測試
1.jmeter測http接口腳本流程
1)添加線程組
2)添加http請求
3)在http請求中寫入接口url、路徑、請求方式、參數(shù)
4)添加查看結(jié)果樹
5)調(diào)用接口、查看返回值
2.jmeter-http接口添加header
比如獲取所有學(xué)生信息接口
3.Jmeter-http接口腳本添加cookie
?
比如金幣充值
4.Jmeter-webservice腳本
1)在soapui中新建已經(jīng)soap項目,導(dǎo)入wsdl地址,獲取到請求報文、SOAPAction和請求url(在soapui的raw中能找到)
2)打開jmeter新建一個線程組
3)新建一個SOAP/XML-RPC Request
4)把url、soapaction和請求報文寫到soaprequest中
5)調(diào)用接口、查看返回值
?
5.jmeter-參數(shù)化
1)用戶定義的變量 這種就是為了方便管理參數(shù),只能有一個值,比如說ip地址不經(jīng)常變化的
?
?
2)函數(shù)生成器:函數(shù)生成器可以參照一定的規(guī)則生成數(shù)據(jù),這樣的比如說生成一些隨機數(shù)
? ? 函數(shù)助手的話,可以按照規(guī)則生成一些參數(shù),比如說隨機數(shù)取當(dāng)前時間,最常用的就是這兩種。
? ? 1.隨機數(shù)__Random,可以在你指定的一個范圍內(nèi)取隨機值
? ? 2.取當(dāng)前時間__time,如果在有一些需要傳時間的情況下可以使用,日期格式是: yyyy-MM-dd HH:mm:ss 年-月-日-小時:分鐘:秒 取唯一id,__UUID,這個就是每次會生成一個隨機的uuid,都是唯一的
?
3)參數(shù)化-從文件中讀取
從文件中讀取的話,讀取文件,取文件內(nèi)容里面的參數(shù),給它一個名字 ,使用值 從文件讀取的話,需要在線程組里面添加一個CSV Data Set Config,它就是做前面兩步的操作的
?
6.jmeter斷言
斷言是什么呢,它是用來檢查返回結(jié)果對不對的。 用來驗證結(jié)果是否正確,如果正確的話,就代表這個請求的返回是正確的,如果沒有的話就代表這個請求的結(jié)果和我們預(yù)期的不一致,這樣我們就可以通斷言來檢查返回結(jié)果,測試是否通過。
7.jmeter關(guān)聯(lián)
關(guān)聯(lián)就是做這個事的,它就是獲取到返回的值,然后保存起來,給別的請求使用,或者做一些其他的處理。
通過上面的關(guān)聯(lián)就可以把返回中我們想要的值抓到了,給其他請求使用的時候,直接使用${name}即可,name就是你關(guān)聯(lián)的時候設(shè)置的變量名。
8.jmeter操作mysql
? ?1)導(dǎo)入jdbc的jar包,因為jmeter本身不能直接連接mysql,所以需要導(dǎo)入第三方的jar包,來連接mysql
? ?2)創(chuàng)建數(shù)據(jù)庫連接配置,mysql的url、端口號、賬號、密碼
? ?3)寫sql,執(zhí)行sql
? ?4)查看結(jié)果
?Jmeter導(dǎo)入jdbcjar包
?
Jmeter配置mysql連接
1)添加一個JDBC Connection Configuration
2)配置mysql連接池的名稱,后面發(fā)sql請求的時候指定連接哪里
3)數(shù)據(jù)庫的url:jdbc:mysql://192.168.1.116:3307/bugfree?allowMultiQueries=true
4)數(shù)據(jù)庫驅(qū)動:這里就是指定連接什么類型的數(shù)據(jù)庫,mysql、oracle、SqlServer等等
5)賬號密碼
?
Jmeter數(shù)據(jù)庫驅(qū)動列表
Jmeter執(zhí)行sql
Jmeter查看sql執(zhí)行結(jié)果
?
?2018-05-21
?
轉(zhuǎn)載于:https://www.cnblogs.com/tudouxifan/p/9065934.html
總結(jié)
以上是生活随笔為你收集整理的Python自动化一--接口测试基础知识,jmeter操作介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NETFramework-Web.Mv
- 下一篇: layui进度条bug