接口自動化測試(一)

一. 接口和接口測試

1. 接口是啥? ===== 傳遞數據的通道javascript

接口測試:是測試系統組件間接口的一種測試css

接口測試主要包括:同一個系統中模塊與模塊間的接口,另外一個是跨系統平臺與平臺間的對接(內部接口、外部接口)html

 

接口類型:java

• HTTP接口:經過GET或POST來獲取數據,在數據處理上效率比較高node

• Webservice接口:經過soap協議來獲取數據,比起http來講能處理更加複雜的數據類型nginx

二. MVC模式

測試系統結構:MVC模式(Model模型、View視圖、Control控制器)web

         前臺頁面—後臺服務數據交互算法

M:Model,指的是數據庫chrome

V:View,指用戶看到的視圖(呈現頁面)數據庫

C:Control,邏輯層面,用於M和V之間的交互,接口就是在Control層

三. 客戶端和服務器如何創建通訊

四. 瀏覽器中查看接口信息

1. 接口包含的信息:接口地址、請求方法、請求數據、返回數據

2. chrome瀏覽器,在操做頁面的時候,查看與後臺的數據交互

F12—Network—Preserve log—XHR

3. 接口通訊數據類型:JSON、XML

定義通訊協議

五. http通訊

請求行:

請求的協議類型、協議版本、請求方法、資源地址

例:get XXXXXX.html http/1.0

 

消息頭(header):

 

【空行】:

消息體(body):

 

響應數據(response):

  狀態行、消息頭(header)、【空行】、消息體(body)

 

以快遞盒爲例:快遞單—消息頭     快遞盒裏的東西—消息體

六. http通訊—狀態碼

狀態碼由三位數字組成,第一個數字定義了響應的類別,共分爲五種類別:

1xx:指示信息—表示請求已接收,繼續處理

2xx:成功—表示請求已被成功接收、理解、接受

3xx:重定向—要完成請求必須進行更進一步的操做

4xx:客戶端錯誤—請求有語法錯誤或請求沒法實現

5xx:服務器端錯誤—服務器未能實現合法的請求

 

常見狀態碼:

200 OK          客戶端請求成功

400 Bad Request      客戶端請求有語法錯誤,不能被服務器所理解

401 Unauthorized     請求未經受權,這個狀態碼必須和WWW-Authenticate報頭域一塊兒使用

403 Forbidden        服務器收到請求,可是拒絕提供服務

404 Not Found        請求資源不存在,eg:輸入了錯誤的URL

500 Internal Server Error    服務器發生不可預期的錯誤

503 Server Unavailable    服務器當前不能處理客戶端的請求,一段時間後可能恢復正常

七. 接口測試要點

  • 檢查接口返回的數據是否和預期結果一致

  • 檢查接口的容錯性,假如傳遞數據的類型錯誤時是否能夠處理。例如上面的例子是支持整數,傳遞的是小數或字符串呢?

  • 接口參數的邊界值。例如,傳遞的參數足夠大或爲負數時,接口是否能夠正常處理

  • 接口的性能,接口處理數據的時間也是測試的一個方法。牽扯到內部就是算法和代碼的優化   ------響應時間多與少10s,易用性

  • 接口的安全性,若是是外部接口的話,這點尤其重要

測試思惟相同

八. 實例

以課堂派課堂詳情頁面爲例

import requests

url = "https://www.ketangpai.com/StudentsV2/classDetail/courseid/MDBwMDAwMDAwMLOGy9yHz7ev"

params = {"courseid": "MDBwMDAwMDAwMLOGy9yHz7ev"}

res = requests.request("get", url, params=params)

print(res.status_code)
print(res.text)

獲得的結果是,能夠看到並無得到數據(後面將增長cookies)

200
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<title>登陸-簡單好用的互動課堂管理工具</title>
<meta name="keywords" content="課堂派、LMS、PPT互動、課中互動、助教神器、老師神器、做業收發系統、做業批改、在線做業、杜絕做業做弊">
<meta name="description" content="教學改革,互動課堂,你能夠在這裏,組織課中互動,PPT互動,快速發佈做業、在線批閱做業、做業查重、統計成績,隨時與你的學生進行溝通,是老師,教務管理的好幫手。" />
<link href="/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<link href="/Public/Common/js/lib/layer/skin/layer.css?v=2018071402" rel="stylesheet" type="text/css">
<script src="/Public/Common/js/sea.js?v=2018071402" id="seajsnode"></script>
<script src="/Public/Common/js/config/config.js?v=2018071402"></script>

<link href="/Public/Common/css/main.css?v=2018071402" rel="stylesheet" type="text/css" />

<link rel="stylesheet" href="/Public/Home/css/login.css?v=2018071402"/>

</head>
<body>
    <div id="indextop" class="header  header-theme-none">
    <div class="logo fl">
        <a href="/"></a>
    </div>
    <div class="nav fl">
        <a href="/" target="">首頁</a><a href="/index/mobile.html" target="">移動端</a><a href="/index/aplus.html" target="">申請機構版</a><a href="/VipActivity/pay" target="_blank">會員</a><a href="/help/index.html" target="">幫助中心</a>    </div>
    <div class="log-reg fr">
        <a href="/User/login.html" class="login">登陸</a>
        <a href="/User/register.html" class="regist">註冊</a>
    </div>
    </div>    
    <div class="reg-log">
        <div class="login-box" id="wechatLogin" data-domain="www">
            <a href="javascript:;" class="wechatlogin-return"></a>
            <div class="wechat-container" id="login_container">
            </div>
        </div>
        <div class="login-box" id="login">
            <div class="title items">
               <a href="javascript:;" class="active">普通登陸</a>
               <a href="javascript:;">手機短信登陸</a>
               <a href="javascript:;">微信登陸</a>
            </div>
            <div class="padding-cont pt-login">
                <div class="input">
                    <span>帳號:</span>
                    <input type="text" autocomplete="off" name="account" placeholder="郵箱/帳號/手機號">
                </div>
                <div class="input">
                    <span>密碼:</span>
                    <input type="password" autocomplete="off" name="pass">
                </div>
                <div class="opt clearfix">
                    <a href="javascript:;" class="auto-login fl">下次自動登陸</a>
                    <a href="/User/forgetpassword.html" class="forget fr">忘記密碼?</a>
                </div>
                <a href="javascript:;" class="btn-btn">登陸</a>
            </div>
            <div class="padding-cont tel-login hide">
                <div class="input">
                    <span>手機號:</span>
                    <input type="text" autocomplete="off" name="tel">
                </div>
                <div class="yzm-box clearfix">
                    <div class="input fl">
                        <span>驗證碼:</span>
                        <input type="text" autocomplete="off" name="yzm">
                    </div>
                    <a href="javascript:;" class="get-yzm">獲取驗證碼</a>
                </div>
                <div class="opt clearfix">
                    <a href="javascript:;" class="auto-login fl">下次自動登陸</a>
                    <a href="/User/forgetpassword.html" class="forget fr">忘記密碼?</a>
                </div>
                <a href="javascript:;" class="btn-btn">登陸</a>
            </div>
            <a class="qr-sj"></a>
        </div>
        
        
    </div>

    <div class="footer">
    <div class="cWidth">
        <div class="nav clearfix">
            <a href="/index/abouts.html">關於咱們</a>
            <a href="/index/contact.html">聯繫咱們</a>
            <a href="/index/service.html">服務條款</a>
            <a href="/index/older.html" target="_blank">瀏覽器下載</a>
            <a href="/index/updateDynamics">更新動態</a>
        </div>
        <p>Copyright © 2014 ketangpai.com All Rights Reserved. 京ICP備14023276號-4</p>
        <div class="img-box">
            <a target="_blank" href="https://ss.knet.cn/verifyseal.dll?sn=e14051511000002327612183092&comefrom=trust&trustKey=dn&trustValue=ketangpai.com">
                <img src="/Public/Home/img/kx.png">
            </a>
            <a target="_blank" href="http://webscan.360.cn/index/checkwebsite?url=ketangpai.com">
                <img src="/Public/Home/img/360.png">
            </a>
        </div>
    </div>
</div>    <span style="display: none">
<img src='//ketangpai-nginx-log.cn-hangzhou.log.aliyuncs.com/logstores/mainwebhttplog/track_ua.gif?APIVersion=0.6.0&uid=0'/>
</span>
    
<script src="//res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
    <script>
        seajs.use('/Public/Home/js/indextop.js',function(ex){
            ex.loginAll();
        });
    </script>

    <script type="text/javascript">seajs.use('/Public/Home/js/thirdheader.js',function(ex){ex.headerActive();});</script>
</body>
</html>

須要注意的是,request方法的動態參數要以key=value的形式傳入,get請求的key是params,post請求是data,value必須寫成字典的形式

相關文章
相關標籤/搜索