第1課:接口測試和jmeter總結

接口測試

1. 接口的分類:webService和http api接口
  1) webService接口:是按照soap協議通過http傳輸,請求報文和返回報文都是xml格式,一般要借助工具來測試接口;
  2) http api接口:是按照http協議傳輸的,請求報文是key-value格式,返回報文json串,一般常用的請求方式是get和post請求。
2. 接口測試其實就是功能測試,也是測試業務邏輯,只不過沒有頁面可以點;接口測試就是按照接口規范文檔提供的調用地址、請求參數、拼接報文,發送請求檢查返回結果。
3. 接口測試的必要性:
  1) 能夠發現很多頁面點擊發現不了的bug;
  2) 提高系統的異常處理能力;
  3) 前端隨便變,接口測好了,后端不用變。
4. 接口文檔至少得包括:
  1) 接口的說明;
  2) 調用地址的URL;
  3) 請求參數,參數的類型,請求參數的說明;
  4) 請求方式;
  5) 返回值的說明。
5. get和post請求:
  1) get請求能直接在瀏覽器中發送請求;
  2) post請求需要借助工具來發送。
  3) 兩者的區別:
    i get請求使用URL或cookie傳參,host請求使用請求體body傳參;
    ii get請求的URL在長度上有限制;post請求沒有;
    III post請求比get請求安全,因為get請求數據放在URL中;
    IV get請求一般用來請求數據,post請求一般用來發送數據;get請求數據發在請求頭中,post請求數據放在請求body中。
6. http狀態碼:http有1個狀態碼,來標識每次請求是否成功,常見狀態碼有如下幾種。
  1) 200:2開頭的都表示這個請求發送成功。
  2) 300:3開頭的表示重定向;常見的是302,把請求重定向到別的URL了。
  3) 400:4開頭的表示客戶端發送的請求有語法錯誤;
    I 常見的401表示訪問的頁面需身份驗證;
    II 403表示服務端拒絕訪問請求;
    III 404表示沒有這個頁面。
  4) 500:5開頭的表示服務器有異常:
    I 500代表服務器內部有異常,無法完成請求;
    II 503表示服務暫時不可用;
    III 504代表服務器端超時,無返回結果。
7. 如何測webService接口
  前提要知道測試的URL或wsdl文件,直接在soapui中導入即可,導入后能看到所有接口,填寫參數調用接口, 查看返回結果即可。
8. 通用的接口用例設計
  1) 通過性驗證:保證這個接口功能是好使的,也就是正常的通過性測試,按照接口文檔上的參數,正常傳入發送請求,看是否可以返回正確的結果。
  2) 參數組合:有一個操作商品的接口,有個字段type,傳1的時候代表修改商品,商品id、商品名稱、價格有一個是必傳的,type傳2的時候是刪除商品,商品id是必傳的,這樣的,就要測參數組合了,type傳1的時候,只傳商品名稱能不能修改成功,id、名稱、價格都傳的時候能不能修改成功;id傳2時,傳入商品id是否刪除成功。
  3) 接口安全:
    1、繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,后端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加?
     2、繞過身份授權,比如說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,我傳一個其他的賣家能不能修改成功。
    ?3、參數是否加密,比如說我登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規則是否容易破解。
    ?4、密碼安全規則,密碼的復雜程度校驗。
  4) 異常驗證:異常的,也就是我不按照你接口文檔上的要求輸入參數,來驗證接口對異常情況的校驗。比如說必填的參數不填,輸入整數類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎么來,我就不怎么來,其實也就這三種,必傳非必傳、參數類型、入參長度。
  5) 根據業務邏輯設計用例:把業務的測試點列出來,然后造數據驗證這些測試點。
9.?練習發送【獲取所有學生信息】的請求,發現察看結果樹-》響應數據中中文處顯示的都是亂碼。
 解決方法:在jmeter安裝目錄/bin/jmeter.properties文件中找sampleresult.default.encoding=xx, 后面xx改成utf-8,然后取消注釋
10. 練習發送【添加學生信息】接口請求時,在http請求的 Body Data 中寫的中文,為什么都是亂碼(方框中間有個問號)
 解決方法:在jmeter安裝目錄/bin/jmeter.properties文件找到 JSyntaxTextArea,把注釋取消就行了。
11. 練習發送【添加學生信息】接口請求時,傳參中有中文,請求成功后,再從【查看所有學生信息】接口看到,中文參數顯示的亂碼。
 解決方法:在content-encoding中寫上utf-8,將中文以utf-8格式編碼,然后發送請求

jmeter

1. jmeter:跨平臺的,windows mac Linux下都可以用,使用前必須裝jdk。
2.?jmeter參數化:
  1) 用戶定義的變量;
  2) 函數生成器:
  3) 從文件中讀取
3.  1)?jmeter關聯:獲取返回的值保存起來,給其它請求用,或做其它一些處理。關聯是通過jmeter的正則表達式提取器實現的。
 例子:有一個購買商品的接口,必須要先登錄才能夠購買商品, 那么你調用接口的時候怎么知道是否已經登錄了,一般這樣的都會在調用的時候傳一個token的參數,服務端判斷token是否過期或者token是否正確,如果正確的話,那就是登錄成功了就可以買東西了。token是從哪來的呢,肯定是從登錄接口返回的,因為要先登錄,那這樣就得先調用登錄接口, 獲取到token,然后把獲取到的token傳給購買商品的這個接口。
  ?2) 實際練習時候出現1個問題:正則表達式自己手動輸入時,運行察看結果樹一直提示“未登錄”,

?

?而從登錄返回的數據中復制json串,修改為"sign":"(.*)",后,運行提示操作成功的
?
?
解決方法:后來把兩次操作的表達式復制到sublime Text中,就能很明顯的看出原因了,提示未登錄的那個表達式:后少一個空格,但在jmeter中很難看出來,加上空格即可。
4. ?jmeter操作mysql
  1) 導入jar包:直接在測試計劃中導入外部jar包(mysql-connector-java-5.1.7-bin.jar),或者將jar包放在jmeter安裝目錄的lib包中,重啟jmeter即可。
  2) 配置數據庫連接:mysql的URL、端口號,用戶名,密碼
  3) 寫sql 執行sql,查看結果。
4) jdbc request從數據庫查出來的結果中文顯示???
    解決方法:jdbc連接配置的Database URL中加上characterEncoding=UTF-8
  5) query type為Callable Statement:執行多條sql語句
5. ?jmeter path extractor下載地址:https://jmeter-plugins.org/wiki/JSONPathExtractor/
?

轉載于:https://www.cnblogs.com/qiezizi/p/8028137.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 工作日,如何在Android上重復警報工作日

小編典典請嘗試此代碼。已在我的應用中成功運行if (chk_monday.isChecked()) {forday(2);} else if (chk_tuesday.isChecked()) {forday(3);} else if (chk_wednesday.isChecked()) {forday(4);} else if (chk_thursday.isChecked()) {forday(5);} else if (chk_friday.isCheck…

hdu4419

對于這類面積覆蓋的題,大致就兩點要注意的 1.同一把矩形放在笛卡爾坐標系上做 2.pushup函數要注意下細節:及在統計子區間和之前要先判斷是否有子區間 用sum數組來保存區間被覆蓋的情況,如果遇到多次覆蓋問題,那就開多個sum數組分別保存被覆蓋…

最簡單 - 單例模式

public class Person {// Person 引用private static Person p null;static {if (p null) {p new Person();}}/***單例模式獲取Person對象. * return*/public static Person getInstance(){return p;} ?} 復制代碼轉載自: 簡書 - 低至一折起 文章:w…

極客時間和極客學院_極客歷史記錄的本周:Twitter的誕生,OS X十周年以及太空停留時間最長的時代即將結束...

極客時間和極客學院Every week we bring you interesting trivia and milestones from the archives of Geekdom. Today we’re taking a peek at the birth of Twitter, ten years of Mac OS X, and the longest space stay in history. 每周,我們都會為您帶來有趣…

Android風格ppt,Material Design風格的快手PPT

突發奇想,感覺MD風格既然適合 Android 軟件的界面,那么在一般PPT 演示中,效果當也是不錯。于是在網上去尋了幾處制作貼,也簡單看了 MD 設計指南的幾處要點。先試試一番再說。關于 MD 設計指南和幾處制作貼,我會把鏈接貼…

11月16日站立會議

今天是沖刺階段的第二天,我今天做了統計在線人數模塊的編寫而且對其進行了測試并修改完成,為團隊制作了今日的燃盡圖。 明天我要完成服務器端可以斷開所有用戶連接的一個小模塊和繼續為團隊制作燃盡圖。 今天遇到的困難是用Java進行編寫時,出…

iOS核心動畫高級技術(十三) 高效繪圖

More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason—including blind stupidity. 不必要的效率考慮往往是性能問題的萬惡之源。 ——William Allan Wulf #軟件繪圖 術語繪圖通常在Core Anima…

dropbox鏈接過期_詢問操作方法:“開始”菜單中的Dropbox,了解符號鏈接和翻錄TV系列DVD...

dropbox鏈接過期This week we take a look at how to incorporate Dropbox into your Windows Start Menu, understanding and using symbolic links, and how to rip your TV series DVDs right to unique and high-quality episode files. 本周,我們來看看如何將D…

android listpreference 自定義,Android – 我的ListPreference中的自定義行布局

在我的Android應用程序中,我實現了從ListPreference擴展的類SubtitleColorListPreference.我需要這個,因為我需要為列表中的每個項目設置自己的布局.一切正常,它看起來像這樣:重要的代碼是onPrepareDialogBu??ilder(AlertDialog.Builder builder)中的方法,我在其中…

springMVC3學習(十一)--文件上傳CommonsMultipartFile

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/itmyhome/article/details/27976873 使用springMVC提供的CommonsMultipartFile類進行讀取文件須要用到上傳文件的兩個jar包 commons-logging.jar、commons-io-xxx.jar1、在sp…

基于React和SpringBoot的快速開發模板QuickAdmin

經過一段時間的總結和完善,我的管理系統快速開發模板已經基本成型,現在GitHub上開源啦: QuickAdmin QuickAdmin是基于Spring Boot和React.js實現的管理系統開發框架。用于開發網站的后臺管理系統。 本框架提供了如下功能: 完整的基…

android sim iso,android – 意外的telephonyManager.getSimCountryIso()行為

您可以使用MCC MNC獲取SIM卡國家/地區,它是SIM配置的,與您所在的網絡無關.Configuration config getResources().getConfiguration();int countryCode config.mcc;您可以在此處找到MCC列表MccTable.java例如,西班牙是214,法國是208MCC should work on all GSM devices with S…

火狐 增強查找工具欄_在“提示”框中:簡單的IE至Firefox同步,輕松的Windows工具欄和識別USB電纜...

火狐 增強查找工具欄() Every week we tip into our mail bag and share great tips from your fellow readers. This week we’re looking at an easy way to sync your bookmarks between IE and Firefox, using simple Windows toolbars, and a clever way to ID USB cables…

day22 模塊-collections,time,random,pickle,shelve等

一、引入模塊的方式: 1. 認識模塊 模塊可以認為是一個py文件. 模塊實際上是我們的py文件運行后的名稱空間 導入模塊: 1. 判斷sys.modules中是否已經導入過該模塊 2. 開辟一個內存 3. 在這個內存中執行該py文件 4. 給這個內存起個名字, 一般用的是py文件的名字。返回…

基于Redis實現分布式鎖,避免重復執行定時任務

Spring提供了定時任務的功能,但是在多個實例的集群中,會出現定時任務重復執行多次的情況。 使用Qutaz框架自帶的分布式定時任務可以很好的解決這個問題,但是講道理功能有些過于強大,對于需求不高,乃至可以一定程度上允…

Input Director使用一個鍵盤和鼠標即可控制多臺Windows計算機

The problem is having two or more PC’s and having to go back and forth between workstation. Input Director solves the problem by allowing you to control multiple Windows systems with only one keyboard and mouse on the Master PC. 問題是擁有兩臺或更多臺PC…

viper4android 生效,另一種讓V4a音效在Poweramp上生效的方法

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓本人按照網上的方法進Poweramp設置—音頻—高級選項—直接音量控制—不打勾后 V4a音效沒有生效 我又把V4a音效兼容模式里的正常模式切換成為兼容模式 結果還是不行......后來我郁悶了三天三夜有一天我去了v4a官網論壇看到了admin帖…

[學習筆記]狀壓dp

狀壓 \(dp\) 1、[SDOI2009]Bill的挑戰 \(f[i][j]\) 表示匹配到字符串的第 \(i\) 位狀態為 \(j\) 的方案數 那么方程就很明顯了&#xff0c;每次枚舉第 \(i\) 位的字母 \(alpha\) 然后 \(O(n)\) 判斷就好了 時間復雜度 \(O(26Tlen2^nn)\) \(Code\ Below:\) #include <bits/st…

excel導入csv文件_如何將包含以0開頭的列的CSV文件導入Excel

excel導入csv文件Microsoft Excel will automatically convert data columns into the format that it thinks is best when opening comma-separated data files. For those of us that don’t want our data changed, we can change that behavior. Microsoft Excel將在打開…

MySQL之進化篇

MySQL之實用篇 MySQL之牛刀小試 子查詢是指出現在其他SQL語句內的SELECT子句. 例如: SELECT * FROM t1 WHERE column1 (SELECT column2 FROM t2) 其中 SELECT * FRIN t1 稱為outerQuery SELECT column2 FROM t2 稱為subQuery 注意:子查詢指嵌套在查詢內部,且必須始終出現在圓括…